<?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: Jonathan Murray</title>
    <description>The latest articles on DEV Community by Jonathan Murray (@jon_at_backboardio).</description>
    <link>https://dev.to/jon_at_backboardio</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%2F3824580%2Fcbf3ef23-2d0b-4576-90ff-0d46b2119ea8.png</url>
      <title>DEV Community: Jonathan Murray</title>
      <link>https://dev.to/jon_at_backboardio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jon_at_backboardio"/>
    <language>en</language>
    <item>
      <title>Stop building what your customers ask for</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Wed, 22 Apr 2026 13:44:39 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/stop-building-what-your-customers-ask-for-3d16</link>
      <guid>https://dev.to/jon_at_backboardio/stop-building-what-your-customers-ask-for-3d16</guid>
      <description>&lt;p&gt;I was at a conference this week.&lt;/p&gt;

&lt;p&gt;Bunch of stakeholders on stage. Hospital admins, big-name buyers, a couple of policy folks. The message to founders was loud and clear:&lt;/p&gt;

&lt;p&gt;"You need to be consulting us. You need to be adapting your products to our suggestions."&lt;/p&gt;

&lt;p&gt;And honestly? I hated it.&lt;/p&gt;

&lt;p&gt;Not because they were completely wrong. They were half right. They were just shouting the half that was wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's the part that's true
&lt;/h2&gt;

&lt;p&gt;Building in a vacuum is how you ship things nobody uses. Founders, especially technical ones, have a real habit of deciding what the world needs from inside a Notion doc.&lt;/p&gt;

&lt;p&gt;So yes. Talk to users. Ride along. Watch people struggle with your product. All of that.&lt;/p&gt;

&lt;p&gt;The stakeholders aren't crazy for wanting a seat at the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's the part that breaks things
&lt;/h2&gt;

&lt;p&gt;"Listen to us" slowly turns into "do what we say."&lt;/p&gt;

&lt;p&gt;And that's where it gets weird.&lt;/p&gt;

&lt;p&gt;Because every dev on earth has learned this lesson already. It's called a bug report.&lt;/p&gt;

&lt;p&gt;A user says "the login is slow." You dig in. The login isn't slow. They're on hotel wifi and there's no loading spinner, so it &lt;em&gt;feels&lt;/em&gt; frozen. The complaint was real. The proposed fix, "make the login faster," was useless.&lt;/p&gt;

&lt;p&gt;Stakeholder feedback works exactly the same way.&lt;/p&gt;

&lt;p&gt;The pain is the signal. The proposed fix is a guess. Usually a bad one.&lt;/p&gt;

&lt;p&gt;A senior eng who shipped whatever the ticket said would get laughed out of the room. Why do we call a founder who ships whatever the customer asks for "responsive"?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the fix is almost always wrong
&lt;/h2&gt;

&lt;p&gt;Three reasons, no mystery to any of this:&lt;/p&gt;

&lt;p&gt;1) Stakeholders see their slice. Not the whole system. Of course their fix is local.&lt;br&gt;
2) They imagine solutions inside the workflow they already have. Which is often the exact workflow you're trying to change.&lt;br&gt;
3) The thing that would actually solve the problem doesn't exist in their vocabulary yet. That's kind of your job.&lt;/p&gt;

&lt;p&gt;When a cardiologist says "add a button that auto-generates the referral letter," the real signal is &lt;em&gt;referrals are friction&lt;/em&gt;. The button might be the worst possible version of the fix. Maybe the letter shouldn't exist. Maybe the referral shouldn't need a letter. That's a conversation. Not a ticket.&lt;/p&gt;

&lt;h2&gt;
  
  
  The receipt: healthcare AI just ran this experiment for us
&lt;/h2&gt;

&lt;p&gt;For years, stakeholders told the industry they wanted "AI that can pass the medical boards."&lt;/p&gt;

&lt;p&gt;The industry listened. Every model got tuned on USMLE-style questions. Board-exam scores became the benchmark everyone pointed at.&lt;/p&gt;

&lt;p&gt;This month, JAMA Network Open dropped a study across 21 top LLMs (ChatGPT, Claude, Gemini, DeepSeek, Grok). Final-diagnosis accuracy on complete cases? Over 90%.&lt;/p&gt;

&lt;p&gt;Differential diagnosis, the thing an actual doctor does all day? Failed more than 80% of the time.&lt;/p&gt;

&lt;p&gt;The stakeholders asked for the wrong benchmark. Founders shipped it. We now have a generation of models that ace trivia and fold on reasoning.&lt;/p&gt;

&lt;p&gt;The founders who had pushed back, the ones who said &lt;em&gt;we hear you want trustworthy AI, we're not going to chase board scores to prove it&lt;/em&gt;, would look prescient right now. The ones who obeyed built an industry of exam-passers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to actually do it
&lt;/h2&gt;

&lt;p&gt;When a stakeholder hands me a feature request, I try to never put it in the backlog as written. Three questions first:&lt;/p&gt;

&lt;p&gt;1) What were they trying to do when they felt the pain?&lt;br&gt;
2) What's the actual friction, stripped of their proposed fix?&lt;br&gt;
3) What would "solved" feel like, regardless of how it gets built?&lt;/p&gt;

&lt;p&gt;Rule of thumb: if a stakeholder ask fits neatly into a Jira ticket, I haven't translated it yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Back to the conference
&lt;/h2&gt;

&lt;p&gt;I get why the stakeholders were on that stage. They've been burned by founders who ignored them. They want to be heard.&lt;/p&gt;

&lt;p&gt;But "heard" is not the same as "obeyed." And founders who treat customer feedback as a spec instead of a bug report end up building slightly nicer versions of the thing that already isn't working.&lt;/p&gt;

&lt;p&gt;Listen obsessively.&lt;br&gt;
Obey selectively.&lt;br&gt;
And be willing to tell the room that the button they're asking for isn't the thing they actually need.&lt;/p&gt;

&lt;p&gt;That's not arrogance. That's the job.&lt;/p&gt;

&lt;p&gt;What's a piece of stakeholder feedback you took literally and regretted? Or one you translated into something better and it worked?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>customersuccess</category>
      <category>programming</category>
    </item>
    <item>
      <title>🙏🏻🙏🏻🙏🏻🙏🏻💪🏻💪🏻💪🏻💪🏻</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Tue, 21 Apr 2026 18:47:22 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/-1n79</link>
      <guid>https://dev.to/jon_at_backboardio/-1n79</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ranjancse/building-conversational-intelligence-with-backboard-turning-conversations-into-a-living-1mip" class="crayons-story__hidden-navigation-link"&gt;Building Conversational Intelligence with Backboard: Turning Conversations into a Living Intelligence System&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="/ranjancse" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1211275%2F88edf8cd-cc3a-4aac-91b7-934631126085.png" alt="ranjancse profile" class="crayons-avatar__image" width="764" height="750"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ranjancse" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ranjan Dailata
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ranjan Dailata
                
              
              &lt;div id="story-author-preview-content-3528675" 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="/ranjancse" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1211275%2F88edf8cd-cc3a-4aac-91b7-934631126085.png" class="crayons-avatar__image" alt="" width="764" height="750"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ranjan Dailata&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/ranjancse/building-conversational-intelligence-with-backboard-turning-conversations-into-a-living-1mip" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 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/ranjancse/building-conversational-intelligence-with-backboard-turning-conversations-into-a-living-1mip" id="article-link-3528675"&gt;
          Building Conversational Intelligence with Backboard: Turning Conversations into a Living Intelligence System
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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/machinelearning"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;machinelearning&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/nlp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;nlp&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/ranjancse/building-conversational-intelligence-with-backboard-turning-conversations-into-a-living-1mip" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&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;10&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ranjancse/building-conversational-intelligence-with-backboard-turning-conversations-into-a-living-1mip#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add 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;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&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>Two Days, Two Hacks: The Lovable Disclosure and the Pattern Nobody Wants to Talk About</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Mon, 20 Apr 2026 18:14:55 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/two-days-two-hacks-the-lovable-disclosure-and-the-pattern-nobody-wants-to-talk-about-47eh</link>
      <guid>https://dev.to/jon_at_backboardio/two-days-two-hacks-the-lovable-disclosure-and-the-pattern-nobody-wants-to-talk-about-47eh</guid>
      <description>&lt;p&gt;Yesterday I wrote about the Vercel incident and walked through &lt;a href="https://dev.to/jon_at_backboardio/vercel-hack-why-you-need-to-rotate-your-non-sensitive-environment-variables-today-25mh"&gt;why you need to rotate your "non-sensitive" environment variables today&lt;/a&gt;. I thought that would be the week's security post.&lt;/p&gt;

&lt;p&gt;Then I woke up to @weezerOSINT's disclosure about Lovable, and now I am starting to wonder if someone out there is just running an end-to-end test on the mythos of the modern AI-dev stack.&lt;/p&gt;

&lt;p&gt;Two days. Two incidents. Totally different root causes. Same uncomfortable conclusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  What dropped
&lt;/h2&gt;

&lt;p&gt;The short version: security researcher @weezerOSINT made a free Lovable account and was able to read other users' source code, database credentials, AI chat histories, and customer data. Any free account. Every project created before November 2025.&lt;/p&gt;

&lt;p&gt;The screenshot making the rounds shows a response from &lt;code&gt;api.lovable.dev/GetProjectMessagesOutputBody.json&lt;/code&gt; with another user's prompts, AI reasoning traces, task lists, and project IDs sitting there in plain JSON. The bug is Broken Object Level Authorization on Lovable's own platform API, not the more familiar "the generated app shipped without Supabase RLS" story we got in February.&lt;/p&gt;

&lt;p&gt;The part that actually made me set my coffee down: the report was filed through Lovable's bug bounty program 48 days ago, marked as a duplicate of an earlier informative report, and left open. At the time of the disclosure it reportedly still worked.&lt;/p&gt;

&lt;p&gt;Forty. Eight. Days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this one hits different
&lt;/h2&gt;

&lt;p&gt;The February Lovable wave was a story about generated apps. The takeaway was "audit the output" — a thing developers already know how to do, at least in principle. You could imagine a fix: better defaults, RLS on by default in the scaffolds, a linter that yells at you when a table is public.&lt;/p&gt;

&lt;p&gt;This one is a story about the platform itself. The thing you trusted to hold your code, your keys, your customer data — the control plane, not the output — had a missing auth check on a production API endpoint for at least seven weeks after someone told them about it.&lt;/p&gt;

&lt;p&gt;Stack this next to the Vercel situation and a pattern starts to emerge. In the Vercel case, the breach came through a third-party AI tool that had been granted a Workspace OAuth scope that went further than anyone audited. In the Lovable case, it is the platform's own API failing to check "is this caller allowed to see this object." Different failure modes, same underlying theme: the trust boundaries in the AI-assisted-dev stack are drawn with marker, and the marker is washing off in the rain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The vibe-coding angle
&lt;/h2&gt;

&lt;p&gt;Here is the thing that will keep me up tonight. When you vibe-code an app, you do not type &lt;code&gt;process.env.STRIPE_KEY&lt;/code&gt; into a &lt;code&gt;.env&lt;/code&gt; file and move on. You paste the key into the chat so the AI can wire it up. You paste the database URL into the chat to fix a schema bug. You paste a sample customer record into the chat to get the types right.&lt;/p&gt;

&lt;p&gt;Every one of those messages lives in the project's chat history. The disclosed endpoint returned chat histories. So it is not just "your generated app is exposed" — it is "every secret you ever mentioned in a conversation with Lovable is sitting in a JSON response that any free account could fetch."&lt;/p&gt;

&lt;p&gt;If you have built on Lovable, go read your own chat history right now, with the eyes of an attacker. Search for &lt;code&gt;sk-&lt;/code&gt;, &lt;code&gt;postgres://&lt;/code&gt;, &lt;code&gt;Bearer&lt;/code&gt;, anything that looks like a secret. Every match is a key to rotate at the source. Not rename. Rotate. Revoke at the provider and reissue.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I actually think is going on
&lt;/h2&gt;

&lt;p&gt;I do not think someone is literally targeting the AI-dev ecosystem on a two-day schedule for dramatic effect. What I think is happening is that this category of tools grew very fast, shipped a lot of features, pointed their best engineers at the next feature rather than the last one, and is now discovering that "trust boundaries" is a feature that does not show up in a demo.&lt;/p&gt;

&lt;p&gt;The vibe-coding productivity is real. I still use these tools. I will still use them next week. But I am going to stop pretending that a platform saying "secure by default" counts for anything until I see a disclosure track record that backs it up. Forty-eight days on a report with the title "Broken Object Level Authorization on Lovable API leads to unauthorized access to user data and project source code" is, to use a technical term, a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you are shipping on Lovable right now
&lt;/h2&gt;

&lt;p&gt;Short version, because I already wrote the long version yesterday for Vercel and the shape is the same:&lt;/p&gt;

&lt;p&gt;Rotate anything a Lovable project ever touched. Revoke at the upstream provider, not just in the Lovable dashboard. Audit your chat histories for pasted secrets. Turn on RLS on every Supabase table while you are in there. If personal data was exposed, talk to a lawyer today about your disclosure obligations, because "we used an AI app builder" is not going to hold up in front of a regulator.&lt;/p&gt;

&lt;p&gt;Two days. Two hacks. Maybe it is the start of a trend, maybe it is the week from hell, maybe someone really is testing the mythos. Either way, rotate your keys and get back to building.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Source for the disclosure: &lt;a href="https://x.com/weezerosint/status/2046170666131669027" rel="noopener noreferrer"&gt;@weezerOSINT on X&lt;/a&gt;. If you have audited a Lovable project in the last day and found something worth sharing, the comments are open.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>hacked</category>
      <category>discuss</category>
    </item>
    <item>
      <title>My co-founder is just being honest in this post. ;)</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Mon, 20 Apr 2026 18:09:14 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/my-co-founder-is-just-being-honest-in-this-post--1c2h</link>
      <guid>https://dev.to/jon_at_backboardio/my-co-founder-is-just-being-honest-in-this-post--1c2h</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/robimbeault/i-think-therefore-i-am-a-big-pain-in-the-a-3a9m" class="crayons-story__hidden-navigation-link"&gt;I Think Therefore I Am… A Big Pain in the A$$&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="/robimbeault" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818726%2F3d165aef-8612-4c2c-aba9-6dd7754f4f84.jpeg" alt="robimbeault profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/robimbeault" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Robert Imbeault
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Robert Imbeault
                
              
              &lt;div id="story-author-preview-content-3512354" 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="/robimbeault" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818726%2F3d165aef-8612-4c2c-aba9-6dd7754f4f84.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Robert Imbeault&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/robimbeault/i-think-therefore-i-am-a-big-pain-in-the-a-3a9m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 20&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/robimbeault/i-think-therefore-i-am-a-big-pain-in-the-a-3a9m" id="article-link-3512354"&gt;
          I Think Therefore I Am… A Big Pain in the A$$
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/developers"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;developers&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/reasoning"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;reasoning&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/robimbeault/i-think-therefore-i-am-a-big-pain-in-the-a-3a9m" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/robimbeault/i-think-therefore-i-am-a-big-pain-in-the-a-3a9m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; 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;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&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>Anyone working on applications for Recursive Language Models? #discussion #rlm</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Mon, 20 Apr 2026 16:34:38 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/anyone-working-on-applications-for-recursive-language-models-discussion-rlm-2fp0</link>
      <guid>https://dev.to/jon_at_backboardio/anyone-working-on-applications-for-recursive-language-models-discussion-rlm-2fp0</guid>
      <description></description>
      <category>ai</category>
      <category>discuss</category>
      <category>machinelearning</category>
      <category>nlp</category>
    </item>
    <item>
      <title>Vercel Hack: Why You Need to Rotate Your "Non-Sensitive" Environment Variables Today</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Mon, 20 Apr 2026 02:49:24 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/vercel-hack-why-you-need-to-rotate-your-non-sensitive-environment-variables-today-25mh</link>
      <guid>https://dev.to/jon_at_backboardio/vercel-hack-why-you-need-to-rotate-your-non-sensitive-environment-variables-today-25mh</guid>
      <description>&lt;p&gt;If you deploy on Vercel, todays headlines about a security incident might have caused some stress. &lt;/p&gt;

&lt;p&gt;I know firsthand how disruptive supply chain alerts can be. Take a deep breath. &lt;/p&gt;

&lt;p&gt;We are going to separate the noise from the facts and focus on the practical steps you can take today to secure your infrastructure.&lt;/p&gt;

&lt;p&gt;Here is a straightforward guide to protecting your applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Actually Happened
&lt;/h3&gt;

&lt;p&gt;Before we jump into the steps, here are the verified facts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Root Cause:&lt;/strong&gt; Vercel confirmed unauthorized access to internal systems via a compromised third-party AI tool with a Google Workspace OAuth integration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Exposure:&lt;/strong&gt; Environment variables marked as "Sensitive" remained encrypted and protected. However, standard or non-sensitive environment variables were likely exposed to the attacker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Claims:&lt;/strong&gt; A threat actor using the name ShinyHunters claims to be selling Vercel data. Vercel is actively handling the situation and their core services remain online.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because non-sensitive variables were likely exposed, your immediate priority is auditing and rotating your credentials.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step-by-Step Remediation Guide
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Step 1: Audit Your Vercel Environment Variables
&lt;/h4&gt;

&lt;p&gt;Log into your Vercel dashboard and review the environment variables for every active project. You are looking for anything that was not explicitly marked with the "Sensitive" flag. Pay close attention to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database connection strings (Postgres, MongoDB, Redis)&lt;/li&gt;
&lt;li&gt;Third-party API keys (Stripe, SendGrid, OpenAI)&lt;/li&gt;
&lt;li&gt;Authentication secrets and JWT keys&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 2: Revoke Upstream Credentials
&lt;/h4&gt;

&lt;p&gt;If you find a secret stored as a non-sensitive variable, changing it in Vercel is not enough. You must invalidate the compromised key at the source.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the service provider (AWS, Supabase, Stripe, etc.).&lt;/li&gt;
&lt;li&gt;Revoke or delete the old credential entirely.&lt;/li&gt;
&lt;li&gt;Generate a brand new credential.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 3: Update and Flag as Sensitive
&lt;/h4&gt;

&lt;p&gt;Take your newly generated keys and update them in your Vercel projects. When you do this, make absolutely sure you check the box to mark the variable as "Sensitive". This ensures the value is encrypted at rest and hidden from the dashboard UI going forward.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4: Audit Your OAuth Integrations
&lt;/h4&gt;

&lt;p&gt;Since this breach originated from a compromised Workspace app, use this opportunity to clean up your own team integrations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review your GitHub organization settings and remove unrecognized OAuth apps.&lt;/li&gt;
&lt;li&gt;Check your Google Workspace integrations.&lt;/li&gt;
&lt;li&gt;Revoke access for any third-party tools your team no longer uses.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 5: Monitor Your Logs
&lt;/h4&gt;

&lt;p&gt;Keep a close eye on your application and database logs over the next few days. Look for unfamiliar IP addresses accessing your database or unexpected spikes in API usage. These are clear indicators that a leaked key might be in use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Moving Forward
&lt;/h3&gt;

&lt;p&gt;Security incidents are stressful, but handling them methodically is your best defense. By rotating your exposed keys and locking down your variables, you close the door on the immediate risks. Run through the checklist, secure your workspace, and get back to building.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vercel</category>
      <category>security</category>
      <category>hack</category>
    </item>
    <item>
      <title>Love to see the @backboard.io builds coming through! Great job Ranjan</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Sun, 19 Apr 2026 13:56:44 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/love-to-see-the-backboardio-builds-coming-through-great-job-ranjan-844</link>
      <guid>https://dev.to/jon_at_backboardio/love-to-see-the-backboardio-builds-coming-through-great-job-ranjan-844</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ranjancse/building-a-smarter-hiring-engine-ai-recruiter-with-rag-memory-web-search-4fpe" class="crayons-story__hidden-navigation-link"&gt;Building a Smarter Hiring Engine: AI Recruiter with RAG, Memory &amp;amp; Web Search&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="/ranjancse" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1211275%2F88edf8cd-cc3a-4aac-91b7-934631126085.png" alt="ranjancse profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ranjancse" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ranjan Dailata
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ranjan Dailata
                
              
              &lt;div id="story-author-preview-content-3521442" 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="/ranjancse" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1211275%2F88edf8cd-cc3a-4aac-91b7-934631126085.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ranjan Dailata&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/ranjancse/building-a-smarter-hiring-engine-ai-recruiter-with-rag-memory-web-search-4fpe" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 19&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/ranjancse/building-a-smarter-hiring-engine-ai-recruiter-with-rag-memory-web-search-4fpe" id="article-link-3521442"&gt;
          Building a Smarter Hiring Engine: AI Recruiter with RAG, Memory &amp;amp; Web Search
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&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/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&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/ranjancse/building-a-smarter-hiring-engine-ai-recruiter-with-rag-memory-web-search-4fpe" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;10&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ranjancse/building-a-smarter-hiring-engine-ai-recruiter-with-rag-memory-web-search-4fpe#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              4&lt;span class="hidden s:inline"&gt; comments&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;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

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

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>career</category>
      <category>rag</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Embarrassment is cheap. Token spend isn't.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Fri, 17 Apr 2026 20:17:12 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/embarrassment-is-cheap-token-spend-isnt-40b3</link>
      <guid>https://dev.to/jon_at_backboardio/embarrassment-is-cheap-token-spend-isnt-40b3</guid>
      <description>&lt;p&gt;I was in a meeting today.&lt;/p&gt;

&lt;p&gt;The team was walking me through a new feature. I was nodding. I'd used the word "endpoint" correctly twice. I was feeling sharp.&lt;/p&gt;

&lt;p&gt;Too sharp.&lt;/p&gt;

&lt;p&gt;Because my brain... a peaceful place where every feature is shaped like the last feature that worked... decided: oh, this is probably another markdown file.&lt;/p&gt;

&lt;p&gt;It was &lt;strong&gt;&lt;em&gt;not&lt;/em&gt;&lt;/strong&gt; another markdown file.&lt;/p&gt;

&lt;p&gt;It was parallel multi-agent recursive language model creation.&lt;br&gt;
I didn't know that yet. I leaned back. I smiled. I said it.&lt;/p&gt;

&lt;p&gt;"Should be quick, eh?"&lt;/p&gt;

&lt;p&gt;Silence. Then laughter. Not polite laughter. Not boss-is-trying laughter. The full kind. The kind that's been building up for a while.&lt;/p&gt;

&lt;p&gt;And I was fine with it.&lt;/p&gt;

&lt;p&gt;Actually I was more than fine. Embarrassment is an underexplored emotion in founder life. The best version of me is the one who stays in the room after saying something dumb — not the one who stops asking questions to protect the illusion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiyt6u9f9lvxw3vxe028q.jpg" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fiyt6u9f9lvxw3vxe028q.jpg" alt=" " width="800" height="928"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The lead engineer didn't laugh. He looked at me the way doctors look at patients who have just confidently explained that their cold is probably bacterial.&lt;/p&gt;

&lt;p&gt;"It's not quick."&lt;/p&gt;

&lt;p&gt;"Oh. Why?"&lt;/p&gt;

&lt;p&gt;He explained. This was theoretical. There was one research paper on it. One. If we pulled it off, we'd be doing something that hadn't been done before.&lt;/p&gt;

&lt;p&gt;And then I asked the second dumb question. The one the first dumb question unlocks. Something about how much this was going to cost to run.&lt;/p&gt;

&lt;p&gt;The room got quieter in a different way.&lt;/p&gt;

&lt;p&gt;We spent the next twenty minutes on token consumption. Whether the recursion depth could be capped. Which agents actually needed to talk to which. Stuff the team would have gotten to eventually — but not in that meeting, not in that order.&lt;/p&gt;

&lt;p&gt;Here's the thing.&lt;/p&gt;

&lt;p&gt;"Should be quick" was the wrong thing to say. But me-saying-the-wrong-thing-out-loud turned out to be the right thing in the room. If I'd protected my pride, I'd have nodded through a plan that burned a lot of tokens.&lt;/p&gt;

&lt;p&gt;So I'm going to keep doing it. I'm going to keep mistaking research papers for markdown files. I'm going to keep being the guy who says "should be quick" five minutes before the engineers collectively grieve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Embarrassment is cheap. Token spend isn't.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Progress. Velocity.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>founder</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Tackling the unsexy problems has been our goal, so you can build for your customers.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Fri, 17 Apr 2026 01:14:05 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/tackling-the-unsexy-problems-has-been-our-goal-so-you-can-build-for-your-customers-4c5j</link>
      <guid>https://dev.to/jon_at_backboardio/tackling-the-unsexy-problems-has-been-our-goal-so-you-can-build-for-your-customers-4c5j</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" class="crayons-story__hidden-navigation-link"&gt;Why Token Counting in Multi-LLM Systems Is Harder Than You Think&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="/robimbeault" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818726%2F3d165aef-8612-4c2c-aba9-6dd7754f4f84.jpeg" alt="robimbeault profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/robimbeault" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Robert Imbeault
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Robert Imbeault
                
              
              &lt;div id="story-author-preview-content-3510890" 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="/robimbeault" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818726%2F3d165aef-8612-4c2c-aba9-6dd7754f4f84.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Robert Imbeault&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/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 16&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/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" id="article-link-3510890"&gt;
          Why Token Counting in Multi-LLM Systems Is Harder Than You Think
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devtools"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devtools&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&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/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;15&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&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;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&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>This was a big solve for us and it’s a critical item to know as a Dev. Not all tokens are the same.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Thu, 16 Apr 2026 16:02:02 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/this-was-a-big-solve-for-us-and-its-a-critical-item-to-know-as-a-dev-not-all-tokens-are-the-same-5hge</link>
      <guid>https://dev.to/jon_at_backboardio/this-was-a-big-solve-for-us-and-its-a-critical-item-to-know-as-a-dev-not-all-tokens-are-the-same-5hge</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" class="crayons-story__hidden-navigation-link"&gt;Why Token Counting in Multi-LLM Systems Is Harder Than You Think&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="/robimbeault" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818726%2F3d165aef-8612-4c2c-aba9-6dd7754f4f84.jpeg" alt="robimbeault profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/robimbeault" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Robert Imbeault
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Robert Imbeault
                
              
              &lt;div id="story-author-preview-content-3510890" 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="/robimbeault" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818726%2F3d165aef-8612-4c2c-aba9-6dd7754f4f84.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Robert Imbeault&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/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 16&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/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" id="article-link-3510890"&gt;
          Why Token Counting in Multi-LLM Systems Is Harder Than You Think
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devtools"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devtools&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&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/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;15&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&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;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&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>Great piece Shakiran, and we love to see how quickly we can help Devs drive more value in their projects with state &amp; memory! Great job!</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Tue, 14 Apr 2026 18:45:03 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/great-piece-shakiran-and-we-love-to-see-how-quickly-we-can-help-devs-drive-more-value-in-their-4cin</link>
      <guid>https://dev.to/jon_at_backboardio/great-piece-shakiran-and-we-love-to-see-how-quickly-we-can-help-devs-drive-more-value-in-their-4cin</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shakiran_nannyombi_b0bf41/my-ai-was-smart-but-useless-e4n" class="crayons-story__hidden-navigation-link"&gt;My AI Was Smart… But Useless&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="/shakiran_nannyombi_b0bf41" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2877088%2F0ce2d56e-1da7-4984-8208-a8e49bdba656.jpg" alt="shakiran_nannyombi_b0bf41 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shakiran_nannyombi_b0bf41" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shakiran Nannyombi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shakiran Nannyombi
                
              
              &lt;div id="story-author-preview-content-3496934" 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="/shakiran_nannyombi_b0bf41" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2877088%2F0ce2d56e-1da7-4984-8208-a8e49bdba656.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shakiran Nannyombi&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/shakiran_nannyombi_b0bf41/my-ai-was-smart-but-useless-e4n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 14&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/shakiran_nannyombi_b0bf41/my-ai-was-smart-but-useless-e4n" id="article-link-3496934"&gt;
          My AI Was Smart… But Useless
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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/api"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;api&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&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/shakiran_nannyombi_b0bf41/my-ai-was-smart-but-useless-e4n" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;8&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/shakiran_nannyombi_b0bf41/my-ai-was-smart-but-useless-e4n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              3&lt;span class="hidden s:inline"&gt; comments&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;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&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>Your Job Isn't Going Away. But Someone's Fundraise Depends on You Thinking It Is.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Tue, 14 Apr 2026 15:00:56 +0000</pubDate>
      <link>https://dev.to/jon_at_backboardio/your-job-isnt-going-away-but-someones-fundraise-depends-on-you-thinking-it-is-12el</link>
      <guid>https://dev.to/jon_at_backboardio/your-job-isnt-going-away-but-someones-fundraise-depends-on-you-thinking-it-is-12el</guid>
      <description>&lt;p&gt;I've been watching the AI narrative closely. Building with it. Learning in public. Talking to developers, founders, and regular people trying to figure out what's real and what's noise.&lt;/p&gt;

&lt;p&gt;And I keep running into the same story, told the same way, by the same people:&lt;/p&gt;

&lt;p&gt;"AI is going to replace developers. No one will have a job. AGI is around the corner."&lt;/p&gt;

&lt;p&gt;And every single time, the person saying it is trying to raise money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's talk about what's actually happening
&lt;/h2&gt;

&lt;p&gt;OpenAI, Anthropic, and the other big labs are in an arms race. Not just for talent or compute. For capital. We're talking about rounds measured in billions. And to justify those valuations, they need a story that's big enough.&lt;/p&gt;

&lt;p&gt;So what's the biggest story you can tell?&lt;/p&gt;

&lt;p&gt;"Our product replaces high-value white collar workers."&lt;/p&gt;

&lt;p&gt;That's the pitch. Not to you. To investors.&lt;/p&gt;

&lt;p&gt;Here's how the math works in every pitch deck you'll never see: "Our AI replaces ten people making $150K each. That's $1.5M in value per customer. There are 500,000 companies that fit our ICP. That's a $750B TAM."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cue the standing ovation from Sand Hill Road.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpk0w8dg05eha56bssk8.gif" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Ftpk0w8dg05eha56bssk8.gif" alt="Money printer go brrr" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But here's the thing. That math only works if you believe the people disappear.&lt;/p&gt;

&lt;p&gt;And I don't. (Spoiler: neither does 200 years of economic history.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Jevons Paradox
&lt;/h2&gt;

&lt;p&gt;In 1865, an economist named William Stanley Jevons noticed something weird. England had just made steam engines way more efficient at burning coal. Everyone assumed coal usage would go down.&lt;/p&gt;

&lt;p&gt;It went up. Way up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fle30onv5c5afodfurwvo.gif" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fle30onv5c5afodfurwvo.gif" alt="Mind blown" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because when something gets cheaper and more efficient, people don't just do the same amount of it. They do more. Way more. New use cases emerge. New industries form. Demand explodes.&lt;/p&gt;

&lt;p&gt;This isn't some obscure footnote. This is one of the most well-documented patterns in economic history. And it applies directly to what's happening with AI right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  This has happened before. Every single time.
&lt;/h2&gt;

&lt;p&gt;Let me give you a few examples that should feel familiar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ATMs were supposed to kill bank tellers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When ATMs rolled out in the 1970s and 80s, everyone assumed bank tellers were done. A machine that dispenses cash? Pack it up, Karen from the third window.&lt;/p&gt;

&lt;p&gt;What actually happened: the number of bank tellers went &lt;em&gt;up&lt;/em&gt;. ATMs made it cheaper to open bank branches, so banks opened more of them. And those branches needed people. The role shifted from counting cash to advising customers and selling financial products. The job didn't disappear. It evolved and expanded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spreadsheets were supposed to kill accountants.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;VisiCalc and then Excel automated calculations that used to take teams of people days to complete. The fear was real. Why hire an accountant when a spreadsheet does it faster? (Turns out, because someone still needs to explain to the CEO why the spreadsheet says they're broke.)&lt;/p&gt;

&lt;p&gt;What actually happened: the number of accountants exploded. Suddenly every small business could afford to do serious financial analysis. The demand for people who could interpret, strategize, and advise around those numbers grew far beyond what existed before. The tool didn't replace the person. It created a bigger market for the person.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud computing was supposed to kill ops engineers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"You don't need a server room anymore. You don't need sysadmins. Just put it in the cloud." That was the pitch. Somewhere, a sysadmin reading this just felt a chill.&lt;/p&gt;

&lt;p&gt;What actually happened: DevOps became one of the fastest growing roles in tech. The infrastructure got more complex, not less. Someone still needs to architect it, secure it, optimize it, and keep it running at 3am when the pager goes off. The tools got better. The demand for people who understand them got bigger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The internet was supposed to kill retail jobs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;E-commerce was going to make stores irrelevant. No more cashiers. No more salespeople.&lt;/p&gt;

&lt;p&gt;What actually happened: the internet created an entirely new category of retail jobs. Fulfillment centers, logistics, customer experience, digital marketing, content creation, social media management. The U.S. has more retail-adjacent jobs now than before Amazon existed.&lt;/p&gt;

&lt;p&gt;The pattern is always the same. The technology makes something cheaper. Cheaper means more people use it. More usage means more demand. More demand means more jobs. Different jobs, sometimes. But more of them.&lt;/p&gt;

&lt;p&gt;Every. Single. Time.&lt;/p&gt;

&lt;h2&gt;
  
  
  So why does the "jobs are going away" narrative persist?
&lt;/h2&gt;

&lt;p&gt;Because it's useful. Not to you. To the people raising money.&lt;/p&gt;

&lt;p&gt;If you're an AI lab trying to justify a $100B+ valuation, the story has to be enormous. "We help people be a bit more productive" doesn't exactly make a venture capitalist reach for their checkbook. "We replace entire categories of workers" does.&lt;/p&gt;

&lt;p&gt;It's not even that they're lying exactly. It's that the framing is self-serving. When the CEO of an AI company talks about pricing their product based on "the cost of the worker it replaces," that's not an economic insight. That's a sales pitch wearing a lab coat.&lt;/p&gt;

&lt;p&gt;And look, I get it. VCs need big narratives to deploy big checks. Founders need those checks to build. It's how the game works. I'm not mad at it.&lt;/p&gt;

&lt;p&gt;But we don't have to internalize their fundraising deck as our worldview. You wouldn't take career advice from a company whose business model depends on you not having a career.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real opportunity is expansion, not replacement
&lt;/h2&gt;

&lt;p&gt;Here's what I think is actually happening, and it's way more exciting than the doom narrative:&lt;/p&gt;

&lt;p&gt;AI is about to make millions of people capable of things they couldn't do before.&lt;/p&gt;

&lt;p&gt;Not because it replaces their skills. Because it augments them.&lt;/p&gt;

&lt;p&gt;A marketer who couldn't write code can now build internal tools. A small business owner who couldn't afford a legal review can now get a solid first pass. A student who couldn't afford a tutor can now get one-on-one help at 2am. A solo founder who couldn't afford a team of ten can now ship like they have one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmrkolnyrvt4z8os1zlnt.gif" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fmrkolnyrvt4z8os1zlnt.gif" alt="You get superpowers and you get superpowers" width="406" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's not replacement. That's expansion. That's Jevons Paradox playing out in real time.&lt;/p&gt;

&lt;p&gt;And when you expand what's possible, you don't get fewer jobs. You get new ones. Ones that don't have names yet. Ones we can't predict because they'll be created by the very people we're currently telling to be afraid.&lt;/p&gt;

&lt;h2&gt;
  
  
  The self-fulfilling prophecy problem
&lt;/h2&gt;

&lt;p&gt;Here's what actually scares me. Not AI. The narrative around AI.&lt;/p&gt;

&lt;p&gt;Because narratives shape behavior. If every developer believes their job is going away, they stop investing in their craft. Companies freeze hiring because "AI will handle it." Students pivot away from computer science. Organizations delay projects because they're "waiting for AI to get better."&lt;/p&gt;

&lt;p&gt;Congratulations. We just created a recession with vibes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvfy5l0l2jbk8ea25fsx.gif" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fqvfy5l0l2jbk8ea25fsx.gif" alt="This is fine" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then what happens? A slowdown. Not because the technology demanded it. But because we collectively talked ourselves into it.&lt;/p&gt;

&lt;p&gt;That's the real danger. Not that AI takes our jobs. That we give them away because we believed someone's Series C deck.&lt;/p&gt;

&lt;h2&gt;
  
  
  Techno-optimism isn't naive. Defeatism is.
&lt;/h2&gt;

&lt;p&gt;I know "techno-optimism" gets a bad rap sometimes. People think it means ignoring problems or being blindly cheerful about technology.&lt;/p&gt;

&lt;p&gt;That's not what I'm talking about.&lt;/p&gt;

&lt;p&gt;I'm talking about looking at 200 years of economic history and recognizing a pattern. Every major technology wave has created more prosperity, more jobs, and more opportunity than it displaced. Not without pain. Not without transition. But the net effect has always been expansion.&lt;/p&gt;

&lt;p&gt;The printing press didn't kill scribes and create nothing. It created an entire publishing industry, literacy movement, and eventually the modern knowledge economy. (Sorry, scribes. But also, you're welcome, everyone who can read.)&lt;/p&gt;

&lt;p&gt;The automobile didn't just kill horse-related jobs. It created suburbs, supply chains, tourism, and an entire middle class built around manufacturing and infrastructure.&lt;/p&gt;

&lt;p&gt;The internet didn't just kill some jobs. It created millions more. Including "influencer," which honestly no one saw coming.&lt;/p&gt;

&lt;p&gt;AI will be the same. If we let it.&lt;/p&gt;

&lt;p&gt;The key phrase being: if we let it.&lt;/p&gt;

&lt;h2&gt;
  
  
  We create the world we choose to see
&lt;/h2&gt;

&lt;p&gt;This is the part I feel most strongly about.&lt;/p&gt;

&lt;p&gt;Right now, we're at a crossroads. The technology is powerful. The potential is enormous. But the direction it goes depends on the story we tell ourselves about it.&lt;/p&gt;

&lt;p&gt;If we collectively decide that AI is a tool for replacement, that's what it'll become. Companies will use it to cut headcount. Workers will be treated as costs to eliminate. And we'll build a smaller, meaner version of the future.&lt;/p&gt;

&lt;p&gt;But if we collectively decide that AI is a tool for expansion, the math changes completely.&lt;/p&gt;

&lt;p&gt;More people building. More problems being solved. More small businesses competing with big ones. More individuals with capabilities that used to require entire teams. More creativity, more experimentation, more shots on goal.&lt;/p&gt;

&lt;p&gt;That's not wishful thinking. That's what happens every single time we make a powerful capability cheaper and more accessible. The demand curve does what it always does. It goes up.&lt;/p&gt;

&lt;h2&gt;
  
  
  My ask to developers
&lt;/h2&gt;

&lt;p&gt;If you're reading this on dev.to, you're probably someone who builds things. Someone who has influence over how technology gets used and talked about.&lt;/p&gt;

&lt;p&gt;So here's my ask:&lt;/p&gt;

&lt;p&gt;Stop repeating the AI doom talking points as if they're settled science. They're not. They're marketing.&lt;/p&gt;

&lt;p&gt;When someone at your company says "should we even hire for this role, won't AI handle it?" push back. The answer is almost always that AI will make that person more productive, not unnecessary.&lt;/p&gt;

&lt;p&gt;When you see a headline about AGI replacing all developers, ask yourself: who benefits from me believing this? Follow the money. It usually leads to someone with a cap table, a pitch deck, and a very specific number they need you to be scared of.&lt;/p&gt;

&lt;p&gt;And when you're building with AI, build for expansion. Build tools that make more people capable. Build products that create new possibilities instead of just automating old ones.&lt;/p&gt;

&lt;p&gt;Because the builders who define this era won't be the ones who used AI to cut costs. They'll be the ones who used it to create things that didn't exist before.&lt;/p&gt;

&lt;p&gt;The jobs aren't going away. They're going to multiply in ways we can't yet imagine. But only if we choose to believe that and build accordingly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fork4nsaw8eyt94csarmr.gif" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fork4nsaw8eyt94csarmr.gif" alt="Mic drop" width="480" height="342"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;What do you think? Am I being too optimistic, or is the doom narrative really just a fundraising strategy that we've all accidentally internalized? I'd love to hear from people who are actually building with AI every day.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
