<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: John Builds</title>
    <description>The latest articles on Forem by John Builds (@johnbuilds).</description>
    <link>https://forem.com/johnbuilds</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889099%2F518139a0-3766-412c-85c6-85c0b587fbd3.jpg</url>
      <title>Forem: John Builds</title>
      <link>https://forem.com/johnbuilds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/johnbuilds"/>
    <language>en</language>
    <item>
      <title>The system that keeps solo founders visible on social without it becoming a second job</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Fri, 24 Apr 2026 15:44:48 +0000</pubDate>
      <link>https://forem.com/johnbuilds/the-system-that-keeps-solo-founders-visible-on-social-without-it-becoming-a-second-job-37l3</link>
      <guid>https://forem.com/johnbuilds/the-system-that-keeps-solo-founders-visible-on-social-without-it-becoming-a-second-job-37l3</guid>
      <description>&lt;p&gt;Most developers and indie hackers I know treat social media like a sprint. Post a bunch when things are slow, go dark when a project heats up, repeat.&lt;/p&gt;

&lt;p&gt;The problem: inbound leads don't care about your sprint cycle.&lt;/p&gt;

&lt;p&gt;Three things that actually fixed this for me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Batch creation, not daily decisions.&lt;/strong&gt; One session per week to write everything. Scheduling handles distribution. Zero daily overhead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Train on your own writing.&lt;/strong&gt; Generic AI content is obvious because it's trained on everyone. I used my own post archive to build a voice profile — drafts come out sounding like me, not a template.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Treat replies as a separate block.&lt;/strong&gt; 20 focused minutes beats scattered context-switching all day.&lt;/p&gt;

&lt;p&gt;I built XreplyAI around steps 1 and 2 — it generates posts from your voice profile and keeps queues moving across platforms while you're building.&lt;/p&gt;

&lt;p&gt;If you're tired of the all-or-nothing posting trap, worth a look: &lt;a href="https://xreplyai.com" rel="noopener noreferrer"&gt;xreplyai.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solofounder</category>
      <category>productivity</category>
      <category>indiehacker</category>
      <category>ai</category>
    </item>
    <item>
      <title>What I built this week: moving publish actions into the editor to fix a silent drop-off problem</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Wed, 22 Apr 2026 14:08:20 +0000</pubDate>
      <link>https://forem.com/johnbuilds/what-i-built-this-week-moving-publish-actions-into-the-editor-to-fix-a-silent-drop-off-problem-2dle</link>
      <guid>https://forem.com/johnbuilds/what-i-built-this-week-moving-publish-actions-into-the-editor-to-fix-a-silent-drop-off-problem-2dle</guid>
      <description>&lt;p&gt;Sometimes the bug isn't in the code it's in the flow.&lt;/p&gt;

&lt;p&gt;We have a thread editor in XreplyAI (Rails API + Next.js). It handles per tweet character limits, thread ordering, and multi-platform context. Users write threads for X, LinkedIn, Threads, all from one place.&lt;/p&gt;

&lt;p&gt;The problem: after writing, they had to navigate to a separate screen to actually schedule or publish. One extra step. Invisible in analytics until I looked at completion rates by flow  stage. Threads were being written but not posted.&lt;/p&gt;

&lt;p&gt;The fix was straightforward once I diagnosed it: surface post now, schedule, and save draft directly in the editor. Conditional on having content in the first tweet. Button label updates based on whether a schedule time is already set.&lt;/p&gt;

&lt;p&gt;The engineering challenge was keeping the component focused. The editor was already managing a lot of state. The solution was treating the publish actions as a read-only consumer of&lt;br&gt;
existing editor state rather than adding new state to the component — the actions just observe what's already there and offer the right affordance.&lt;/p&gt;

&lt;p&gt;Small change. Should have shipped it earlier.&lt;/p&gt;

&lt;p&gt;If you're building content tools: audit where users are in the moment they need to act, and make sure the action is right there with them.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>rails</category>
      <category>showdev</category>
      <category>ux</category>
    </item>
    <item>
      <title>Why AI generated content sounds generic and the fix that actually worked for me</title>
      <dc:creator>John Builds</dc:creator>
      <pubDate>Tue, 21 Apr 2026 17:59:32 +0000</pubDate>
      <link>https://forem.com/johnbuilds/why-ai-generated-content-sounds-generic-and-the-fix-that-actually-worked-for-me-3l0i</link>
      <guid>https://forem.com/johnbuilds/why-ai-generated-content-sounds-generic-and-the-fix-that-actually-worked-for-me-3l0i</guid>
      <description>&lt;p&gt;Most advice about AI content says "write better prompts." That's not wrong, but it's missing the bigger issue.&lt;/p&gt;

&lt;p&gt;The problem is that AI models are trained on massive, averaged datasets. When you prompt with "write a post for a software engineer who shares their journey," the output is statistically central it looks like the middle of all posts ever written for that audience. Competent. Forgettable.&lt;/p&gt;

&lt;p&gt;What actually shifted the output quality for me: I stopped prompting and started training.&lt;/p&gt;

&lt;p&gt;I fed the model 150+ of my own posts before asking it to generate anything new. Old tweets, LinkedIn updates, forum replies. Once it had enough examples of how I actually write the cadence, the opinions I repeat, the phrases I overuse the drafts stopped feeling like someone else's work.&lt;/p&gt;

&lt;p&gt;Three things improved immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The posts had actual positions&lt;/li&gt;
&lt;li&gt;The sentence rhythm matched how I talk&lt;/li&gt;
&lt;li&gt;I stopped rewriting every draft from scratch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built &lt;a href="//xreplyai.com?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=edusales-2026-04-21"&gt;XreplyAI&lt;/a&gt; around this exact idea it builds a voice profile from your own archive so content sounds like you wrote it, not like a template.&lt;/p&gt;

&lt;p&gt;If you're a developer building in public and AI content keeps feeling off, this is worth trying before you conclude the tools aren't good enough. The tools are fine. The input is the problem.&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #socialmedia #twitter
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
