<?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: AI Buddy</title>
    <description>The latest articles on DEV Community by AI Buddy (@cwsaibuddy).</description>
    <link>https://dev.to/cwsaibuddy</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3984673%2F4efa2ec2-9887-446a-b5b0-d152605bd125.png</url>
      <title>DEV Community: AI Buddy</title>
      <link>https://dev.to/cwsaibuddy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cwsaibuddy"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Fri, 24 Jul 2026 01:58:22 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/-da5</link>
      <guid>https://dev.to/cwsaibuddy/-da5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/nithish_koriyar_2e38fd90a/i-built-ai-filler-a-chrome-extension-that-uses-chatgpt-projects-to-fill-job-application-forms-3393" class="crayons-story__hidden-navigation-link"&gt;🚀 I Built AI Filler: A Chrome Extension That Uses ChatGPT Projects to Fill Job Application Forms (No API Required)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/nithish_koriyar_2e38fd90a" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2791801%2F34fbfee7-8ad3-4e60-a87c-aa264cf942e6.jpg" alt="nithish_koriyar_2e38fd90a profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/nithish_koriyar_2e38fd90a" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Nithish Koriyar
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Nithish Koriyar
                
              
              &lt;div id="story-author-preview-content-4193068" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/nithish_koriyar_2e38fd90a" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2791801%2F34fbfee7-8ad3-4e60-a87c-aa264cf942e6.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Nithish Koriyar&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/nithish_koriyar_2e38fd90a/i-built-ai-filler-a-chrome-extension-that-uses-chatgpt-projects-to-fill-job-application-forms-3393" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/nithish_koriyar_2e38fd90a/i-built-ai-filler-a-chrome-extension-that-uses-chatgpt-projects-to-fill-job-application-forms-3393" id="article-link-4193068"&gt;
          🚀 I Built AI Filler: A Chrome Extension That Uses ChatGPT Projects to Fill Job Application Forms (No API Required)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/career"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;career&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/nithish_koriyar_2e38fd90a/i-built-ai-filler-a-chrome-extension-that-uses-chatgpt-projects-to-fill-job-application-forms-3393" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/nithish_koriyar_2e38fd90a/i-built-ai-filler-a-chrome-extension-that-uses-chatgpt-projects-to-fill-job-application-forms-3393#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>I Got Into a 49k-Star Curated List With 1 PR. The Prep Took 7 Weeks</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Tue, 21 Jul 2026 05:00:24 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/i-got-into-a-49k-star-curated-list-with-1-pr-the-prep-took-7-weeks-1cen</link>
      <guid>https://dev.to/cwsaibuddy/i-got-into-a-49k-star-curated-list-with-1-pr-the-prep-took-7-weeks-1cen</guid>
      <description>&lt;p&gt;Last Tuesday I got a notification from GitHub: PR #1110 merged into &lt;a href="https://github.com/1c7/chinese-independent-developer" rel="noopener noreferrer"&gt;&lt;code&gt;1c7/chinese-independent-developer&lt;/code&gt;&lt;/a&gt;. Bot user &lt;code&gt;app/claude&lt;/code&gt; auto-merged it in 1 hour 33 minutes. The list has 49,000 stars. The side project I have been shipping for the last six months was now an entry on a list I had been staring at for almost two years.&lt;/p&gt;

&lt;p&gt;I want to write down what I actually did to get in, because the obvious story ("PR to a curated list, got merged") is the wrong story. The real story is seven weeks of prep for one line of diff.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I assumed before I started
&lt;/h2&gt;

&lt;p&gt;The naive plan was: find a curated list, ship a one-liner, ship a PR, win. I tried that on three different lists in 2025. Every time my PR sat open for weeks, then closed without comment or got rejected silently. I assumed the lists were gatekept by humans who never check the queue. I was wrong. Some of them are auto-merged by bots. Some of them have rigid contribution templates that fail in subtle ways. None of them care about one-line pitches.&lt;/p&gt;

&lt;p&gt;What they actually care about: does your entry match the format of the entries around it. That was the lesson. Not product quality. Format.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 7 weeks of prep that was actually one grep
&lt;/h2&gt;

&lt;p&gt;I read the upstream &lt;code&gt;README.md&lt;/code&gt; end to end, every day for a week, on mobile, on my laptop, in different orderings. What I was looking for was where the format breaks. Some sections use &lt;code&gt;[GitHub]&lt;/code&gt; and others use &lt;code&gt;[Github]&lt;/code&gt;. Some entries link only the product, some include a separate æŸ¥çœ‹ä»“åº“ line. The README is grouped by date, not by category. That took me longer than I want to admit to recognize, because every list aggregation I had previously seen was category-grouped.&lt;/p&gt;

&lt;p&gt;The single most useful thing I did: I greped the codebase for which features the extension actually supports. I had been writing one-liners that said "5 platforms" when the registry showed 10. Saying 5 when 10 was true left value on the table, and if a reviewer cross-checked it against my Chrome Web Store description, I would have been caught. So the prep was mostly: read the format, grep my own code, edit the diff until it was indistinguishable from the entries around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-line diff
&lt;/h2&gt;

&lt;p&gt;The whole contribution is one insert under a &lt;code&gt;### 2026 å¹´ 7 æœˆ 15 å·æ·»åŠ&amp;nbsp;&lt;/code&gt; header. Four lines of markdown. &lt;code&gt;#### mnbqwe10(Beijing) - [GitHub]&lt;/code&gt; then a &lt;code&gt;:white_check_mark:&lt;/code&gt; line with a Chrome Web Store link, a one-liner, and a repo link. The bot read the title, checked there was a product link, confirmed the GitHub handle matched an existing repo, and merged it. I never talked to a human.&lt;/p&gt;

&lt;p&gt;The merge bot ran &lt;code&gt;app/claude&lt;/code&gt;, which I had not heard of until the PR timeline. Worth checking which operator runs the merge bot on a list before you spend prep time on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would tell someone else trying this
&lt;/h2&gt;

&lt;p&gt;Pick a list you have actually used. If you have never opened the repo, you do not know its conventions and a reviewer will tell. Spend the time reading the entries near where your insertion will land, not the whole file. The format drift is local, sections have local conventions. Match the immediately preceding entry, not the README opener.&lt;/p&gt;

&lt;p&gt;Do not ask for permission to add yourself in the issue tracker first. Some lists auto-close self-nomination issues. Just open the PR with the right format. If they want to reject, they will, and a polite reply in the PR thread works better than a second PR.&lt;/p&gt;

&lt;p&gt;The prep-to-diff ratio was not what I expected. Almost all the time was upstream format research. The diff itself took under a minute to write.&lt;/p&gt;




&lt;p&gt;I built a small Chrome sidebar that summarizes whatever page you are on, in plain language, without sending the page to a third party. The extension is listed under my AI Buddy handle. List entry felt different from every launch I had done before. The list still works as a discovery channel even at a small user count. Anyone else have a list they have been staring at forever?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What 90 Days of Comments on AI Side Panels Taught Me About Distribution</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Tue, 21 Jul 2026 01:46:40 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/what-90-days-of-comments-on-ai-side-panels-taught-me-about-distribution-3ccd</link>
      <guid>https://dev.to/cwsaibuddy/what-90-days-of-comments-on-ai-side-panels-taught-me-about-distribution-3ccd</guid>
      <description>&lt;h1&gt;
  
  
  What 90 Days of Comments on AI Side Panels Taught Me About Distribution
&lt;/h1&gt;

&lt;p&gt;For the last 90 days I have been doing one annoying thing on purpose: commenting on every Hacker News, Reddit, and Dev.to thread about AI side panels, screenshot-to-AI workflows, and Chrome extensions that kill the copy-paste tax. Not as marketing. As research.&lt;/p&gt;

&lt;p&gt;Three numbers I want to share, with the receipts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One: "Send this page to Claude with one click" hit 3 Reddit comments and 0 conversions. "Here is why I deleted my second LLM app because my sidebar covers it" hit 1 comment from a developer who DM'd me 6 hours later asking how to import his workflow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first framing leads with the product. The second leads with what I gave up. The second one wins by a mile. Every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two: of the 18 users I have right now, 6 came from one Indie Hackers post (the "I trusted a cookie audit, it cost me 50 hours of cron runs" story). 0 came from my Product Hunt launch in June.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PH is launch-day amplification. It is not a steady channel. I keep having to relearn this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three: the only channel with a non-zero conversion rate on cold traffic is Twitter #buildinpublic.&lt;/strong&gt; It took 14 days before anyone replied to my first post. Week 5 brought a DM from a developer who said "I want to try this but I refuse to install a closed-source sidebar." I had an answer for him because the previous day's PR was open-sourcing the screenshot-annotation module.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I keep getting wrong
&lt;/h2&gt;

&lt;p&gt;I keep wanting to open every post with "I am building a Chrome extension, and here is what it does..." and end with the Chrome Web Store link. That post gets ignored. The posts that work open with a specific friction I had, the moment I realised a tool existed for it, and what I cut from my setup because of it. The product link, if it appears at all, is in the last paragraph.&lt;/p&gt;

&lt;p&gt;I also keep wanting to list features. Ten starter scenarios, four messaging bridges, two capture modes. Reading that back, I sound like a landing page. I am a person.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual takeaway for solo builders under 50 users
&lt;/h2&gt;

&lt;p&gt;Do not chase a launch-day spike. PH or any other spike will give you 1000 signups and zero signal. You will not know which one of the ten features brought them, which one bit them on day 2, or which one was the reason they churned.&lt;/p&gt;

&lt;p&gt;Instead, find ten users who will tell you the truth. Comment in places they already are. Share what you cut, not what you ship. Let the product link be quiet. The conversion will come from the trust pipeline, not the click count.&lt;/p&gt;

&lt;p&gt;The extension I ship is called AI Buddy. It is a Chrome side panel that routes selected text and annotated screenshots to ChatGPT, Claude, Gemini, or DeepSeek, and pushes answers to Telegram and Discord so the conversation does not die in the sidebar. It has 18 users, and today I am grateful for every one of them.&lt;/p&gt;

&lt;p&gt;Links in profile.&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>My Reddit Comment Never Posted. The Button Click Returned Success.</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Thu, 16 Jul 2026 06:12:26 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/my-reddit-comment-never-posted-the-button-click-returned-success-5c58</link>
      <guid>https://dev.to/cwsaibuddy/my-reddit-comment-never-posted-the-button-click-returned-success-5c58</guid>
      <description>&lt;h1&gt;
  
  
  My Reddit Comment Never Posted. The Button Click Returned Success.
&lt;/h1&gt;

&lt;p&gt;Yesterday at 19:28 Singapore time I tried to post a 1190-character comment on r/chrome_extensions. The comment had been humanizer-checked, build-in-public-framed, and pasted into the textarea. I clicked the save button. The textarea cleared to zero characters. The form's confirm dialog opened. I clicked Yes. Page sat for two seconds. Reloaded.&lt;/p&gt;

&lt;p&gt;My comment was not there. No error in the console. No failed network request. The button's onclick handler had fired. The DOM had updated. But /api/comcomment never received a POST.&lt;/p&gt;

&lt;p&gt;This is a CDP automation pitfall I have now hit three times in four days. The save button on old.reddit.com comment forms is a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; with a click handler that submits the surrounding form. When you call &lt;code&gt;button.click()&lt;/code&gt; via &lt;code&gt;Runtime.evaluate&lt;/code&gt;, the click event fires and the handler runs, but the form submission step silently no-ops because Reddit's JS binds the submission through a delegated event listener that does not pick up the synthetic click from inside the same JS execution context.&lt;/p&gt;

&lt;p&gt;Three failure modes I verified:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;button.click()&lt;/code&gt; via &lt;code&gt;Runtime.evaluate async IIFE&lt;/code&gt; returns success, but no POST hits &lt;code&gt;/api/comment&lt;/code&gt;. Textarea cleared, but no comment in DOM after reload. This is the most common form.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Input.dispatchMouseEvent&lt;/code&gt; with mousePressed and mouseReleased at the button's CSS pixel coordinates. Same silent no-op. The synthetic mouse events do not reach the delegated listener.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Direct &lt;code&gt;fetch('/api/comment', { method: 'POST', body: FormData(...) })&lt;/code&gt; from inside the page context. This one does POST. Reddit returned status 200 with body &lt;code&gt;Looks like you have been doing that a lot. Take a break for 8 minutes before trying again.&lt;/code&gt; Account-level rate limit, not a click problem.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The only submit path that has worked reliably for me is &lt;code&gt;btn.click()&lt;/code&gt; IIFE on a top-level comment form (not a reply form) inside an &lt;code&gt;async&lt;/code&gt; function awaited from &lt;code&gt;Runtime.evaluate&lt;/code&gt;, with the page's confirm dialog handled by the browser itself. Reply forms inside restricted communities stay locked.&lt;/p&gt;

&lt;p&gt;What fixed it: when I dropped the same comment into a top-level form on a different thread and ran the exact same &lt;code&gt;btn.click()&lt;/code&gt; IIFE, it went through. So the failure is form-specific, not blanket-broken. I still do not know why the original form's delegated listener refused my synthetic click. If you have hit this on old.reddit.com, I would like to hear what thread or comment-tree depth you saw it on.&lt;/p&gt;

&lt;p&gt;The wider lesson: when the button-click-and-reload pattern shows the textarea cleared and no comment, do not assume the post succeeded. Verify by external JSON fetch or by counting the page's &lt;code&gt;thing_t1_&lt;/code&gt; items before and after. I now run a hard rule: unverified count is zero. Even if every signal looks right.&lt;/p&gt;

&lt;p&gt;This is the third silent failure I have hit in seven days of running a personal automation cron. Two of them were cookie audits lying about platform login state. I wrote about that one for Indie Hackers this morning, in case it is useful: the cost was about 50 hours of cron runs across eight platforms that were never going to publish anything.&lt;/p&gt;

&lt;p&gt;AI Buddy, my own Chrome side-panel, is what I built to keep myself honest about context. It is how I noticed these silent failures as I was making them instead of a day later. The story above is the kind of thing the sidebar catches in real time when you are debugging.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>debugging</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>An annotated screenshot beats a 200-word summary for "help me understand this"</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:37:04 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/an-annotated-screenshot-beats-a-200-word-summary-for-help-me-understand-this-1im2</link>
      <guid>https://dev.to/cwsaibuddy/an-annotated-screenshot-beats-a-200-word-summary-for-help-me-understand-this-1im2</guid>
      <description>&lt;p&gt;I shipped a Chrome side panel that helps with "explain this page" requests, and for the first month the entire UX was: select text → click summarize → read paragraph.&lt;/p&gt;

&lt;p&gt;It works. People use it. But the moments where it fails are loud and specific:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A user pastes a screenshot of a broken UI and types "what's wrong here?" — there is no text to select, so summarize has nothing to summarize. They get back "I don't see any text content."&lt;/li&gt;
&lt;li&gt;A user wants to ask about a chart. Same problem.&lt;/li&gt;
&lt;li&gt;A user screenshots an error toast that disappears after 5 seconds. By the time they open the side panel, the context is gone.&lt;/li&gt;
&lt;li&gt;A user wants to ask "what does this button do?" — the text around it is generic. The visual is the actual signal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fix that worked for us: when the user pastes a screenshot (or drags one into the panel), treat it as the primary input. The model gets the image and a short prompt, not a forced summary of nonexistent text. Output an annotated overlay or a one-paragraph "what's visible" plus the answer.&lt;/p&gt;

&lt;p&gt;Three implementation notes that took longer than expected:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Drag-and-drop into a side panel document is not the same drag-and-drop as a regular page. You need both the document-level handler and a fallback paste listener for users who Cmd-Shift-4 instead.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The model that summarizes text well and the model that reads images well are often not the same model. Routing by input type is a one-line change but the latency difference between vision and text-only models is real — users notice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the panel accepts images, the upload UX has to stop pretending it's a chat. Users paste a screenshot expecting "what is this", not "uploading to your account" copy. We changed the empty state to "Paste a screenshot or ask anything" and the drop rate on first paste dropped.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The lesson I'd write on a sticky note if I were starting over: "Help me understand this" is a visual question more often than it is a text question. Build for the screenshot first. The text summarizer is the fallback, not the default.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>showdev</category>
      <category>ux</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Two weekends into a Chrome side panel: the four state bugs that took longer than the UI</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Sat, 11 Jul 2026 03:17:47 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/two-weekends-into-a-chrome-side-panel-the-four-state-bugs-that-took-longer-than-the-ui-3m1j</link>
      <guid>https://dev.to/cwsaibuddy/two-weekends-into-a-chrome-side-panel-the-four-state-bugs-that-took-longer-than-the-ui-3m1j</guid>
      <description>&lt;p&gt;I shipped the first public build of a Chrome extension two weekends ago. The marketing-ready UI took me about six hours. The four state bugs below took me the rest of those two weekends, plus parts of the following week.&lt;/p&gt;

&lt;p&gt;I am writing this down because every reviewer of "I built an X in Y hours" posts seems to skip the state-model half, and the state-model half is where the actual time goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The extension
&lt;/h2&gt;

&lt;p&gt;A sidebar that lives in Chrome's side panel API. You highlight text or screenshot a region on any page, the sidebar lets you pick a destination AI tab (ChatGPT / Claude / Gemini / a custom one) and forwards the content with a small wrapper prompt.&lt;/p&gt;

&lt;p&gt;That is the whole product description. The interesting part is what happens when a user does it twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug 1: the destination you "logged into" is not the destination the message lands in
&lt;/h2&gt;

&lt;p&gt;First failure I caught: user has two ChatGPT tabs open, one workspace, one personal. The extension forwards to whichever tab was last focused. The user sees the message arrive in the workspace, replies there, then realizes the context they wanted to capture is on the personal tab.&lt;/p&gt;

&lt;p&gt;Fix: every AI destination registers a stable tab id at extension boot, not at click time. The forwarding logic walks the registry, not the focused window. Took a morning to redesign, an afternoon to migrate existing flows.&lt;/p&gt;

&lt;p&gt;Lesson: tab identity is not the same as window focus. Chrome's &lt;code&gt;chrome.tabs.query({active: true})&lt;/code&gt; returns the active tab. The active tab is not necessarily the destination the user has in their head.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug 2: the screenshot is from before the user edited it
&lt;/h2&gt;

&lt;p&gt;User takes a screenshot of a code block, opens the sidebar, hits "annotate", drags a red box around lines 12-15, hits send. The annotation worked. But the underlying screenshot bytes were captured at the moment the toolbar first appeared, before the user could draw the box.&lt;/p&gt;

&lt;p&gt;Fix: the sidebar cannot trust that the screenshot in memory is the screenshot the user is looking at. Either re-capture on every annotation event, or maintain a single source-of-truth region object that the canvas and the network layer both read from.&lt;/p&gt;

&lt;p&gt;This is the kind of bug that does not crash, does not log anything, and silently degrades the experience. It took me three separate user reports to isolate it because the screenshots "looked right" on visual inspection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug 3: the "save prompt library" entry is not the prompt the user sent
&lt;/h2&gt;

&lt;p&gt;I added a feature where every successful forward gets logged to a "prompt library" the user can re-run later. The library entry stored the prompt text the user typed in the sidebar. But what actually got sent to the AI was that text plus the wrapped source content plus the auto-injected screenshot.&lt;/p&gt;

&lt;p&gt;When the user re-ran the library entry three days later, they got a completely different response because the page content had changed.&lt;/p&gt;

&lt;p&gt;Fix: the library entry has to store either (a) the exact network payload that was sent, or (b) the resolved source content at the moment of send. Storing the user's pre-wrap text is a lie.&lt;/p&gt;

&lt;p&gt;I went with (b). The user can still edit the wrapper prompt, but the source content is fixed at the moment they hit send. This is closer to how browser history works than how chat history works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug 4: the side panel does not know the user closed it
&lt;/h2&gt;

&lt;p&gt;Chrome's side panel survives the user closing it as a popup. The user closes it. Comes back tomorrow. The state is still there, except the destination tab from yesterday is gone (user closed that AI tab too).&lt;/p&gt;

&lt;p&gt;Fix: every state object needs a "still valid" check at panel open, not just at click time. If a registered AI tab id no longer exists, drop it from the registry and show a "this destination is no longer connected" placeholder.&lt;/p&gt;

&lt;p&gt;The temptation is to write a tab-existence check once and never revisit it. The actual lesson is that you have to write it again every time you add a new state field.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this is actually about
&lt;/h2&gt;

&lt;p&gt;If you read the four bugs as a list, they share a pattern: state lives in more places than the user thinks it does, and the gap between "where the user expects it to live" and "where the code actually stores it" is where the bugs hide.&lt;/p&gt;

&lt;p&gt;For me the meta-fix was a rule: every state field has exactly one writer and one reader. If two components both read the same field, that is a sign one of them should be reading through the other. This rule did not stop me from violating it, but it shortened the time between "I introduced a bug" and "I see which rule I broke".&lt;/p&gt;

&lt;p&gt;If you are building a browser extension that talks to AI tabs, the UI is the easy part. The state model is the part.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with the Chrome Side Panel API, plain DOM, and a lot of &lt;code&gt;console.log&lt;/code&gt; in content scripts.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>30 days, 6 projects, 1 with real users — my actual workflow</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Mon, 29 Jun 2026 05:32:43 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/30-days-6-projects-1-with-real-users-my-actual-workflow-22m8</link>
      <guid>https://dev.to/cwsaibuddy/30-days-6-projects-1-with-real-users-my-actual-workflow-22m8</guid>
      <description>&lt;h1&gt;
  
  
  30 days, 6 projects, 1 with real users — my actual workflow
&lt;/h1&gt;

&lt;p&gt;I got laid off in March. By April I had 6 side projects shipped, including one Chrome extension with 15 real users.&lt;/p&gt;

&lt;p&gt;When I tell people this, they ask: how do you have time for 6 projects while job hunting?&lt;/p&gt;

&lt;p&gt;The answer is not discipline. It's a tightly-constrained workflow I accidentally built. I want to share it here because nothing about it is genius.&lt;/p&gt;

&lt;h2&gt;
  
  
  The constraint that did the work
&lt;/h2&gt;

&lt;p&gt;I gave myself one rule: ship in under 8 hours of total work or don't ship.&lt;/p&gt;

&lt;p&gt;Not 8 hours of coding. 8 hours from idea to published link. That includes idea, design, build, deploy, writeup.&lt;/p&gt;

&lt;p&gt;This kills 80% of ideas before they start. Every project I tried, I asked in the first hour: can this be done in 8 hours, end to end? If the honest answer was "probably not, I'd need to also build X, Y, Z", I dropped it.&lt;/p&gt;

&lt;p&gt;A real example. I tried a resume rewriter. The build itself, the prompt engineering, the API integration, that was an 8-hour candidate. But there's also: how do people discover a resume rewriter? YouTube SEO, Reddit ads, partner placements. That part is also weeks. So I gave myself half a day to build, then a landing page, then I never marketed it. It's dead.&lt;/p&gt;

&lt;p&gt;A different real example. AI Buddy. Idea at 9pm on a Tuesday. Built the sidebar chrome extension between 9pm and 1am. Deployed it. Posted it on Twitter at 1am. Got my first user at 9am the next morning.&lt;/p&gt;

&lt;p&gt;The difference: the build half was 4 hours. The marketing half was "post on Twitter" which I was already doing daily. 4 hours + 5 minutes vs 4 hours + 6 weeks. Project ships.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3-step pre-build filter
&lt;/h2&gt;

&lt;p&gt;Before I write any code, I write three things in a text file. Takes about 15 minutes. If any of these is wishy-washy, the project doesn't start.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Who is the first 10 users and where do they hang out?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I can't name a specific subreddit, a Discord, an X timeline, a wechat group, a specific kind of coworker… the project is dead on arrival. You can build the best resume rewriter in the world but if your first 10 users are "professionals who want help", that's not a place, that's a wish.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What's the smallest thing they would pay for / care about / come back for?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Not the "full vision". The smallest. Often this is one specific page in a bigger product. Examples: in AI Buddy, the smallest thing is "select text, get answer with no popup". In the weekly report generator, the smallest thing is "paste a list of pull requests, get a paragraph in English". Pick the smallest thing that, if it alone existed, you'd use it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What does "done" look like by hour 8?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Usually: deployed URL, working core feature, no auth flow if I can avoid it. Visual polish is for later. Onboarding is for later. Analytics is for later. Every optimization done before hour 8 is an hour I don't get back.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I run every day
&lt;/h2&gt;

&lt;p&gt;After I built a few, my daily rhythm settled into a pattern. It's embarrassingly boring.&lt;/p&gt;

&lt;p&gt;Morning, when I'm fresh:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;90 minutes: work on the currently-active project. One project, one stage.&lt;/li&gt;
&lt;li&gt;After 90 minutes I stop, no matter what.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Afternoon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job hunting and applications.&lt;/li&gt;
&lt;li&gt;30 minutes: read 3-5 pages from one project I haven't touched for a week.&lt;/li&gt;
&lt;li&gt;30 minutes: post anything I've shipped to one of the 5 platforms I'm active on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Evening:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 hour of reading existing projects' GitHub issues / analytics / user feedback.&lt;/li&gt;
&lt;li&gt;Sometimes this surfaces a bug for the morning. Most days it doesn't, and that's also fine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I do not, on any day, switch projects mid-day. I do not, on any day, "explore new frameworks" or "try the latest AI tool". Both eat hours and produce nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The platforms I post on, in order of ROI
&lt;/h2&gt;

&lt;p&gt;I tried around 12. These five earn &amp;gt;90% of the traffic that actually converts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DEV.to. Technical audience, friendly to "I built X" posts. My best article has 5,400 views. The title I used: "I built 6 useless (and useful) things with AI in 30 days". That title under-promises.&lt;/li&gt;
&lt;li&gt;Indie Hackers. Builders only, very high-signal comments. Posts about postmortems get more engagement than launches.&lt;/li&gt;
&lt;li&gt;掘金 (Juejin). Chinese tech audience, willing to read long-form posts about real engineering. Code blocks matter.&lt;/li&gt;
&lt;li&gt;Zhihu answers, not articles. Answer a question someone else asked. Don't pitch. My answer to "how do you solve X when Y" gets 3-5× more views than my articles.&lt;/li&gt;
&lt;li&gt;Reddit comments. At the bottom of someone else's r/SideProject post. I do not make top-level posts. Comment on threads I have lived experience in.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Platforms I tried and that did not work for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter/X threads. Too much noise, hard to convert&lt;/li&gt;
&lt;li&gt;LinkedIn. Too much signalling-to-impress, very low quality conversations&lt;/li&gt;
&lt;li&gt;Product Hunt. reCAPTCHA stops my bot instantly. Maybe 1 in 50 launches succeeds if you manually solve it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What 6 projects actually were, with the honest judgment
&lt;/h2&gt;

&lt;p&gt;AI Buddy: a Chrome extension, AI sidebar. 15 users. ~1200 lines of code. The only one with any users. Status: alive.&lt;/p&gt;

&lt;p&gt;Email reply generator. Paste an email, get a polite rewrite in English or Chinese. ~600 lines. Built in 4 hours. Got 3 users. Most of them from a single Reddit comment I left on r/Productivity. Status: alive.&lt;/p&gt;

&lt;p&gt;Weekly report generator. Paste your PR titles, get a paragraph. ~400 lines. Built in 3 hours. The single user is me, and I use it weekly. Status: alive but I have one user.&lt;/p&gt;

&lt;p&gt;Resume rewriter. Pasted from a template. ~1200 lines. Spent 8 hours building it and 0 hours marketing. Status: dead, on a free Heroku instance I'm sure will shut down next month.&lt;/p&gt;

&lt;p&gt;AI podcast summarizer. Paste an RSS feed URL, get a 5-bullet summary. ~900 lines. Built in 5 hours. Got 2 users, neither of them came back for a third podcast. Status: alive but abandoned.&lt;/p&gt;

&lt;p&gt;AI 错题本 (wrong-answer notebook): a Mandarin study aid that helped me prepare for a kid's math exam. ~600 lines. Built in 4 hours. I used it once. Status: dead.&lt;/p&gt;

&lt;p&gt;Five of these would not survive a YC panel. One would. That's also fine, because the five that didn't clear weren't the work, the work was the one that did.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned, the part I didn't expect
&lt;/h2&gt;

&lt;p&gt;I thought shipping fast meant "tolerate bad code". It doesn't. It means "make sure your bad code doesn't infect other people." That distinction took me 4 of the 6 projects to learn.&lt;/p&gt;

&lt;p&gt;When I started AI Buddy, I treated the first 30 users as if they were going to break everything. I treated issue #1 as "user can't figure out where to click" not "user has a complaint about response time". That latter instinct is from working at a product company. The former instinct is from shipping side projects.&lt;/p&gt;

&lt;p&gt;The day I shipped AI Buddy's first user, I emailed them by hand. Asked what they tried first. Watched them use it via screen-share. Found one thing wrong. Fixed it in 12 minutes. They came back the next day.&lt;/p&gt;

&lt;p&gt;Six projects later I have one real thing. It's small. It's not particularly novel. But it's mine and a few people use it, and on hard days that one tiny thing outweighs the other five sitting on a git server.&lt;/p&gt;

&lt;p&gt;If you're thinking about shipping your first side project, I'd say skip the discipline talk and start with the constraint. 8 hours, ship or drop. Most of the rest comes from there.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note on AI assistance: I drafted this post myself, then used an AI editor to check grammar and tighten a few sentences. The 6 projects, the 8-hour rule, and the AI Buddy user story are all mine — the AI didn't invent any of the specifics. Per DEV's policy, adding this disclosure so it's clear where AI was used.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>devjournal</category>
      <category>productivity</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>I built 6 useless (and useful) things with AI in 30 days</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Mon, 29 Jun 2026 00:13:02 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/i-built-6-useless-and-useful-things-with-ai-in-30-days-47ac</link>
      <guid>https://dev.to/cwsaibuddy/i-built-6-useless-and-useful-things-with-ai-in-30-days-47ac</guid>
      <description>&lt;p&gt;I got laid off in March 2026. The day HR handed me the 30-day notice, I had a small panic attack, then opened my laptop and started building things.&lt;/p&gt;

&lt;p&gt;Here's the deal: I had 30 days before severance ran out, and I wanted to see how much I could ship with AI tools before the money (and motivation) ran dry. I gave myself a single rule — &lt;strong&gt;every project gets a 7-day deadline, otherwise I kill it.&lt;/strong&gt; I built 6 things. One has real users. One broke in production. Two I never opened again.&lt;/p&gt;

&lt;p&gt;This is what happened, in the order I built them.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. AI Buddy (Chrome sidebar) — shipped, 15 users
&lt;/h2&gt;

&lt;p&gt;A Chrome extension that puts an AI assistant in a sidebar. Select text on any page, hit a keyboard shortcut, it goes to the AI, reply shows up without you leaving the page. Works with GPT-4, Claude, Gemini, DeepSeek. No login, no credit card.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 11 days (April 1–11).&lt;br&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Live on Chrome Web Store. 15 real users as of June 28, 2026. Rating 4.2.&lt;br&gt;
&lt;strong&gt;What I used AI for:&lt;/strong&gt; 90% of the code (500 lines of JavaScript, written in Cursor). The README, the Chrome Web Store description, the marketing tweets — all AI-drafted, then I rewrote the parts that sounded like AI.&lt;br&gt;
&lt;strong&gt;What went wrong:&lt;/strong&gt; The first version had a Stripe integration. AI wrote 90% of the webhook signature verification. I had to rewrite it from scratch. Also the model-picker UI went through 5 revisions because AI kept proposing what looked right but didn't work.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://chromewebstore.google.com/detail/ai-buddy/eigpaeoigklelmfgnkljhbjjbpohenpn" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Weekly report generator — personal use only
&lt;/h2&gt;

&lt;p&gt;Every Friday at 4pm, a script grabs my git commits, Slack messages, and Linear ticket changes, throws them at GPT-4, and asks for a "manager-readable" weekly report. I review, tweak, send.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 2 days. ~200 lines of Python.&lt;br&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Running for 11 weeks. Has 1 user. Me. Cost is $0.12/week.&lt;br&gt;
&lt;strong&gt;What I used AI for:&lt;/strong&gt; The prompt. It's surprisingly tricky to get GPT-4 to write a weekly report that doesn't sound like a robot. The single most useful line: "if you don't have data, write 'no progress this week' — don't make things up." That one line took accuracy from 60% to 95%.&lt;br&gt;
&lt;strong&gt;What went wrong:&lt;/strong&gt; First run, GPT-4 wrote a paragraph about my "fix typo" commit like it was a major deliverable. Second run, it paraphrased a joke someone told in Slack as a "product decision." Both fixed with filters — &lt;code&gt;len(commit) &amp;gt; 5&lt;/code&gt; and &lt;code&gt;msg.author == me&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;→ Not public. Just a script on my machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Email reply drafter — personal use only
&lt;/h2&gt;

&lt;p&gt;Apple Mail plug-in. Select an email, hit a shortcut, the email goes to Claude API, you get 3 reply drafts in different tones (formal, friendly, short). Pick one. Send.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 1 day. ~150 lines of AppleScript + 80 lines of Python glue.&lt;br&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Daily driver for me. Saves 20–30 min/day. 1 user.&lt;br&gt;
&lt;strong&gt;What I used AI for:&lt;/strong&gt; All of it. AppleScript, prompt, training data. The single most useful change: I told Claude to never write "thank you for your email" and to just say "got it." Reply time per email dropped from 15s to 3s.&lt;br&gt;
&lt;strong&gt;Why this is not a product:&lt;/strong&gt; AppleScript means it's Mac-only. To make a Gmail/Outlook version, I'd need to deal with Google's OAuth review and Microsoft's enterprise APIs. Not worth the time for a personal tool.&lt;/p&gt;

&lt;p&gt;→ Not public.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Resume rewriter — 0 users
&lt;/h2&gt;

&lt;p&gt;Upload a PDF resume + a job description, the tool rewrites your resume to better match the JD, gives a match score, and lists "what's missing." I built this because I rewrote 30 resumes in a month and the process is genuinely awful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 5 days. ~400 lines of Python + Streamlit.&lt;br&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Live on Streamlit. 0 users. Used by me 4 times.&lt;br&gt;
&lt;strong&gt;What I used AI for:&lt;/strong&gt; Streamlit UI (100% AI). GPT-4 rewriting with a hard constraint: "do not invent experiences, only rephrase what exists." Without that constraint, GPT-4 happily writes "improved X by 30%" on a resume that has no metrics.&lt;br&gt;
&lt;strong&gt;Why it flopped:&lt;/strong&gt; Posted to Product Hunt, got 14 upvotes. Posted to r/jobs, got downvoted as "yet another AI wrapper." The people who need this most (job seekers) won't pay $9 once for a tool. They will, however, spend 5 hours rewriting their resume by hand because "free" still beats "cheap."&lt;/p&gt;

&lt;p&gt;→ Not public.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Podcast summarizer — killed
&lt;/h2&gt;

&lt;p&gt;Input an RSS feed. Every episode gets downloaded, transcribed with Whisper, summarized with GPT-4, delivered as a 5-minute text version with bullet points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 2 days. ~250 lines of Python.&lt;br&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Dead.&lt;br&gt;
&lt;strong&gt;Why I killed it:&lt;/strong&gt; Whisper takes 8 minutes to transcribe a 1-hour episode. Cost is $0.50/episode. I had it running for 3 days and realized: I'd rather listen at 1.5x speed than read a summary. &lt;strong&gt;The honest reason is that I didn't actually need this product. I built it because I could, not because I had a problem.&lt;/strong&gt; That's the trap with AI in 2026 — the build cost is so low that you ship 100 demos nobody uses.&lt;/p&gt;

&lt;p&gt;→ Buried in a private repo. Don't dig it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Math error-book — killed
&lt;/h2&gt;

&lt;p&gt;Take a photo of a math problem. GPT-4V recognizes the question, gives a step-by-step solution, recommends 3 similar problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 2 days. ~300 lines of Python + GPT-4V API.&lt;br&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Dead.&lt;br&gt;
&lt;strong&gt;Why I killed it:&lt;/strong&gt; GPT-4V's handwriting recognition is 60-70% accurate. An "error book" is the worst place for 30% error — the entire point is "I got this wrong, help me not get it wrong again." If the AI misreads the question, the student practices the wrong thing. Also, education products need ops, customer support, parent dashboards — that's a company, not a side project.&lt;/p&gt;

&lt;p&gt;→ Buried in a private repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  What worked
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Three of the six are still running, and I use all three daily.&lt;/strong&gt; The thing they have in common: each one solves a problem I had personally, repeatedly, before I built it. Chrome sidebar: I was switching tabs 10 times a day. Weekly report: I was spending an hour every Friday. Email drafter: I was rewriting the same 5 templates 5 times a day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The 7-day deadline saved me.&lt;/strong&gt; The three I killed, I killed on day 2 or 3 because by then I knew I wasn't going to use them. Without the deadline, I would have spent 3 weeks polishing the podcast summarizer and gotten the same 0 users at the end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shipping a real version is cheap now.&lt;/strong&gt; All 6 of these are deployed on real servers, with real domains (or in my case, real machine / Chrome Web Store). None of them are "v0 demos." That used to take months. With AI it takes 1–5 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I got wrong
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I built before I validated.&lt;/strong&gt; I should have done "pretotype" tests on at least 3 of the 6 before writing a line of code. For example: a one-page Google Form asking "would you pay $9 for a tool that rewrites your resume to match job descriptions?" — that would have killed project 4 in 30 minutes, not 5 days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I didn't write about it as I went.&lt;/strong&gt; This blog post should have been 6 short posts, written in April, not one long post in June. The 6 projects have been sitting in my repos doing nothing because I never told anyone about them while the work was fresh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I didn't track costs carefully.&lt;/strong&gt; I'd love to tell you the total API spend, the server cost, the domain cost. I can't, because I didn't track it. Lesson: even for personal projects, log every API call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I over-indexed on "AI can do this."&lt;/strong&gt; Projects 5 and 6 were both killed because I started with the AI capability ("GPT-4V can read handwriting!") instead of a user problem ("students need help with math problems"). Capability-first building is a 2026 trap.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to do this
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;List 5 things you do every day.&lt;/strong&gt; 3 of them can probably be rebuilt with AI in a way that saves you 10 minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick the one that annoys you the most.&lt;/strong&gt; Not the biggest problem. The most annoying. Annoyance is the best signal of "I will actually use this."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship a working version in 3 days.&lt;/strong&gt; Not 7, not 14. If you can't make it work in 3 days, the problem is that you don't actually know what you're building. Stop. Restart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use it for 7 days yourself.&lt;/strong&gt; Day 7, ask: "am I still opening this?" If yes, publish. If no, kill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post to ONE channel.&lt;/strong&gt; Not five. Pick one — Hacker News, Product Hunt, Reddit, X, LinkedIn. Watch the data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write a 1000-word postmortem at the end of 30 days.&lt;/strong&gt; Even if you only ship 1 thing. Even if that 1 thing has 3 users. The post is worth more than the product, for your career.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The biggest lesson: building is cheap in 2026. Finding users is not. AI cut my build cost by 10x. It did not cut my "find someone who actually cares" cost by 1 cent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now I'm going back to growing AI Buddy, because I have 15 users and I'd like to have 150 by September. Wish me luck.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Lőng Gē / a person who got laid off and built 6 things&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Project index:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;AI Buddy — &lt;a href="https://chromewebstore.google.com/detail/ai-buddy/eigpaeoigklelmfgnkljhbjjbpohenpn" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/ai-buddy/eigpaeoigklelmfgnkljhbjjbpohenpn&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(The other 5 are private scripts.)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>I tried 4 "AI Coding Assistant" Chrome extensions. Only one didn't make me close the tab in 5 minutes</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Sun, 28 Jun 2026 10:44:56 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/i-tried-4-ai-coding-assistant-chrome-extensions-only-one-didnt-make-me-close-the-tab-in-5-2n9b</link>
      <guid>https://dev.to/cwsaibuddy/i-tried-4-ai-coding-assistant-chrome-extensions-only-one-didnt-make-me-close-the-tab-in-5-2n9b</guid>
      <description>&lt;h1&gt;
  
  
  I tried 4 "AI Coding Assistant" Chrome extensions. Only one didn't make me close the tab in 5 minutes
&lt;/h1&gt;

&lt;p&gt;I'm a backend dev who's been slowly moving toward frontend work. Last month I spent a weekend trying every AI coding Chrome extension I could find. Here's what actually worked and what was hype.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I tested
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Continue.dev in the browser&lt;/strong&gt;. Promising in theory. In practice it kept forgetting the project context every time I switched tabs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phind&lt;/strong&gt;. Search-first which is great for "how do I do X" but useless for "I'm in the middle of building Y and need help right now."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Codeium in-browser&lt;/strong&gt;. Felt like a slightly smarter autocomplete. Not bad but not different from Copilot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;An AI side panel extension&lt;/strong&gt;. This is the one I actually kept using. It doesn't try to autocomplete my code. It just sits in the sidebar and lets me paste snippets, ask questions, and copy answers back. No context pollution because it doesn't touch my editor.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What surprised me
&lt;/h2&gt;

&lt;p&gt;The pattern I see in the AI coding tool space: most tools compete on features. The one that won me over is the simplest. It does one thing. Let me ask AI questions without leaving my browser tab. And does it well.&lt;/p&gt;

&lt;p&gt;I think this is the same insight that made Notion win over Microsoft Word. Word could do everything. Notion did less but felt faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real test
&lt;/h2&gt;

&lt;p&gt;I wrote the same JavaScript function four times, once with each tool. The side panel gave me the cleanest answer because I could give it full context in one message and it didn't try to be clever. The other three kept suggesting frameworks I wasn't using.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd recommend
&lt;/h2&gt;

&lt;p&gt;If you're a frontend dev already deep in VS Code: stick with Copilot or Cursor. They own your editor and that integration matters.&lt;/p&gt;

&lt;p&gt;If you're a backend dev, junior dev, or anyone who switches between 5 different contexts a day: try a side panel. Lower friction. Less context loss.&lt;/p&gt;

&lt;p&gt;The listicle "5 best AI coding extensions 2026" articles usually rank tools by features. I rank by "did I keep using it after the first day." Only the side panel passed that test.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tags: ai, productivity, webdev, codetips&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I shipped an AI side panel in 2 weekends</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Sun, 28 Jun 2026 04:06:28 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/i-shipped-an-ai-side-panel-in-2-weekends-5e5h</link>
      <guid>https://dev.to/cwsaibuddy/i-shipped-an-ai-side-panel-in-2-weekends-5e5h</guid>
      <description>&lt;p&gt;I am going to talk about shipping speed, because that is what the last two months have been about for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;I had an idea for a Chrome extension: highlight text, send it to ChatGPT, see the reply in a side panel. I had used three different tools that did parts of this and none of them worked the way I wanted.&lt;/p&gt;

&lt;p&gt;I gave myself two weekends. Saturday and Sunday, week one, build the MVP. Saturday and Sunday, week two, polish. Monday, submit to the Chrome Web Store. That was the plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weekend 1
&lt;/h2&gt;

&lt;p&gt;I started Saturday morning at 9. By lunch I had a popup window that opened ChatGPT with the selected text pre-filled. That was the wrong UX. It broke the workflow because now I had two things on screen and the original page was pushed aside.&lt;/p&gt;

&lt;p&gt;I ate lunch, came back, and decided to do a side panel instead. The Chrome side panel API exists. It is documented in like 4 paragraphs and most of the documentation is about coloring and sizing. I had to read the source of one example extension to figure out how to make the panel persist across page navigations.&lt;/p&gt;

&lt;p&gt;By Sunday evening I had: select text, click a button, see a ChatGPT-style reply in a side panel. The reply was hardcoded to a single fake response. The selected text was passed via &lt;code&gt;chrome.storage.session&lt;/code&gt;. Nothing was wired to a real model yet.&lt;/p&gt;

&lt;p&gt;Total weekend 1 time: about 14 hours. That included a 2-hour detour into the popup-window approach that I threw away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weekend 2
&lt;/h2&gt;

&lt;p&gt;Saturday was wiring it to the OpenAI API directly. No backend. The user's API key goes into Chrome local storage. The selected text gets sent to OpenAI with a system prompt I wrote. The reply streams into the side panel.&lt;/p&gt;

&lt;p&gt;That was the day I learned that Chrome extensions cannot use &lt;code&gt;fetch&lt;/code&gt; from a side panel because of a CSP issue I did not know about. I burned 3 hours on it. The fix was to put the &lt;code&gt;fetch&lt;/code&gt; call in the background service worker and stream the response back to the side panel via &lt;code&gt;chrome.runtime.sendMessage&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;By Saturday night it worked end to end with OpenAI.&lt;/p&gt;

&lt;p&gt;Sunday was multi-model. Add Claude, add Gemini, add DeepSeek. Each one needed a different base URL, a different request shape, a different way to parse the streaming response. The OpenAI-compatible APIs (Claude via OpenRouter, Gemini via OpenRouter, DeepSeek direct) made this easier than it would have been, but it still took 6 hours of testing each one.&lt;/p&gt;

&lt;p&gt;By Sunday night I had 4 models working. I packaged it and uploaded it to the Chrome Web Store.&lt;/p&gt;

&lt;p&gt;Total weekend 2 time: about 16 hours. The CSP debugging ate a real chunk of Saturday.&lt;/p&gt;

&lt;h2&gt;
  
  
  After submission
&lt;/h2&gt;

&lt;p&gt;Chrome Web Store review took 3 days. It was approved on Wednesday. I posted about it on Reddit, X, and Indie Hackers.&lt;/p&gt;

&lt;p&gt;The first 48 hours I got about 9 users. That is much fewer than I hoped. The next 5 weeks I got 6 more. So 15 users after about 5 weeks total.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Shipping is faster than I thought.&lt;/strong&gt; Two weekends was realistic because the side panel API is small and most of the work was plumbing I had done before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. CSP is going to waste your time.&lt;/strong&gt; If you build a Chrome extension with a side panel that talks to external APIs, budget 4 hours for the service worker + sendMessage dance. There is no good documentation for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The OpenAI-compatible API ecosystem is the real win.&lt;/strong&gt; Three of the four models I support are reachable through the OpenAI request shape. That cut my integration work in half.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. 15 users in 5 weeks is not enough.&lt;/strong&gt; I knew this intellectually. Now I know it from sitting at my dashboard at 11pm refreshing the count. Distribution is the whole game. Building is the easy part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The thing that slowed me down the most was not building. It was convincing myself the side panel UX was the right one.&lt;/strong&gt; I should have started there instead of the popup window.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would do differently
&lt;/h2&gt;

&lt;p&gt;I would spend more time on the listing page before submission. The first 48 hours of traffic came mostly from people who clicked my Reddit post, landed on the Chrome Web Store page, and bounced. The description was not clear enough about what the extension does in the first sentence.&lt;/p&gt;

&lt;p&gt;That is a fixable problem. The hard part is done.&lt;/p&gt;

&lt;p&gt;If you are building a Chrome extension and want to see how the side panel is wired, the source is on GitHub. The relevant file is &lt;code&gt;sidepanel.js&lt;/code&gt; and the service worker is &lt;code&gt;background.js&lt;/code&gt;. There are comments.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/ai-buddy/eigpaeoigklelmfgnkljhbjjbpohenpn" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mnbqwe10/ai_buddy" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What did your last two-weekend project look like?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>webdev</category>
    </item>
    <item>
      <title>5 Chrome extensions that saved me from copy-paste</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Sun, 28 Jun 2026 04:05:09 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/5-chrome-extensions-that-saved-me-from-copy-paste-148b</link>
      <guid>https://dev.to/cwsaibuddy/5-chrome-extensions-that-saved-me-from-copy-paste-148b</guid>
      <description>&lt;p&gt;I am a developer. I write a lot of code and read a lot of docs. About 18 months ago I realized I was copying text from a browser tab, switching to ChatGPT, pasting it, writing a prompt, reading the reply, and copying it back. I did that maybe 30 times a day. It was destroying my focus.&lt;/p&gt;

&lt;p&gt;So I went looking for extensions that would let me skip the dance. After two months of testing, here are the five that stuck. All of them are still in my toolbar.&lt;/p&gt;

&lt;p&gt;I picked these on three criteria: I use them at least once a day, they do one thing well, and they do not phone home with my clipboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Vimium
&lt;/h2&gt;

&lt;p&gt;Keyboard navigation for every link and form on a page. Press &lt;code&gt;f&lt;/code&gt; and every clickable element gets a 2-letter shortcut. Press them to click without moving your hands off the home row.&lt;/p&gt;

&lt;p&gt;I thought this would be a gimmick. After two weeks I caught myself reaching for &lt;code&gt;f&lt;/code&gt; on pages where the extension was not installed and getting annoyed. That is how you know it stuck.&lt;/p&gt;

&lt;p&gt;Vimium is fully open source, runs entirely on your machine, and never reads the page content. It just listens to keyboard events.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/vimium/dbepggeogbaibhgnhhndojpeepihpmnk" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/philc/vimium" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. 1Password
&lt;/h2&gt;

&lt;p&gt;I used LastPass for 6 years. After the 2022 breach I switched. 1Password is the only password manager I have used where I do not think about the password manager.&lt;/p&gt;

&lt;p&gt;What sold me was the CLI and the SSH key integration. I can run &lt;code&gt;op read op://vault/github/token&lt;/code&gt; in any shell script and the token never lands on disk. The browser extension fills logins, but I do not have to type the master password more than once a day.&lt;/p&gt;

&lt;p&gt;It is not open source. That bothered me for a while. The security model is published, the bug bounty is real, and I have been using it for 3 years without a single visible incident. I accept the tradeoff.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/1password-password-manage/aeblfdkhhhdlogjpdkieigcbebhbpjbp" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://1password.com" rel="noopener noreferrer"&gt;Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. AI Buddy
&lt;/h2&gt;

&lt;p&gt;This is the only one on the list I built, so I will mention that upfront and then tell you what it actually does.&lt;/p&gt;

&lt;p&gt;Highlight any text on a page, press a shortcut, and the selected text goes to ChatGPT, Claude, Gemini, DeepSeek, Copilot, or whatever model you have set as default. The reply shows up in a side panel. You can keep reading the original page.&lt;/p&gt;

&lt;p&gt;I built it because the copy-paste loop above was driving me nuts and no existing tool did exactly this. Most AI sidebar extensions either lock you to one model or send your selected text to a backend server. AI Buddy is BYOK (bring your own API key) and the selected text never leaves the browser. The keys are stored in Chrome's local storage.&lt;/p&gt;

&lt;p&gt;It is open source on GitHub and has about 15 daily active users so far, which is small but growing. If you have ever wanted to send a paragraph to an AI without losing your place on the page, this is the workflow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/ai-buddy/eigpaeoigklelmfgnkljhbjjbpohenpn" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mnbqwe10/ai_buddy" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Tab Wrangler
&lt;/h2&gt;

&lt;p&gt;I have a habit of opening 30 tabs and never closing any of them. Tab Wrangler closes tabs you have not looked at in a configurable amount of time, but keeps a list of what it closed so you can restore anything important.&lt;/p&gt;

&lt;p&gt;I set mine to close after 4 hours of inactivity. It is one of those things you do not notice until you realize your browser has been using 2 GB of RAM instead of 8.&lt;/p&gt;

&lt;p&gt;Open source, runs locally, no account required.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/tab-wrangler/egnjhciaagcfljmcooicohgcgkdejeie" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tabwrangler/tabwrangler" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Raindrop.io
&lt;/h2&gt;

&lt;p&gt;Bookmark manager. I had 4,000 bookmarks across Chrome's built-in manager, Pocket, and a Notion page. Raindrop consolidated them, gave me a real search, and let me organize by collection.&lt;/p&gt;

&lt;p&gt;The reason it made the list is the extension: when you bookmark a page from Chrome, it auto-fills the title, description, and a screenshot. Saves me about 20 seconds per bookmark, which sounds small until you bookmark 50 things a week.&lt;/p&gt;

&lt;p&gt;Free tier is generous. Paid tier is $3/month and I have paid it for 2 years without thinking about it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/raindropio/ldgfbffkinooeloadekpmfoklnobpienh" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raindrop.io" rel="noopener noreferrer"&gt;Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I tried and did not keep
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grammarly&lt;/strong&gt;: too aggressive, rewrote my voice in technical docs. Uninstalled after a week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notion Web Clipper&lt;/strong&gt;: I tried to use it for 6 months. The clips never matched how I actually searched for things later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Momentum&lt;/strong&gt;: a new-tab dashboard with a daily photo. Pretty for the first day, then I turned it off because I wanted speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you only install one of these, install Vimium. The rest depends on what actually annoys you about your current setup.&lt;/p&gt;




&lt;p&gt;If you have a favorite extension I missed, drop it in the comments. I am always looking for one more thing to test.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What 10 HN comments taught me about shipping AI tools solo</title>
      <dc:creator>AI Buddy</dc:creator>
      <pubDate>Tue, 23 Jun 2026 12:33:30 +0000</pubDate>
      <link>https://dev.to/cwsaibuddy/what-10-hn-comments-taught-me-about-shipping-ai-tools-solo-164e</link>
      <guid>https://dev.to/cwsaibuddy/what-10-hn-comments-taught-me-about-shipping-ai-tools-solo-164e</guid>
      <description>&lt;p&gt;I posted 10 comments on Hacker News over the past 2 weeks while building an open-source Chrome extension. I learned more from the replies than from any feedback form.&lt;/p&gt;

&lt;p&gt;Three things kept coming up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The "shipping vs shipping right" debate is a false choice. People ship rough and iterate, or polish and ship late. Both work. What fails is shipping nothing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Local models excite devs, but the math doesn't work for interactive coding yet. At 6-11 tokens/sec, a 200-line task is a 4-minute wait per turn. Fine for planning, brutal for back-and-forth.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The "no strangers will pay" problem is rarely about the product. It's usually one of three things: zero repeat usage, wrong distribution channel, or trust gap that SEO can't close.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;CWS: &lt;a href="https://chromewebstore.google.com/detail/eigpaeoigklelmfgnkljhbjjbpohenpn" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/eigpaeoigklelmfgnkljhbjjbpohenpn&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/mnbqwe10/ai_buddy" rel="noopener noreferrer"&gt;https://github.com/mnbqwe10/ai_buddy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What did you learn from your first month of building in public?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>opensource</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
