<?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>DEV Community: John Builds</title>
    <description>The latest articles on DEV Community by John Builds (@johnbuilds).</description>
    <link>https://dev.to/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>DEV Community: John Builds</title>
      <link>https://dev.to/johnbuilds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johnbuilds"/>
    <language>en</language>
    <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://dev.to/johnbuilds/what-i-built-this-week-moving-publish-actions-into-the-editor-to-fix-a-silent-drop-off-problem-2dle</link>
      <guid>https://dev.to/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://dev.to/johnbuilds/why-ai-generated-content-sounds-generic-and-the-fix-that-actually-worked-for-me-3l0i</link>
      <guid>https://dev.to/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>
