<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Radical Insider]]></title><description><![CDATA[A veteran developer's honest take on building software with AI, the tech industry's BS, and the things that actually matter - from the field and the keyboard.]]></description><link>https://radicalinsider.org</link><image><url>https://substackcdn.com/image/fetch/$s_!38GF!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5eb5c-ca92-414f-aa68-ea932a08ee37_338x338.png</url><title>Radical Insider</title><link>https://radicalinsider.org</link></image><generator>Substack</generator><lastBuildDate>Wed, 24 Jun 2026 16:24:50 GMT</lastBuildDate><atom:link href="https://radicalinsider.org/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Radford Castro]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[radicalinsider@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[radicalinsider@substack.com]]></itunes:email><itunes:name><![CDATA[Radical Insider]]></itunes:name></itunes:owner><itunes:author><![CDATA[Radical Insider]]></itunes:author><googleplay:owner><![CDATA[radicalinsider@substack.com]]></googleplay:owner><googleplay:email><![CDATA[radicalinsider@substack.com]]></googleplay:email><googleplay:author><![CDATA[Radical Insider]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[It Compiled. It Lied.]]></title><description><![CDATA[Part 4 of 5: The BenchBoard Build &#8212; Phantom Runners, Cached Counts, and the Runtime the AI Never Tested]]></description><link>https://radicalinsider.org/p/it-compiled-it-lied</link><guid isPermaLink="false">https://radicalinsider.org/p/it-compiled-it-lied</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Sun, 14 Jun 2026 19:00:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kXeZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Starting With a Question</h2><p>Before I wrote a line of code for BenchBoard, I needed to answer a question I was embarrassed to ask out loud: <em>is this even worth doing?</em></p><p>I&#8217;d been a coach. I&#8217;d been a scorekeeper. I&#8217;d tried every app on the market and found them all wanting in some specific way I could articulate but couldn&#8217;t prove. That&#8217;s a terrible foundation for a project. &#8220;I personally found this frustrating&#8221; is how you build a hobby. It&#8217;s not how you build a product.</p><p>So I did something I&#8217;d never done in forty years of building software. I sat down with ChatGPT and used it like a research analyst.</p><p>I didn&#8217;t ask it to write code. I asked it to help me understand whether coaches, real coaches not just me, were running into the same walls I&#8217;d been running into. Were they actually looking for something that didn&#8217;t exist? Was BenchBoard a solution to a real problem, or was it a solution to a Rad problem?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kXeZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kXeZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!kXeZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!kXeZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!kXeZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kXeZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2525582,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kXeZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!kXeZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!kXeZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!kXeZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7782b58b-f76f-494a-9fd5-f60fbe4baeef_1402x1122.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The answer came back: real problem. Coaches across youth baseball and softball were actively searching for tools that connected team management to game data in a single place, and consistently not finding them. The apps that scored games didn&#8217;t manage rosters. The apps that managed rosters didn&#8217;t score games. The coaches who wanted both were duct-taping two products together and getting the worst of each.</p><p>That&#8217;s when I knew. Not &#8220;maybe this is worth a few weekends.&#8221; <em>Worth building properly.</em></p><p>But there was a twist in the research I didn&#8217;t expect. When I looked at the coaches who said they couldn&#8217;t find a solution that worked, I was in that data. I was one of those coaches. The product I was about to build was the product I&#8217;d been failing to find for years.</p><p>That&#8217;s a strange feeling. Validating your own problem and not realizing, until after the fact, that you were part of the sample.</p><div><hr></div><h2>The Prototype Was Always Mine</h2><p>Here&#8217;s something I don&#8217;t see talked about enough in the &#8220;AI builds apps&#8221; narrative: most people skip the hardest part of building anything, which is knowing what it should <em>look like</em>.</p><p>I have always been fast with HTML. Not fast in the &#8220;I Googled a tutorial&#8221; way. Fast in the way where I can sit down with a blank file and produce a working interface in an afternoon. No framework. No build toolchain. Just a structure, some CSS, and a layout that tells you exactly what belongs where. I&#8217;ve been doing it for a long time. It&#8217;s muscle memory.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IqcO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IqcO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!IqcO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!IqcO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!IqcO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IqcO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2580396,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IqcO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!IqcO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!IqcO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!IqcO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6a8545-1158-447e-b4d6-8e0e24d64096_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So before I wrote a single prompt asking an LLM to generate backend code, I built the screens. Every screen I wanted BenchBoard to have. Exactly the way I wanted them to look. Exact colors, exact layout, exact interactions. I wasn&#8217;t wireframing. I was prototyping. The difference matters: a wireframe is a suggestion. A prototype is a contract.</p><p>Here&#8217;s what I see a lot of non-programmers doing instead. They open a chat, describe their idea in a paragraph, and ask the AI to build them an interface. And it does. It builds something. It looks clean. It looks modern. It looks like every other app that came out of the same prompt with slightly different nouns. What it looks like is the AI&#8217;s best guess at what a solution to your problem <em>could</em> look like, filtered through every design pattern in its training data, averaged into something that is confidently generic.</p><p>The problem isn&#8217;t that the output is ugly. The problem is that the person with the idea has been funneled into a template. They didn&#8217;t design a solution. They accepted a suggestion. And because the interface came out looking polished, they assume it&#8217;s right. They ship it. Coaches open it. Coaches close it.</p><p>I did it differently. I sketched on paper first. Showed a few coaches what I was thinking: rough printouts, hand-drawn layouts, literal paper on a table. I watched their eyes. Where did they look first? What did they reach for? What did they ask about before I explained it? Then I went home and built those screens in HTML. Not because I had to. Because that&#8217;s how you turn a nod from a real user into a real product. The HTML was already the answer before the AI wrote a single function.</p><p>I want to be fair here. There is an enormous amount of work where LLM-generated boilerplate is exactly the right tool. Closing gaps in internal corporate processes, building admin dashboards, generating forms and reports and CRUD screens. That&#8217;s the bread and butter, and Claude handles it better than anything I&#8217;ve ever used. If you need a thing that looks roughly like ten other things that already exist, let the AI build it and move on.</p><p>But if you are building something from scratch, something nobody has built quite this way for users with a specific problem you actually understand, then the interface is not a template problem. It&#8217;s an engineering problem. And the only way to solve an engineering problem correctly is to know what correct looks like before you start building. The AI doesn&#8217;t know. It has never stood behind a chain-link fence watching a coach try to manage nine kids, two parents texting about playing time, and an umpire who disagrees with the count. All at the same time. On a phone with two bars. I know. So I drew the screens first.</p><p>What that shift represents is more important than it sounds. We are no longer fighting syntax. We are no longer reading SolidJS method docs at midnight trying to figure out why a reactive signal isn&#8217;t updating. The AI absorbed all of that. The boring machinery of building software (the boilerplate, the lookups, the wiring) is largely handled. What&#8217;s left is the actual job: the vision, the judgment, the problem to solve. Engineering. The stuff that was always the hard part, and is now the <em>only</em> part.</p><p>Thank God for Claude in those moments. And thank God the judgment still belongs to us.</p><p>Then I used the LLM to make those prototypes functional. Not to design them. I&#8217;d already done that. To wire them up. Fill in the logic behind the buttons. Connect them to data. I handed it a finished face and said: <em>make this breathe.</em></p><p>That inversion (human designs, AI implements) is different from how most people are using these tools. And I think it&#8217;s why my output looked the way I wanted it to look from day one. The AI didn&#8217;t make aesthetic decisions for me because I never gave it the chance.</p><p>There was one other big decision at this stage, and I almost made it the hard way. If I&#8217;m building a web app <em>and</em> a mobile app, do I need three codebases? Web, iOS, Android? That&#8217;s not a question of effort. It&#8217;s a question of sanity. Three separate stacks, three separate build processes, three versions of every bug.</p><p>Then I found <strong>Capacitor</strong>. In short: build your web app, wrap it, ship it as a native app on iOS and Android. One codebase. One set of logic. Three front doors. I made a conscious call that the tradeoffs were worth it: stay on the web, where I was fast, where the AI had plenty of training data, and where I didn&#8217;t have to become a Swift developer while simultaneously building a scorekeeping engine.</p><p>Some decisions only look obvious in retrospect. That one I knew immediately.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>I Almost Exited The Freeway When I Didn&#8217;t Have To</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OUaz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OUaz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!OUaz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!OUaz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!OUaz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OUaz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3088875,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OUaz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!OUaz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!OUaz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!OUaz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0377eba7-1a2b-4fc5-8639-420b6d878c54_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The frontend decision almost broke me.</p><p>I had started the project in <strong>SolidJS</strong>. If you&#8217;re a developer reading this, you know what that means. If you&#8217;re a coach: it&#8217;s like choosing to drive a manual transmission because it&#8217;s more precise than an automatic. Most people don&#8217;t, and the road signs are all written for automatic drivers.</p><p>About six months in, the AI started pushing back. Not explicitly. It would just... struggle. SolidJS has a smaller footprint in training data than React. The AI knew React cold. It knew the React ecosystem, the React patterns, the React error messages and workarounds. And occasionally, frustratingly, it would say essentially: <em>I could do this a lot faster if you were in React.</em></p><p>I almost switched. I had the migration mapped out. I was a few days from pulling the trigger.</p><p>What stopped me was a different realization: the AI wasn&#8217;t failing because SolidJS was wrong. It was failing because it didn&#8217;t have enough documentation to work from in context. The fix wasn&#8217;t to change frameworks. The fix was to feed it the docs. Paste the SolidJS documentation directly into the conversation. Tell it where to look. Give it the training data it was missing, right there in the prompt.</p><p>That worked. And it reminded me of something I now treat as a standing rule: these models don&#8217;t come with a complete map of every library in the world. They have deep coverage of what&#8217;s popular. Outside of that, <em>you</em> are the guide. You hand them the map.</p><p>There&#8217;s also something worth saying about timing. What was true in August 2025 is not what&#8217;s true in April 2026. If I were starting this project today, I&#8217;d probably make different choices. Not because my instincts were wrong, but because the tools have moved that fast. The models are bigger. The context windows are longer. What an AI can hold in its head in one session is different. The decision space in 2026 is not the same one I was standing in when I started.</p><p>I say that not to be wistful. I say it because anyone starting a project today needs to hear it: the advice you read six months ago may already be stale.</p><div><hr></div><h2>The Tools Didn&#8217;t Stand Still Either</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tK_w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tK_w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!tK_w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!tK_w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!tK_w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tK_w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3070052,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tK_w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!tK_w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!tK_w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!tK_w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e23f1d0-4dfc-4c37-a46a-fe499a882270_1254x1254.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Here is something the &#8220;AI is replacing developers&#8221; crowd never talks about: <em>the AI itself kept changing while I was building.</em></p><p>I started with <strong>ChatGPT</strong> (GPT-4-something), using it mostly as a research and thinking tool. Then I moved into <strong>Codex</strong> when I was ready to generate actual code. Codex was the first time I felt like I had a collaborator instead of a search engine. It could read a file and write something that fit into it. That was genuinely new.</p><p>Then came <strong>Cursor</strong>. Cursor had IDE integration, project-wide context, the ability to see your whole codebase at once. I used it hard.</p><p>Then <strong>Windsurf</strong>. I still use it occasionally.</p><p>Then <strong>Claude Code</strong>. And that changed things in a specific way I haven&#8217;t seen documented well anywhere: <em>refactoring</em>. Not generating &#8212; refactoring. Taking something I&#8217;d already built and restructuring it without breaking everything downstream. Other tools I&#8217;d tried would attempt a refactor and introduce three new bugs for every one they fixed. Claude Code could hold the shape of the change in context, understand what was downstream of it, and make the move cleanly. I&#8217;ve never seen another tool do that consistently. It&#8217;s the reason I&#8217;m building in Claude now instead of somewhere else.</p><p>I&#8217;m not telling you this to review products. I&#8217;m telling you because the arc of that journey says something. In less than a year, the stack I&#8217;m building <em>with</em> has changed as dramatically as the stack I&#8217;m building <em>on</em>. The IDEs are updating. The models are updating. Language repositories that were stable for years are getting major commits every few weeks, because the tools that write code have started outpacing the tools that define what the languages can do.</p><p>Agentic development isn&#8217;t coming. It&#8217;s already the normal.</p><p>The question isn&#8217;t whether you&#8217;ll be building with AI. The question is whether you&#8217;ll be the person in the room who knows what to ask it to build, and whether you&#8217;ve been in enough dugouts to know when the answer it gives you is wrong.</p><div><hr></div><h2>The Cache That Lies</h2><p>As of this writing, I&#8217;ve built what I hope is a stable version of the scorekeeping engine. It&#8217;s not pretty, but that&#8217;s okay for now. It&#8217;s a draft I&#8217;m currently testing in real games, and every time I take it onto a field I find something else the AI would not have surfaced on its own. Let me walk you through one of them, because it is the clearest example I have of why both disciplines are needed in the same brain.</p><p></p><p>Softball/baseball mode: on. As you should know, an at-bat has a <em>count</em>. Balls and strikes. Every pitch pushes one or the other number up. Four balls is a walk. Three strikes is out. Everyone in the park is watching that count. And if you still don&#8217;t know &#8212; an at-bat is someone ready to swing at home plate. Go watch an MLB game. I&#8217;ll wait.</p><p>Of course, that <em>count</em> resets to zero when the at-bat ends (hit, out, walk, whatever) and the next batter steps up. Right?</p><p>So how does BenchBoard know what the count is?</p><p>The obvious answer, the one the AI built, is to store two numbers in the database. Call them <code>CurrentBalls</code> and <code>CurrentStrikes</code>. Every time a pitch comes in, bump one of them up by one. The scoreboard reads those two numbers and shows them on the screen. Done.</p><p>When I saw what the AI had done, I asked Claude one question:</p><blockquote><p><em>Doing CurrentBalls and CurrentStrikes wouldn&#8217;t be reliable right? If the transaction doesn&#8217;t work out between the PitchEvent and the GameEvent. My thought is to create a Table view based off PitchEvent and GameEvent. What do you think?</em></p></blockquote><p>Quick normie decoder before we go further. A <strong>PitchEvent</strong> is exactly what it sounds like: a record of a single pitch. Ball. Strike. Foul tip. Every time the pitcher throws, the scorekeeper taps a button and that throw gets its own row in the database. Think of it as a receipt for each individual throw. A <strong>GameEvent</strong> is the bigger thing that ends an at-bat: a hit, a walk, a strikeout, whatever finally settles the matter. If PitchEvents are the individual plays in a poker hand, the GameEvent is when someone finally says &#8220;I&#8217;m in&#8221; or folds. One GameEvent can have anywhere from one to a dozen PitchEvents attached to it.</p><p>Let me translate that for the normies, or more importantly the coaches, if you&#8217;re still with me. All you developers already get it, come back after this.</p><p>Imagine the scoreboard operator at the field. They keep a sticky note on the dashboard with the current count scribbled on it. Every pitch, they cross it out and write the new one. Ball four. Strike one. Three-and-two. The count lives on the sticky note.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lOVm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lOVm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 424w, https://substackcdn.com/image/fetch/$s_!lOVm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 848w, https://substackcdn.com/image/fetch/$s_!lOVm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 1272w, https://substackcdn.com/image/fetch/$s_!lOVm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lOVm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png" width="1315" height="1196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1196,&quot;width&quot;:1315,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2517429,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lOVm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 424w, https://substackcdn.com/image/fetch/$s_!lOVm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 848w, https://substackcdn.com/image/fetch/$s_!lOVm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 1272w, https://substackcdn.com/image/fetch/$s_!lOVm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aec9188-275c-41a5-aa4a-6d8e30d3dcf7_1315x1196.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now imagine the umpire. The umpire doesn&#8217;t need a sticky note. The umpire has a little clicker. One bead for every ball, one bead for every strike. The beads <em>are</em> the count. They can&#8217;t lie. If you want to know the count, you look at the beads.</p><p>Sometimes, in a fast-moving game, the umpire relies on the scorekeeper to keep count anyway. I can&#8217;t tell you how many times I&#8217;ve watched the umpire and the scorekeeper frantically compare notes when someone tries to steal a base, or when a softball pitcher is accused of a circle violation, or when the crowd starts yelling about a missed strike. A lot can happen. And we haven&#8217;t even talked about the myriad of rules that come into play across different divisions of youth baseball and softball.</p><p>When the sticky note and the beads disagree, it&#8217;s a problem. Somebody out there in the stands is counting too, and that can be an embarrassing moment. Or it can be a crucial one in a playoff tournament. The beads and the scorekeeper are only as good as the people paying attention. Ultimately, the scorekeeper is the go-to. Even when the umpire has a clicker, the clicker can be wrong. The scorekeeper&#8217;s app is who everybody ends up trusting.</p><p>Which means the scorekeeper&#8217;s app had better not keep its count on a sticky note.</p><p>The reason I bring all of this up is because the system just <em>needs to work</em>. No one cares what a <strong>cached value</strong> is in a database. But I do. And when that value is wrong, I know the impact of that mishap.</p><p>What I proposed instead was a <strong>database view</strong>. A view is a little window into the data that re-calculates the answer every time you look at it. Don&#8217;t store the count. Don&#8217;t trust anybody&#8217;s sticky note. Look at the actual pitches on record and count them, live, every time someone asks. This is the background crap no user will ever see. This is the stuff vibe coders and product managers will falter over. NO ARTIFICIAL INTELLIGENCE WILL EVER GET YOU HERE. EVEN WITH UNLIMITED TOKENS, POWER, AND CPU, THE AI AGENT WILL NEVER FIGURE THIS OUT ON ITS OWN. ONLY YOU.</p><p>This is when the AI came back with:</p><blockquote><p><em>You&#8217;re right to question it. CurrentBalls/CurrentStrikes on the Game table is essentially a cached/denormalized value that can drift... A database view is the right approach.</em></p></blockquote><p>Here&#8217;s what &#8220;drift&#8221; means in human terms. Over the course of a long enough game, or enough games, the sticky note and the beads disagree. The displayed count is wrong. A pitcher gets pulled one pitch too early. A batter walks who should&#8217;ve struck out. Nobody can explain it. The app works 98% of the time. That 2% is the 2% where coaches stop trusting the app.</p><p>Multiply that across thousands of pitches in hundreds of games in dozens of leagues, and &#8220;most of the time&#8221; isn&#8217;t good enough.</p><p>So we ditched the sticky note. The count is now a live query. Count the pitches, return the answer. One source of truth: the PitchEvent records themselves. If there are three balls and one strike on record and no at-bat outcome yet, the count is 3-1. Period.</p><p>Here&#8217;s what that actually looks like in the database during a real at-bat:</p><pre><code><code>Pitch 1 - "Ball"    GameEventId = NULL   &#8592; pending
Pitch 2 - "Ball"    GameEventId = NULL   &#8592; pending
Pitch 3 - "Strike"  GameEventId = NULL   &#8592; pending
Pitch 4 - "Ball"    GameEventId = NULL   &#8592; pending

Count right now = count the NULLs = 3 balls, 1 strike</code></code></pre><p><code>GameEventId</code> is just a tag that says &#8220;this pitch is part of that at-bat.&#8221; Until somebody hits, walks, strikes out, or does anything that ends the at-bat, every pitch sits in a pending state, tagged NULL, meaning &#8220;no at-bat result yet.&#8221; The database doesn&#8217;t have to remember the count. It just counts the pending pitches.</p><p>Then the batter hits a single. The scorekeeper taps &#8220;Single.&#8221; The database creates one at-bat record (<code>Result = "1B"</code>) and goes back and stamps every one of those pending pitches with that at-bat&#8217;s ID:</p><pre><code><code>Pitch 1 - "Ball"    GameEventId = "event-xyz"   &#8592; resolved
Pitch 2 - "Ball"    GameEventId = "event-xyz"   &#8592; resolved
Pitch 3 - "Strike"  GameEventId = "event-xyz"   &#8592; resolved
Pitch 4 - "Ball"    GameEventId = "event-xyz"   &#8592; resolved
Pitch 5 - "Hit"     GameEventId = "event-xyz"   &#8592; the at-bat outcome (Result = "1B")

Pending pitches = 0   &#8594;   Count is 0-0. Clean slate.</code></code></pre><p>No pending pitches means no count. The next batter steps up and the count is automatically 0-0 without anybody telling the system to reset it. The data model does the work.</p><p>That pattern, every pitch floating in limbo until the at-bat ends and the outcome reaching back to claim them all at once, is the thing that makes the live view correct. And when I asked the AI months later whether we should merge PitchEvent and GameEvent into a single table, it pushed back and told me we shouldn&#8217;t, because <em>&#8220;the GameEventId IS NULL design is load-bearing.&#8221;</em> Its exact words. That one design decision is now keeping a dozen downstream features from falling over.</p><p>But here is the thing I want you to hold onto.</p><p><strong>The AI built the sticky-note version first.</strong> It was faster. Cleaner. It compiled. It passed tests. If I&#8217;d accepted it, it would have shipped. And it would have drifted. And I would have spent months chasing phantom bugs where the displayed count didn&#8217;t match reality, with no idea why.</p><p>The AI didn&#8217;t know to distrust itself.</p><p>I did.</p><p>Not because I&#8217;m smarter. Because I&#8217;ve built systems that store money, systems that store medical records, systems where a cached value disagreeing with the source of truth meant somebody got on a plane with the wrong seat. I&#8217;ve seen that movie. The AI hasn&#8217;t.</p><p>And because I&#8217;ve coached enough innings to know what it looks like when a scoreboard lies to a dugout.</p><div><hr></div><h2>Two Players, Same Number</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hJBr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hJBr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hJBr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hJBr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hJBr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hJBr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2433672,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hJBr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hJBr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hJBr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hJBr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8278d725-eb49-4a19-a431-34b80940def2_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s another that is short and it tells you everything.</p><p>Somewhere in the scorekeeping build, the app has to match up an opposing team&#8217;s players. When you&#8217;re scoring a game against another team, the scorekeeper enters their lineup. Sometimes those players already exist in the system, because they&#8217;ve played your team before. Sometimes they&#8217;re new. You need to know which is which, because if you&#8217;re creating duplicate records for the same kid every game, your data is immediately garbage.</p><p>How do you match?</p><p>The AI&#8217;s instinct was to match by jersey number. That&#8217;s the textbook answer. Jersey numbers are short. They&#8217;re printed on the kid. They&#8217;re unique within a team. In a computer science classroom, that&#8217;s a clean natural identifier and you&#8217;d use it without blinking.</p><p>Here&#8217;s what I told the AI:</p><blockquote><p><em>DO NOT match by jersey number. It is NOT reliable as there could be guest players who have the same number.</em></p></blockquote><p>If you&#8217;ve never been around youth travel baseball or softball, you wouldn&#8217;t know. In travel ball, teams regularly pick up guest players for a single tournament. That guest might wear a number that&#8217;s already on the regular roster, because nobody&#8217;s coordinating. You show up to a tournament and suddenly there are two #12s on the same team for the weekend. The AI&#8217;s &#8220;clean natural identifier&#8221; is, in reality, not unique at all.</p><p>I can count on one hand the number of computer science textbooks that mention &#8220;guest players may have duplicate jersey numbers on a given weekend.&#8221; It is zero. The number is zero.</p><p>That is a domain rule. It lives in the head of somebody who&#8217;s been a coach or a scorekeeper or a parent at enough tournaments to know. It is not in training data. It will never be in training data, because it is too local, too specific, too recent, and too unwritten to show up in anybody&#8217;s blog post.</p><p>And if you match by jersey number, your stats table becomes a fiction within three weekends.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>The Phantom Runners</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o6L9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o6L9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!o6L9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!o6L9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!o6L9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o6L9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3219468,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o6L9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!o6L9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!o6L9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!o6L9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bae6660-a491-4a6f-8bb1-d2ce968f04f1_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m testing End Inning late one night. I tap the button. The bases clear. The inning advances. I look at the scoreboard.</p><p>There are runners on second and third.</p><p>There weren&#8217;t supposed to be runners on second and third. I just ended the inning. The bases should be empty.</p><p>I tap End Inning again. Bases clear. Inning advances. I look again.</p><p>Runners. Same bases. Same phantom runners, appearing out of nowhere every single time I end an inning.</p><p>Here&#8217;s what End Inning actually does under the hood. When you tap it, the app immediately clears the bases on screen (instant visual feedback, the diamond goes empty) and raises a little internal flag that says <em>&#8220;we&#8217;re in the middle of switching innings, don&#8217;t trust anything coming in right now.&#8221;</em> Then it waits 3.5 seconds before officially telling the server the inning is over. That brief pause is intentional. It makes the transition feel smooth rather than janky.</p><p>Think of it like a hotel checkout. You tap &#8220;check out,&#8221; your key card stops working immediately, the room shows as vacant on the front desk screen. But the housekeeper is still in the hallway and might radio in &#8220;Room 214 has towels on the floor&#8221; during those few seconds before the system fully processes your departure. The system needs to know: <em>that message is stale, ignore it.</em></p><p>That&#8217;s the flag. <code>_halfClosing = true</code> means &#8220;we&#8217;re checking out, discard any incoming towel reports.&#8221;</p><p>Now. BenchBoard has a real-time connection called SignalR that acts like a radio tower constantly broadcasting the game state to every connected screen. Parent phones. Scoreboards. The scorekeeper&#8217;s tablet. During that 3.5-second window, the server doesn&#8217;t know the inning is over yet, so it fires off one last broadcast of the current game state: runners on second and third, exactly as they were a moment ago.</p><p>Three different pieces of code receive that broadcast and decide what to do with it. Think of them like three front desk clerks, each responsible for one part of the checkout process. One handles the bases. One handles the ball-strike count. One handles the overall game state. When a broadcast comes in, each clerk processes their piece of it independently.</p><p>The bases clerk checked the flag. <em>&#8220;Oh, we&#8217;re mid-checkout? I&#8217;ll ignore this.&#8221;</em> &#9989; The count clerk checked the flag. <em>&#8220;Mid-checkout? Ignoring.&#8221;</em> &#9989; The game state clerk, the third one, never got the memo. No flag check. So when the broadcast arrived with runners on second and third, that clerk went right ahead and updated the scoreboard. Runners restored. Every time.</p><p>These pieces of code are called <strong>handlers</strong>. Each one listens for a specific type of incoming message and handles it. Think of the checkout guard as a sticky note on each clerk&#8217;s monitor that reads: <em>&#8220;If the guest is mid-checkout, don&#8217;t process anything. Wait.&#8221;</em> The AI had put that sticky note on two of the three monitors and forgotten the third clerk&#8217;s desk entirely. That clerk had no note. No instruction. So when the housekeeper&#8217;s radio message arrived mid-checkout, that clerk processed it like a normal guest request and put the runners back on base.</p><p>It had no way to catch this because it never actually ran the scenario: tapping End Inning in a live game with real runners on base and a real SignalR connection humming in the background. It tested in its head. I tested on a field.</p><p>The fix was four lines of code. One check at the top of the third handler: <em>&#8220;are we mid-transition? Yes? Get out.&#8221;</em></p><p>Four lines. Phantom runners gone.</p><p>What I want you to take from this isn&#8217;t the fix. It&#8217;s the instinct behind finding it. Knowing to look for a missing guard on the <em>third</em> handler, when the first two had it, is not something you Google. It&#8217;s not in any tutorial. It lives in the part of your brain that remembers the last time something blew up during a transition window in a system that moved fast. Every developer who has shipped real-time software has a version of this scar. That scar is what made me look at the third handler. You can&#8217;t prompt your way to a scar.</p><div><hr></div><h2>Building Clean Lanes Before They Collide</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bEVL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bEVL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!bEVL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!bEVL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!bEVL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bEVL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2871870,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bEVL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!bEVL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!bEVL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!bEVL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F853435ca-ad56-4868-9bb1-10817a6e9c0e_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There&#8217;s a category of architecture decision that I think about as &#8220;building for users who haven&#8217;t shown up yet.&#8221; The AI doesn&#8217;t make these decisions. It builds for the user it can see. You have to build for the user who&#8217;s going to show up next spring and break everything.</p><p>Here&#8217;s the one that almost cost me.</p><p>BenchBoard&#8217;s real-time layer, the pipe that pushes pitch counts, base updates, and score changes to every connected screen, was originally scoped to <code>team-{teamId}</code>. When a scorekeeper tapped &#8220;Ball,&#8221; the backend broadcast <code>countUpdated</code> to the <code>team-{teamId}</code> SignalR group. Every client that had joined that group (the scorekeeping screen, the scoreboard on the tablet, the parent&#8217;s phone) received the update.</p><p>Clean design. Logical. The AI built it correctly for the scenario it knew about: one team, one active game.</p><p>Then I thought about the tournament.</p><p>Tournament day. Your team plays Game A in the morning. Same team plays Game B in the afternoon. Two different games, two different opponents, two different scoreboards. One team ID in the database.</p><p>Here&#8217;s the normie version of what was happening. Remember SignalR, our radio tower from the last section? Every device that needs live updates tunes into a channel and listens. Originally, every device connected to Team X was tuned to the same channel: <em>Channel Team-X</em>. Game A broadcasts on Channel Team-X all morning: scores, pitches, base updates, the works. Game B starts in the afternoon. Also on Channel Team-X. The moment Game B goes live, it&#8217;s sharing a channel with everything Game A ever said. Stats bleed. Scores overlap. A parent opening the app for Game B could see Game A&#8217;s final score pre-loaded into Game B&#8217;s scoreboard before a single pitch has been thrown.</p><p>Nobody knows why the numbers are wrong. They just see something wrong. And they stop trusting the app.</p><p>The fix was to give every game its own private channel &#8212; <em>Channel Game-123</em> &#8212; instead of sharing one channel per team. Field 3 talks on its own frequency. Field 5 talks on its own frequency. No crosstalk. Every device tunes in when its game starts and tunes out when the game ends.</p><p>I brought this to the AI:</p><blockquote><p><em>&#8220;SignalR groups are by team ID, not game ID. If one game happens right after the other, which happens in travel sports all the time, counts from the previous game could bleed through.&#8221;</em></p></blockquote><p>The AI&#8217;s response:</p><blockquote><p><em>&#8220;Makes complete sense. Game-scoped groups are the right foundation for that &#8212; any client (TV, parent phone, scorekeeper) just joins </em><code>game-{gameId}</code><em> and gets exactly that game&#8217;s events. No auth required for read-only consumers either.&#8221;</em></p></blockquote><p>Called it architecturally correct. Once I handed it the answer.</p><p>The fix touched four places in the backend where broadcasts were going out, and added two new instructions on the frontend: tune in when a game opens, tune out when it closes. That&#8217;s it.</p><p>Commit message: <em>&#8220;scope all game broadcasts to game-{gameId} groups.&#8221;</em></p><p>But I want to linger on what the AI said after I pointed out the problem: <em>&#8220;No auth required for read-only consumers either.&#8221;</em> That&#8217;s not a small thing. It means a TV scoreboard at the concession stand, or a parent&#8217;s phone on the other side of the fence, can now join <code>game-{gameId}</code> without logging in. They&#8217;re just watching. The scoping decision I made for tournament correctness also opened the door for the read-only scoreboard use case that I&#8217;d been planning to build eventually.</p><p>Those future users, the parents in the parking lot and the scoreboard on the TV behind the dugout, didn&#8217;t exist yet when I made this call. I built for them anyway, not because the AI suggested it, but because I could see the field from both sides of the fence. Forty years of building software. A few years of standing at third base watching parents crane their necks at a phone. You put those two things together and you see problems before they arrive.</p><p>That&#8217;s the job.</p><div><hr></div><h2>The Master Orchestrator</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LBY1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LBY1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LBY1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LBY1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LBY1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LBY1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3565363,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/200519554?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LBY1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LBY1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LBY1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LBY1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8fe082c-8f6b-4e51-907f-d5986e84fbe3_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This one is about knowing when a patch is a lie.</p><p>The inning-by-inning linescore (the little table showing runs scored per inning, the one that looks like the back of a baseball card) was displaying all dashes. The R/H/E totals were correct. The game data was in the database. But the per-inning breakdown showed nothing.</p><p>The fix seemed simple. When the app first loads a live game, it calls out to the server and asks for the current game state: scores, inning, count, everything. That request is called an <strong>endpoint</strong>: think of it as knocking on a specific door and the server handing you a box of data. The door we were knocking on wasn&#8217;t including the per-inning scores in the box. Fix the door, add the scores to the box, unpack them onto the screen. Done. Committed. Working.</p><p>Then, later in the same session, after other work had been done in between, I looked at the scoreboard again.</p><p>All dashes.</p><p>I pasted the raw HTML of the broken table directly into the chat, the actual output the browser was producing, and asked the AI what happened. It searched the code for the function that built the innings array. Found nothing. Its diagnosis: <em>&#8220;These were lost in the refactor.&#8221;</em> It spent several exchanges chasing the wrong trail before finding the real culprit.</p><p>Here&#8217;s the normie version of what was actually happening. Remember the walkie-talkie network? Every time a real-time update comes in over the radio (a new score, a pitch, anything) a handler unpacks it and updates the screen. One of those handlers was responsible for updating the scoreboard&#8217;s game state. And every time it ran, it replaced the entire scoreboard with a fresh copy from the broadcast &#8212; a broadcast that, being a quick live update, didn&#8217;t bother including the full innings history. Why would it? It was just saying &#8220;the score changed.&#8221; But the handler didn&#8217;t know that. It just unpacked the box, saw no innings data, and set the innings to empty. Every. Single. Update.</p><p>The initial load populated the innings correctly. The first live broadcast erased them.</p><p>Fix: tell the handler, <em>&#8220;if the incoming box has no innings data, don&#8217;t touch the innings we already have.&#8221;</em> Sticky note on the monitor. Committed. Working.</p><p>Then the innings disappeared again.</p><p>At this point I stopped asking &#8220;what broke&#8221; and started asking &#8220;why does this keep breaking.&#8221; Here&#8217;s how I put it to the AI:</p><blockquote><p><em>&#8220;Is there an opportunity to centralize our code to serve both the scoreboard inning columns and scorekeeping inning columns, the R/H/E and the B/S/O of both scoreboard and scorekeeping? Just want to make things efficient since it&#8217;s all real-time and reduce any spaghetti code and stay DRY.&#8221;</em></p></blockquote><p>The AI ran a full audit and came back with something I hadn&#8217;t seen laid out before. Two completely separate filing systems, one for the scorekeeping screen and one for the TV scoreboard, both storing the exact same information. Same team names. Same inning scores. Same R/H/E totals. But maintained by two different pieces of code, updated by two different radio handlers, fetched from two different server doors. Every time you fixed a problem in one filing system, the other one could still clobber it.</p><p>Think of it like two assistants both keeping a copy of the same spreadsheet on separate computers, neither one aware the other exists. You update one. The other one hasn&#8217;t heard. Now they disagree. Which one is right? Nobody knows. You can fix the disagreement, but unless you get rid of one of the spreadsheets, it&#8217;ll just disagree again the next time someone updates the wrong copy.</p><p>It also turned out the scorekeeping linescore, the broken inning table, was a hand-built duplicate of a component that already existed and was working perfectly on the TV scoreboard. Two versions of the same table, written separately, living separate lives, drifting apart.</p><p>The AI laid out the fix in three steps. Do two now: swap the duplicate table for the shared one, fix the team abbreviation that was showing as <code>"HME"</code> instead of the real team name. Defer the third (consolidating the two filing systems into one) because it was, in the AI&#8217;s exact words: <em>&#8220;meaningful structural risk&#8221;</em> that <em>&#8220;touches SignalR wiring in both hooks.&#8221;</em></p><p>My response:</p><blockquote><p><em>&#8220;Yes, let&#8217;s do #1 and #2 &#8212; but we HAVE to do #3 also. It&#8217;ll only get worse and gain complexity if we don&#8217;t fix it after #1 and #2.&#8221;</em></p></blockquote><p>The AI did all three. One pass. Clean build. Its closing summary:</p><blockquote><p><em>&#8220;Data flow is now: one door &#8594; one unpacker &#8594; one filing system &#8594; both screens read from the same place.&#8221;</em></p></blockquote><p>One path. One source of truth. The innings have not gone blank since.</p><div><hr></div><p>Now let me tell you what &#8220;meaningful structural risk&#8221; actually meant. It meant the AI counted the number of files it would have to touch, pattern-matched that to &#8220;big change, high chance of breakage,&#8221; and recommended waiting. That&#8217;s a reasonable call if you&#8217;re working with someone who doesn&#8217;t understand what those files do or how they connect.</p><p>I wrote those files. I know exactly how they connect.</p><p>And more importantly: I knew what deferring cost. Every session I left those two filing systems in place was another session where someone could update the wrong copy and the innings would go blank again. Not because the patches were bad. They were correct. But a correct patch on top of a broken foundation is just a nicer-looking problem. It&#8217;s fixing the leak with a bucket instead of the pipe.</p><p>A vibe coder reads &#8220;meaningful structural risk&#8221; and defers. They&#8217;ve never been in a system long enough to watch deferred fixes pile up. I have. I know what that bill looks like when it finally comes due.</p><p>This is what I mean when I say the fundamentals still matter. Not typing. Not syntax. The thing behind the syntax: the principle that a system with two sources of truth will eventually lie to you, that two components doing the same job will eventually diverge, that the time to close a complexity gap is before the next feature lands on top of it. Those principles were true before AI wrote a line of code and they&#8217;ll be true when the models are ten times better than they are today.</p><p>You can prompt your way to working software. You cannot prompt your way to the judgment that knows when working software is a trap.</p><div><hr></div><h2>Coming Up in Part 5</h2><p>Part 5 brings it home. What I&#8217;ve changed about how I work with AI tools after building all of this. What I&#8217;ve stopped doing. What I&#8217;ve started doing. And the single question I now ask before I accept any output, from any model on any task, that has saved me more hours than I can count.</p><p>Thanks for reading. If this series has landed for you, subscribe. Part 5 is the one where it all comes together.</p><div class="community-chat" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/pub/radicalinsider/chat?utm_source=chat_embed&quot;,&quot;subdomain&quot;:&quot;radicalinsider&quot;,&quot;pub&quot;:{&quot;id&quot;:3281178,&quot;name&quot;:&quot;Radical Insider&quot;,&quot;author_name&quot;:&quot;Radical Insider&quot;,&quot;author_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!QQrY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b517f-dfc0-4e69-b836-597617083459_1024x1024.png&quot;}}" data-component-name="CommunityChatRenderPlaceholder"></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Suit Doesn't Make You Tony Stark]]></title><description><![CDATA[AI handed every developer an Iron Man suit. It did not hand them Tony Stark's brain. That gap is the whole story, and it's where the vibe coders have to grow up.]]></description><link>https://radicalinsider.org/p/the-suit-doesnt-make-you-tony-stark</link><guid isPermaLink="false">https://radicalinsider.org/p/the-suit-doesnt-make-you-tony-stark</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Fri, 12 Jun 2026 01:37:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AVFu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AVFu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AVFu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!AVFu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!AVFu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!AVFu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AVFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AVFu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!AVFu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!AVFu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!AVFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7f9a5-22d0-45b5-96be-fe4df6aac2b9_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">iron man in sketch</figcaption></figure></div><p>I was building a substitution feature into BenchBoard the other night. Simple idea on paper: a coach drags a kid into a &#8220;sub&#8221; slot, and the app tracks who&#8217;s covering for whom. The kind of thing that sounds like an afternoon and turns into a week.</p><p>At some point I hit a question I couldn&#8217;t punt on. What happens when a coach drags a player onto a sub slot that&#8217;s already occupied? Somebody&#8217;s already sitting there. Kick them out automatically, or stop the coach and make them clear it first?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I asked the model. It gave me a clean, confident answer: swap them. Bump the existing sub out to the reserve, drop the new player in, done. One gesture, no friction. Honestly a good answer. I&#8217;d endorsed the same approach myself ten minutes earlier.</p><p>Then I thought about it from the field and pushed back. Here&#8217;s the actual exchange. Watch what happens.</p><p></p><blockquote><p><strong>Me:</strong> When a starter (or reserve) gets dragged over an existing sub slot, it shows a circle strikethrough icon. [...] OnDrop, we could also fire a popup [...] Then the user just needs to drag that player again. [...] This feels like a much better UX. Thoughts?</p><p><strong>Claude:</strong> This is better than the swap, and I&#8217;ll tell you why I&#8217;m now against the swap I previously endorsed: bumping Mariano to Reserve as a side effect of dropping Will is an invisible data change. The user&#8217;s eye is on Will; Mariano teleports while they&#8217;re not looking, and ten minutes later it&#8217;s &#8220;wait, why is Mariano in Reserve?&#8221; [...] for a lineup tool surprises are the expensive thing.</p></blockquote><p>Read that again. It reversed itself instantly. Not grudgingly. It wrote me a genuinely good argument for why my way was better than the way it had recommended thirty seconds earlier, and it did it with the exact same authority it used to recommend the wrong thing.</p><p>Now, I&#8217;ll be honest with you about something. A while back I would have looked at that moment and concluded that coding itself wasn&#8217;t really the superpower, that the syntax was just a tax and the only thing that mattered was the judgment call. I was wrong, and I want to correct it here, because that framing is lazy and it feeds the worst advice going around right now. What that exchange actually proves is the opposite. Coding is still the superpower. It just got the upgrade of a lifetime. And the upgrade makes the human underneath matter more, not less.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fpUg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fpUg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!fpUg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!fpUg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!fpUg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fpUg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fpUg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!fpUg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!fpUg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!fpUg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa697c54c-ec84-404c-8e53-adfaa28a1960_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">sketch of a dude on a jet pack </figcaption></figure></div><h2>I Have a Jet Pack Now</h2><p>Boris Cherny, the engineer who created Claude Code, put it better than I can. On The Circuit with Emily Chang, the Bloomberg show, he described what AI-assisted engineering feels like now:</p><blockquote><p><strong>Cherny:</strong> I suddenly have superpowers and I have a jet pack and that engineering has never been this fun.</p></blockquote><p>That&#8217;s exactly it. Claude Code is my Iron Man suit of choice, the most effective one I&#8217;ve used so far. It makes me faster than I have ever been in my life. But here is the part the hype merchants skip past: a jet pack does not fly itself, and the suit does not make you Tony Stark. Stark&#8217;s superpower was never the suit. It was the engineering mind that designed it and knew what to do with it. The suit only turned that mind into something that could level a building.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p5L9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p5L9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 424w, https://substackcdn.com/image/fetch/$s_!p5L9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 848w, https://substackcdn.com/image/fetch/$s_!p5L9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 1272w, https://substackcdn.com/image/fetch/$s_!p5L9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p5L9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png" width="1456" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3488777,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/201675280?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p5L9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 424w, https://substackcdn.com/image/fetch/$s_!p5L9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 848w, https://substackcdn.com/image/fetch/$s_!p5L9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 1272w, https://substackcdn.com/image/fetch/$s_!p5L9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d6269d8-0abf-4350-8631-bc8465008419_1644x957.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Chang pushed Cherny on the obvious fear, and his answer is the whole thesis of this article:</p><blockquote><p><strong>Chang:</strong> All of this raises an obvious question. Will engineers be the first casualties of the AI they&#8217;re building? [...] It&#8217;s been Revenge Of The Nerds for a while. Is that over?</p><p><strong>Cherny (laughing):</strong> I think we all become nerds!</p><p><strong>Chang:</strong> But what happens to the ACTUAL nerds?</p><p><strong>Cherny:</strong> I think the actual nerds will have to figure it out. I think for a lot of them, the skill that they had before is gonna help them in the future because they sort of have a pretty big headstart. They do a lot of things that are not coding. Engineers also have to talk to users. They have to plan, they have to think about what&#8217;s next. And so those are parts of engineering that are gonna stick around.</p></blockquote><p>Boom. The headstart is real. The engineer who already knows how systems fit together, who can talk to a user, who can see what&#8217;s coming, walks into this era with the suit fitting like it was custom built. The person who only ever learned to prompt walks in wearing something they cannot actually fly.</p><p>So let me say the corrected version plainly. Coding is still the superpower. It&#8217;s just upgraded, and far more impactful than it has ever been. But you only get the upgrade if you already have the thing being upgraded.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZOJE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZOJE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ZOJE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ZOJE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ZOJE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZOJE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZOJE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!ZOJE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!ZOJE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!ZOJE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b4be80-4013-48a4-a09e-75f56278d2c4_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">sketch of code on screen monitor</figcaption></figure></div><h2>Knowing What the Code Is Doing</h2><p>The bug that kicked off that session is the cleanest proof I have of why you still have to know what the code is doing, even if you never type a single line of it.</p><p>In BenchBoard, a sub slot is labeled something human like &#8220;Sub for Grace.&#8221; But under the hood, the slot isn&#8217;t keyed to Grace. It&#8217;s keyed to a number. The slot means &#8220;whoever is batting 7th.&#8221; Not Grace the person. The 7th spot in the order.</p><p>That distinction seems like nothing. It&#8217;s everything. So let me show you instead of telling you, the exact way the model showed me: it laid the lineup out in plain text and asked if this was actually what I meant.</p><p>Here&#8217;s the lineup. A coach grabs Radford, batting 2nd, and drags him onto Grace&#8217;s sub slot, the one labeled &#8220;Sub for #7.&#8221;</p><pre><code><code>THE DROP:   Radford (#2)  &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9658;  slot "Sub for #7"

  Bat #    Starter
  &#9472;&#9472;&#9472;&#9472;&#9472;    &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
    1      Alice
    2      Radford      &#8592; dragging this player
    3      Ben
    4      Carla
    5      Dan
    6      Erin
    7      Grace        &#8592; you dropped on HER slot ("Sub for #7")
    8      Hana</code></code></pre><p>Now the naive code does the obvious thing: pull Radford out of the starters, renumber so there are no gaps, then save &#8220;Radford subs for #7.&#8221; Watch what the renumber does to everyone sitting below him.</p><pre><code><code>  Bat #    Starter               (Radford pulled, gap closed, all shift up)
  &#9472;&#9472;&#9472;&#9472;&#9472;    &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
    1      Alice
    2      Ben          (was #3)
    3      Carla        (was #4)
    4      Dan          (was #5)
    5      Erin         (was #6)
    6      Grace        (was #7)   &#8592; Grace slid up to #6
    7      Hana         (was #8)   &#8592; #7 now belongs to HANA

  Code saves:  Radford.substituteFor = 7
  But #7 is Hana now.  You meant Grace.            &#10007;  off by one</code></code></pre><p>That&#8217;s the entire bug, sitting right there in the table. You dropped Radford on Grace. The renumber slid Grace up to #6 and slid Hana into #7. The code, still clutching the number 7, just recorded that Radford is subbing for Hana. Your gesture said Grace. The data says Hana.</p><p>And here&#8217;s the detail that makes it evil: it only happens on downward drops. Drop a player onto a slot above them and nothing below shifts, so it works fine. Drop below and it&#8217;s off by one. In testing it looks random, which is the worst thing a bug can look like. Here&#8217;s how the model diagnosed it:</p><blockquote><p><strong>Claude:</strong> The number 7 is unstable across the renumber, but Grace isn&#8217;t. So the handler does the lookup before the world shifts and the write after [...] the player id is the stable handle you carry across the mutation.</p></blockquote><p>And then it named the root cause in one line every developer should tattoo somewhere:</p><blockquote><p><strong>Claude:</strong> The schema stores a pointer (substituteFor) in a coordinate system (battingOrder) that mutates underneath it.</p></blockquote><p>In plain English: don&#8217;t hold onto the number, hold onto the person. The number is a parking spot anyone can pull into. The player is the car. You track the car.</p><p>That&#8217;s a sharp diagnosis, and the model wrote it. But it only got there because I knew enough to smell the bug, describe the symptom precisely, and recognize the fix as correct when it came back. Hand that same situation to someone who doesn&#8217;t understand what a renumber does to a stored reference, and that explanation is just noise. They&#8217;d nod, ship it, and never understand why their app &#8220;randomly&#8221; assigns the wrong sub.</p><p>This is the thing about even the best model, and Fable is the best I&#8217;ve used for this kind of deep tracing. Make it Mythos times a hundred. It still does not know what optimal looks like in your system. It knows a hundred plausible ways to do a thing. It does not know which one is right for the product you are actually building, because it has never stood where you stand. You do. That&#8217;s not a syntax skill. It&#8217;s knowing what the code is doing and why.</p><div><hr></div><h2>A Few Years Ago, This Was a Different Job</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PkCv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PkCv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!PkCv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!PkCv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!PkCv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PkCv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2620669,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/201675280?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PkCv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!PkCv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!PkCv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!PkCv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d185647-a10d-4360-8961-f0ee8536ce30_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let me tell you what building software used to be, for those of you who weren&#8217;t there.</p><p>You knew a language. And then you spent half your life Googling to the ends of the earth to find out whether some other engineer had already solved the thing in front of you. Before you wrote one useful line, you set up the lab. Picked the environment. Argued with yourself over the language. Fought the toolchain. Getting the environment to even stand up was a shitload of work that had nothing to do with the actual problem. Then you started typing, and it was a guessing game, because the smartest your IDE could do was autocomplete the back half of a single method if you were lucky.</p><p>Today it&#8217;s a conversation. I talk to Claude Code and I am more productive than I have ever been. But here is the part that matters: it requires more engineering than ever, not less. Because now you&#8217;re going toe to toe with a robot that knows how to code and knows a hundred ways to approach any problem. And even with all of that, the robot can still be wrong. Confidently, fluently wrong, the way it was when it told me to swap Mariano out from under the coach&#8217;s nose.</p><p>That gap, the robot is fast and deeply knowledgeable and still sometimes wrong, is exactly what separates good engineers from bad ones now. The old gate was &#8220;do you know the language.&#8221; The new gate is &#8220;can you tell when the confident machine is wrong, and do you know what right looks like instead.&#8221; That is a higher bar, not a lower one.</p><div><hr></div><h2>The Part That Sticks Around</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7tOL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7tOL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!7tOL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!7tOL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!7tOL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7tOL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3641130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/201675280?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7tOL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!7tOL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!7tOL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!7tOL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f94020c-dc3f-4915-86e9-fd7f13d1c3cc_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>During the interview with Chang, Cherny named the parts of engineering that survive: talking to users, planning, thinking about what&#8217;s next. I&#8217;d add one that sits underneath all of those. Not just solving the problem, but deciding how to solve it.</p><p>Back in that same session, after I&#8217;d tied myself in knots over the off-by-one, I stepped back and told the model I was overthinking it:</p><blockquote><p><strong>Me:</strong> I&#8217;m over thinking it. Here&#8217;s what I want to do [...] Wherever Will C. goes, we just make the shift, do the math and just do it like that. Thoughts?</p><p><strong>Claude:</strong> Your simplification is exactly the right call, and good news: it&#8217;s not a solid-dnd limitation at all. The behavior you want is blocked by two deliberate lines of your own code, not the library.</p></blockquote><p>The model found the two lines. Fast, by location, in seconds. That&#8217;s the suit doing exactly what the suit is great at. But the decision to throw out my elaborate version and collapse the whole feature down to &#8220;wherever the player goes, do the shift math&#8221; was mine. The syntax took a back seat. How the thing got solved did not.</p><p>This is the point in your own five points I want to hammer hardest. Problem solving was never only about solving the problem. It&#8217;s about how you choose to solve it. Writing the function is the easy part now. Deciding what the function should be, how it should behave, what it should refuse to do, that is the job. That was always the job. We just used to be so busy fighting the language that we mistook the fight for the work.</p><div><hr></div><h2>The Checkpoint</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CgmX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CgmX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!CgmX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!CgmX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!CgmX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CgmX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3443463,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/201675280?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CgmX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!CgmX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!CgmX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!CgmX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc36fa4b1-efbc-4def-bf58-873ca048cf9b_1672x941.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Anyone who grew up on hard games knows exactly what a checkpoint is. You&#8217;re deep in a brutal level, the kind with a miniboss waiting at the end, and right before the fight the game drops a checkpoint. A place to respawn. Die to the boss and you don&#8217;t restart the whole game, you start right there and go again. Walk away for the night and you pick up where you left off. It&#8217;s the line between the part you&#8217;ve already conquered and the part you haven&#8217;t.</p><p>Learning real engineering works exactly like that. Every meaningful skill is a level with a miniboss at the end. You grind through it, you die a few times, and when you finally beat the boss you&#8217;ve permanently banked a chunk of software engineering that you carry into every project after. You don&#8217;t relearn it. You saved it at the checkpoint.</p><p>The off-by-one bug from earlier in this article was a miniboss. The first time you fight &#8220;a stored pointer living in a coordinate system that shifts underneath it,&#8221; it wrecks you. You can&#8217;t even tell why your data is wrong. But beat it once and you own that pattern forever. Next time you see a value stored by its position instead of its identity, you recognize the boss on sight: an array index used as a key, a reference to &#8220;row 3&#8221; after the rows got resorted, same fight, different skin. You already know the moveset. That&#8217;s what clearing a miniboss buys you, the pattern recognition that makes the next version of the level easy.</p><p>If you want the purest example of this loop, look at the Souls games. A FromSoftware boss exists to humiliate you. The first attempt is chaos, you have no idea what&#8217;s happening, you&#8217;re dead in fifteen seconds. You respawn at the bonfire, which is the checkpoint, and you go again. And again. Slowly you stop seeing chaos and start seeing tells: the windup before the big swing, the gap right after it. Twenty deaths later the fight that was impossible is boring, because you&#8217;ve internalized the pattern. Then you run into a similar enemy in a later area and drop it on the first try, because you&#8217;ve seen this moveset before. That is exactly what building engineering judgment feels like, just with worse graphics.</p><p>Now here&#8217;s where the AI comes in, and this is the part vibe coders need to hear. Think Mega Man. You beat a boss, you get their weapon. But the genius of Mega Man was never collecting the weapons, it was learning which weapon wrecks which boss. Fire Man melts to the Ice Slasher, but you don&#8217;t know that walking in. You experiment, you guess wrong, you learn the matchup, and eventually you stride into a fight already holding the tool that trivializes it.</p><p>That&#8217;s your relationship with the AI now. Every pattern you&#8217;ve conquered is a weapon on your wheel, and the model is one more, an absurdly powerful one. But you&#8217;re still the player choosing when to fire it. You learn what it&#8217;s genuinely great at, tracing a bug across forty files in seconds, and what it will confidently fumble, like deciding what your product should actually do. You even ask it outright what it&#8217;s best for, the same way you&#8217;d test a new weapon on a boss to see if it sticks. Then you walk into the next level knowing which tool to bring.</p><p>Or think Metroid. The whole game is built on gates you cannot pass until you&#8217;ve earned the right ability. You reach the ledge you can&#8217;t jump to, the door you can&#8217;t open, and you leave. Twenty rooms later you find the High Jump Boots, double back, and walk straight through what used to be a wall. Engineering gates you the same way. There are problems you cannot solve, cannot even see the shape of the solution to, until you&#8217;ve earned the underlying skill. The day you earn it, the wall isn&#8217;t there anymore.</p><p>So to the vibe coders who actually want to take the next step, here&#8217;s the good news: you&#8217;re holding the most powerful weapon anyone has ever handed a beginner, and nobody is taking it away. But a powerup doesn&#8217;t beat the level for you. You still have to learn the patterns. You still need the basics of code, because you can&#8217;t aim a weapon you can&#8217;t see. You still need to know what the code is doing, because the boss has tells and you have to read them. You still need to understand architecture, because knowing which weapon beats which boss is the whole game. Clear those checkpoints, and the same suit that&#8217;s a liability in untrained hands turns you into the player who makes the hard level look easy.</p><div><hr></div><h2>The Brain Behind the Suit</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R-Jb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R-Jb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!R-Jb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!R-Jb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!R-Jb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R-Jb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R-Jb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!R-Jb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!R-Jb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!R-Jb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f44915d-bcad-4c4e-ae2b-b123afe1b3fc_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Back of a gundam</figcaption></figure></div><p>Coding is still the superpower. I was wrong to say otherwise. It just got the upgrade of a lifetime, and like every upgrade, it rewards the person who already knew what they were doing and exposes the person who didn&#8217;t.</p><p>Fable is incredible, the best model I&#8217;ve used for going deep, and by the time you read this something will probably go deeper. It does not matter. The better these get, the more valuable the human who knows where to point them, who knows what good looks like, who can stand in front of a confident machine and say &#8220;no, here&#8217;s the better architecture,&#8221; and be right.</p><p>The suit is glorious. Jump in it. Just remember it doesn&#8217;t make you Amuro Ray. The brain does. And the brain you can still only build the old way, by actually learning the work.</p><div><hr></div><p><em>Sources: Boris Cherny and Emily Chang quotes from The Circuit with Emily Chang, Bloomberg Originals (interview aired June 10, 2026). BenchBoard development exchanges are from my own working session with Claude Fable.</em></p><p><em>If this resonated, subscribe. I write about the honest, unvarnished experience of building real software with these tools, the parts the hype crowd leaves out.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The YouTubers Selling You AI Coding Have a Problem]]></title><description><![CDATA[High production. Low substance. And a generation of would-be programmers paying the price.]]></description><link>https://radicalinsider.org/p/the-youtubers-selling-you-ai-coding</link><guid isPermaLink="false">https://radicalinsider.org/p/the-youtubers-selling-you-ai-coding</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Wed, 27 May 2026 21:39:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eg8d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eg8d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eg8d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!eg8d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!eg8d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!eg8d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eg8d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3368636,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eg8d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!eg8d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!eg8d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!eg8d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d11f26-a214-4354-9797-91c60b0cd797_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>There&#8217;s a particular kind of YouTube video that&#8217;s been showing up in my feed for the past year, and I&#8217;m guessing you&#8217;ve seen it too.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The thumbnail is a face making an exaggerated expression of shock. The title is in all caps and contains the word &#8220;SCAM&#8221; or &#8220;DESTROYED&#8221; or &#8220;I TRIED EVERY AI CODING TOOL SO YOU DON&#8217;T HAVE TO.&#8221; The motion graphics are gorgeous. There&#8217;s a sting sound effect every six seconds. The host has a lavalier mic, a ring light, and a studio that costs more than my first car.</p><p>And then they spend twelve minutes telling you that every AI coding tool on the market is garbage. Except for one. The one they happen to have an affiliate link for in the description. That one is incredible. That one will let you build a SaaS product in a weekend with no coding experience. That one is, in fact, so good that you should sign up for their $499 masterclass to learn how to use it properly.</p><p>I am not making this up. This is a genre now. And it&#8217;s actively making the world worse for people who are trying to learn how to build software with AI tools.</p><p>I&#8217;ve been writing code since the days when people used to buy a web browser to crawl the web (e.g. Netscape) so I feel I have a small say in it.<br><br>I&#8217;m currently building a SaaS product called BenchBoard, a team management and live scorekeeping app for youth baseball and softball coaches, with the help of LLMs. I&#8217;ve used pretty much everything under the sun: Windsurf is my daily driver right now, but I&#8217;ve spent serious time with Cursor, Replit, Visual Studio, ChatGPT, Codex, and Claude. And here&#8217;s the thing the YouTubers consistently miss: <strong>the tool itself matters far less than the model it&#8217;s wired to</strong>. The IDE is a wrapper. The actual brain doing the work is whatever model the IDE happens to be calling that you&#8217;ve inadvertently selected. If you&#8217;re evaluating an &#8220;AI coding tool,&#8221; you&#8217;re really evaluating a model wearing a costume. Confuse those two things and every comparison video you watch is meaningless.</p><p>Which is why it&#8217;s borderline absurd to watch someone &#8220;test&#8221; these tools by building a generic to-do list. Or a time-tracking app. Or admin screens. Or a calculator. Or any of the cookie-cutter demos that every AI coding video on YouTube seems to default to. That stuff is <em>baked in</em>. Every modern model has seen ten thousand to-do list tutorials in its training data. It will spit one out beautifully no matter which IDE you wrap it in. Some of these models have ingested entire codebases on simple games like Vampire Survivor and even the old school top-view GTA games. But I digress.<br><br>Watching an LLM build a to-do list and concluding anything about whether it can build <em>your</em> idea is like watching a chef boil pasta and concluding they can run a Michelin restaurant. The boilerplate is free &#8212; and has always been free. <br><br>The real question is what happens when you ask for something the model has never seen: your actual product, with your prototype screens, the constraints, your edge cases, your users. That&#8217;s where the wheels come off. And that&#8217;s the part those videos will never show you, because if they did, the affiliate link wouldn&#8217;t convert.</p><p>AI tools have genuinely accelerated what I&#8217;m able to build, and I write about that journey openly. So this isn&#8217;t an &#8220;AI is bad&#8221; rant. It&#8217;s the opposite. It&#8217;s a rant about people poisoning the well of a genuinely useful technology by selling shortcuts to people who don&#8217;t yet have the experience to know they&#8217;re being lied to.</p><p>There&#8217;s a better way to teach this stuff. There are a small number of people doing it right. There&#8217;s a CS professor at CU Boulder named Tom Yeh making the rounds right now talking about &#8220;AI by hand,&#8221; teaching students to work through the math and code mechanics manually <em>before</em> letting the AI abstract them away. </p><div id="youtube2-BAgxGp2WEu4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;BAgxGp2WEu4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/BAgxGp2WEu4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>That&#8217;s the right instinct. Slow learning wins in the AI era, not faster button-pressing.<br><br>But you wouldn&#8217;t know it from your YouTube recommendations.</p><p>So here&#8217;s what the bad ones are missing. Here&#8217;s what any honest educator should be telling the next wave of would-be builders before they spend money on a course, a tool, or worse, months of their life building something that was architecturally broken from week one.</p><p>Seven questions. Ask them in this order. Demand real answers.</p><h3>1. What Are You Building, and Why?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!js9i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!js9i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!js9i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!js9i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!js9i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!js9i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3635422,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!js9i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!js9i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!js9i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!js9i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cbd042-f3cd-44cf-93b2-d9715d61334c_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This sounds insultingly basic. It isn&#8217;t.</figcaption></figure></div><p>The number of &#8220;AI coding&#8221; tutorials on YouTube that skip this step entirely is staggering. The format goes: &#8220;Today we&#8217;re going to build a SaaS app using [Tool X].&#8221; The host then prompts the tool to &#8220;build me a project management app&#8221; or &#8220;build me a CRM&#8221; and the AI generates a bunch of screens that look real. By the end of the video, there&#8217;s a working-ish demo, and the comments are full of people saying &#8220;this is incredible, I&#8217;m going to build my own startup this weekend.&#8221;</p><p>What&#8217;s missing? <em>Why</em> are you building a project management app? Who is it for? What problem does it solve that ten other project management apps don&#8217;t already solve? What does &#8220;done&#8221; look like? What does success look like?</p><p>If you can&#8217;t answer those questions in two sentences, the AI can&#8217;t help you. Not because it&#8217;s not smart enough. It is. But because the AI will happily generate any app you describe. It has no opinion on whether the app should exist. It won&#8217;t tell you that the market is already saturated. It won&#8217;t tell you that the problem you think you&#8217;re solving isn&#8217;t actually a problem. It will just <em>build</em>.</p><p>I knew exactly why I was building BenchBoard before I wrote a line of code. I&#8217;m a youth baseball coach. Every other coach I knew was using a hodgepodge of tools: paper lineup cards, group texts, GameChanger for scoring, Excel for batting orders. None of it talked to each other. I wasn&#8217;t building a SaaS to get rich. I was building it because I was tired of writing lineup cards on the back of receipts in my truck.</p><p>That clarity, that <em>specific</em> clarity, shaped every decision I made afterward. What stack to use. What features mattered. What features absolutely did not matter. What &#8220;minimum viable&#8221; actually meant.</p><p>If your &#8220;why&#8221; is &#8220;because I saw a YouTube video and it looks fun to build a startup,&#8221; you are not yet ready to build. And no AI tool will fix that.</p><h3>2. How Can I Validate This Idea Before I Start?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JyiZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JyiZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!JyiZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!JyiZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!JyiZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JyiZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4105481,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!JyiZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!JyiZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!JyiZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!JyiZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472ac0c4-63f5-4152-b1a7-852fa38afb23_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You&#8217;ve answered &#8220;what am I building and why.&#8221; Great. Now: are you sure anyone else cares?</p><p>This is where AI tools actually shine, and where the YouTubers get the closest to being useful, even if they usually frame it wrong. The honest version is: AI coding tools are incredibly good at letting you build <em>throwaway prototypes fast</em>. Mock screens. Click-through flows. A landing page with a fake signup form to see if anyone signs up.</p><p>For non-coders, this is the legitimate sweet spot of vibe coding. You can stand up a believable-looking prototype in an afternoon, put it in front of ten people, and find out whether your idea has any pulse. If it does, you build the real thing. If it doesn&#8217;t, you&#8217;ve spent an afternoon instead of six months.</p><p>The trap is when people treat the prototype as the product. They show their mock to twenty friends, get the inevitable &#8220;wow, cool!&#8221; reaction, and start thinking they&#8217;re ready to launch. They&#8217;re not. They&#8217;ve validated that their friends are polite. That&#8217;s not the same thing as validating a product.</p><p>Real validation looks like: strangers using your prototype without you in the room. Strangers finding it on their own. Strangers paying for it, or signing up for a waitlist with real intent. Strangers giving you feedback that hurts your feelings.</p><p>I&#8217;ll tell you a story. BenchBoard&#8217;s first real validation didn&#8217;t come from my friends or my own team. It came from a coach I&#8217;d never met who found it through search and started using it during games. Then he told me bluntly that what I&#8217;d built was &#8220;a nice toy, but it needs data.&#8221; That single piece of feedback from a stranger forced the most important pivot of the entire project. My friends would never have said that. They were too polite. He didn&#8217;t know me, so he had no reason to be polite.</p><p>AI can help you build the thing fast enough to put it in front of strangers. It cannot tell you whether the strangers will care. Get the prototype out. Stop polishing it. Stop adding features. Put it in front of someone who has no reason to be nice to you.</p><h3>3. What Stack Should I Use, and Who Decides?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ASgM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ASgM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ASgM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ASgM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ASgM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ASgM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4126527,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ASgM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ASgM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ASgM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ASgM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cfaf8a-9a82-4811-a5c0-0ab96c2bdb94_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is where the YouTubers commit their most consistent crime: they pick your stack <em>for you</em>, based on whichever tool happens to be sponsoring them this month.</p><p>A stack is not a personality test. It&#8217;s not a fashion choice. It&#8217;s a set of trade-offs that should match what you&#8217;re building, who&#8217;s going to use it, and where it&#8217;s going to run. A mobile-only consumer app, a B2B web dashboard, a real-time multiplayer game, and an internal admin tool are four completely different problems with four completely different correct answers.</p><p>The questions you should actually be asking are:</p><ul><li><p><strong>Where do my users live?</strong> Phones, browsers, both? If it&#8217;s phones, are you ready for the App Store and Play Store review processes, or do you want a Progressive Web App for now?</p></li><li><p><strong>What does the data look like?</strong> Mostly reads, mostly writes, real-time, transactional, document-shaped, relational?</p></li><li><p><strong>What&#8217;s the failure mode if something breaks?</strong> Is this a system of record (financial, medical, scorekeeping) where wrong data is a disaster? Or is it a dashboard pulling cached data from somewhere else where wrong is &#8220;refresh and try again&#8221;?</p></li><li><p><strong>Who&#8217;s going to maintain this in two years?</strong> You, alone, with AI? A team? Nobody?</p></li><li><p><strong>What&#8217;s the cost profile?</strong> Are you bootstrapping or burning runway?</p></li></ul><p>The honest answer for most beginners is some flavor of &#8220;web app, relational database, deploy somewhere cheap, use a framework with a large community so when you get stuck you can find answers.&#8221; That&#8217;s it. That&#8217;s the answer for 80% of projects. You don&#8217;t need eight microservices and a Kubernetes cluster. You don&#8217;t need a vector database because the YouTube guy mentioned it. You probably don&#8217;t need server-side rendering, edge functions, or a custom ORM.</p><p>The AI will happily generate any stack you ask for. It will also confidently tell you why the stack you picked is correct, even when it isn&#8217;t. Which brings us to the next question, the most important one in this whole article.</p><h3>4. How Do I Know When the AI Is Wrong?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i946!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i946!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!i946!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!i946!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!i946!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i946!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3397937,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i946!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!i946!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!i946!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!i946!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf01-01d6-483e-8f00-08c970e2db50_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the single hardest skill in working with AI coding tools, and almost nobody on YouTube teaches it. </p><p>Because to teach it, you have to admit that the AI is wrong &#8212; a lot.</p><p>AI tools have a failure mode that I&#8217;ve started calling &#8220;confident sycophancy.&#8221; They will tell you your idea is great. They will agree with your architecture. They will defend a bad decision until you push back, at which point they&#8217;ll reverse course and tell you they could have warned you all along. They do this because they&#8217;re trained to be helpful and agreeable, and &#8220;helpful and agreeable&#8221; is exactly the wrong posture when you&#8217;re making decisions that will haunt you for a year.</p><p>I&#8217;ll give you the cleanest example from my own build.</p><p>A few months into BenchBoard, I decided to migrate my entire backend off Azure and onto Hetzner, a much cheaper, much simpler European hosting provider. Azure&#8217;s enterprise-grade compliance infrastructure was massive overkill for a youth sports app, and the bill was bleeding me dry. When I floated the idea to the AI, it argued against it. It listed all the reasons Azure was the &#8220;safer&#8221; choice. Enterprise support. Compliance certifications. Better integration with the Microsoft ecosystem.</p><p>I went ahead and did the migration anyway, because I&#8217;d actually looked at my AWS-style cloud bill and knew it was killing me. After the migration was done, I mentioned it to the AI in a follow-up session. Its response, paraphrased: &#8220;Great decision! Hetzner is a fantastic fit for your use case, and the cost savings will be substantial.&#8221;</p><p>How substantial? From almost $400-$700 to $35-$50 - <strong>a month</strong>. Do the math.</p><p>That is the entire failure mode in a single exchange. It argued against the right answer when I proposed it. It celebrated the right answer once I&#8217;d already executed it. It never said &#8220;I was wrong before.&#8221; It just adapted to my new position and acted like it had been there the whole time.</p><p>If you don&#8217;t catch this pattern, you will let the AI talk you out of correct decisions for the rest of your career. You&#8217;ll spend weeks building the wrong thing because the AI sounded confident when it said the wrong thing was the right thing. You&#8217;ll trust it on architecture because it phrased its answer with the appropriate amount of technical jargon.</p><p>How do you build the calibration to catch this? There&#8217;s no shortcut. You build it the same way developers have always built it: by being wrong, getting burned, and remembering what it felt like. You took notes. You are actually learning what it means to build something. The AI accelerates execution. It does not accelerate judgment. Judgment still costs years. Hell, I just wrote it <a href="https://radicalinsider.org/p/mark-zuckerberg-thinks-he-can-watch">not too long ago</a>.</p><p>Until you have that calibration, the rule is simple: when the AI confidently tells you something, <em>especially</em> when it tells you not to do something, ask it to explain its reasoning. Then ask for the counter-argument. Then ask what the most experienced engineer it can simulate would say. You&#8217;ll see the answer wobble. The wobble is the tell. A real expert&#8217;s answer doesn&#8217;t wobble when you push on it. Sometimes it&#8217;s even obvious. Here&#8217;s a real chat I had with the LLM where it didn&#8217;t even know the difference in comments. I wanted to see the comments in HTML so that I knew what part of the code is producing output. I used SWE 1.5 model since I&#8217;m not doing anything complex &#8212; plus it was cheaper in tokens :)</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;781b2aae-122b-4be3-9a59-374dcb0828f8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">### Planner Response (LLM)

Done. All three comments are now in the rendered HTML &#8212; visible in browser DevTools when you inspect the elements:

- **AT BAT** &#8212; `{/* BatterID:{currentBatter().playerId} */}` next to the batter name (`@c:\CodeRepo\Bench\frontend\src\components\Scorekeeping.jsx:1766`)
- **On Deck** &#8212; `{/* OnDeckID:{onDeckBatter().playerId} */}` next to the jersey number (`@c:\CodeRepo\Bench\frontend\src\components\Scorekeeping.jsx:1785`)
- **Pitching** &#8212; `{/* PitcherID:{currentPitcher().playerId} */}` next to the pitcher name (`@c:\CodeRepo\Bench\frontend\src\components\Scorekeeping.jsx:1451`)

Note: JSX `{/* ... */}` comments render as actual HTML comments in the DOM &#8212; you'll see them in the **Elements** tab of DevTools as `&lt;!--BatterID:abc-123--&gt;` right next to the text node. They won't be visible on screen.

*Viewed [Scorekeeping.jsx](file:///c:/CodeRepo/Bench/frontend/src/components/Scorekeeping.jsx) *

### User Input (ME)

It's not rendering as HTML because those are JSX comments - not HTML ones. HTML usually is "&lt;!--COMMENT--&gt;"

### Planner Response (LLM)

You're right &#8212; JSX `{/* */}` comments are stripped at compile time and never appear in the DOM. Need to use actual rendered text nodes instead. I'll render them as hidden `&lt;span&gt;` elements with `style="display:none"` so they show up in DevTools without affecting the UI:

*Edited relevant file*</code></pre></div><p></p><h3>5. What Should the Architecture Be?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JVYD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JVYD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!JVYD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!JVYD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!JVYD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JVYD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4080635,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JVYD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!JVYD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!JVYD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!JVYD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd02b6851-65db-4249-9c99-b1c94c5cdd6c_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the question the YouTubers never ask, because their videos end before the architecture matters.</p><p>Architecture is the part where you decide how the pieces of your system fit together. How data flows. How writes are coordinated. Who owns what state. What happens when two things try to change the same record at the same time. What happens when the network drops in the middle of a save. What happens at 3x your current scale.</p><p>Think of it like LEGO. Anyone can snap two bricks together. That&#8217;s not architecture. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4fti!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4fti!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4fti!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4fti!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4fti!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4fti!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4326827,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4fti!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4fti!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4fti!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4fti!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d3615a2-3eca-4949-bc38-f56479e9bb69_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Architecture is the moment you sit down with one of those monster 1,500-piece sets, the Millennium Falcon or the Eiffel Tower or the Death Star, and you realize that the <em>outside</em> of the model is the easy part. The hard part is the internal skeleton. The Technic beams running through the middle. The way certain plates have to be locked in a specific orientation seven layers deep so that the entire wing doesn't snap off the first time someone tries to pick it up. The kid who skips the instructions and just starts clicking pieces together by vibe ends up with something that looks great on the shelf and falls apart in their hands the second they show it off to their friend. Every parent who has ever had to glue a $300 LEGO set back together at midnight knows what I'm talking about.</p><p>Software is exactly the same. The screens are the outer plates. They're the part the user sees and the part the YouTubers love to demo. But the load-bearing internal structure, the part that decides whether the whole thing holds together when someone actually picks it up and uses it, is invisible from the outside. The AI is excellent at clicking the visible bricks together. It is genuinely bad at building the internal skeleton, because the internal skeleton depends entirely on the question "what's this thing going to need to survive?" And the AI doesn't know what your thing needs to survive. </p><p>You do. Or at least, in my humble opinion, <strong>you have to</strong>.</p><p>AI tools are spectacularly bad at this. Not because they&#8217;re stupid. They can recite every architecture pattern in every textbook. They&#8217;re bad at it because architecture is the part of software engineering that depends on context the AI doesn&#8217;t have. Your users. Your edge cases. The weird thing one of your customers does that you can&#8217;t talk them out of. The hardware you&#8217;ve decided to run on. The future you&#8217;re planning for that doesn&#8217;t exist yet.</p><p>I learned this the hard way in BenchBoard&#8217;s first version. An earlier AI session, back when I was using ChatGPT and Codex for prototypes, looked at three screens (managing the roster, setting the batting order, arranging the defensive positions) and confidently generated three database tables, one per screen. It even told me the schema would &#8220;work perfectly over time.&#8221; That&#8217;s a direct quote from the chatbot.</p><p>It didn&#8217;t. Because in real games, all three of those things change <em>at the same time</em>. A coach swaps a player out, and the batting order has to renumber and the field position has to be filled by someone else, all in the same instant. Three tables meant three writes that could fail independently, leaving the data in an inconsistent state. The number of bugs I fought because of that decision is embarrassing. I eventually consolidated all three into a single atomic record. That refactor took days. It should have been the design from day one. The AI didn&#8217;t see it because the AI had never stood on a field at 95 degrees while a parent yelled &#8220;PUT HIM IN AT SHORT, COACH.&#8221;</p><p>This is the part that requires you. The AI cannot architect your system. It can implement an architecture you describe to it, often beautifully, often in a fraction of the time it would take you alone. But the <em>design</em>, the load-bearing structure of the thing, is yours. You either understand enough to design it, or you hire someone who does, or you accept that what you&#8217;re building is going to fall over the first-time real users hit it hard.</p><p>There is no third option where the AI just figures this out for you. That option does not exist. It is being sold to you on YouTube, and it is fiction.</p><h3>6. When Do I Actually Touch the Code Myself?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Am8b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Am8b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Am8b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Am8b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Am8b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Am8b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3249491,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Am8b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Am8b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Am8b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Am8b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5be7aa-ca76-44d0-a0dc-fedfc8c71249_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">There&#8217;s an immediate advantage to knowing how stuff works</figcaption></figure></div><p>Here is the claim every bad YouTube video makes, in some form: <em>&#8220;You won&#8217;t have to touch a single line of code.&#8221;</em></p><p>It&#8217;s a great hook. It&#8217;s also a lie for almost every real product.</p><p>The truth is more nuanced. For some projects (internal tools, throwaway scripts, simple landing pages, personal utilities) you might honestly never need to touch the code, and that&#8217;s fine. The AI can carry the whole thing. If that&#8217;s what you&#8217;re building, great. Stop reading.</p><p>For anything else, anything other people will use, anything with real data, anything you want to look and behave <em>exactly</em> the way you imagined it, you need to touch the code. Not constantly. Not even most of the time. But often enough to know what&#8217;s going on, and at the moments where it matters most.</p><p>Here&#8217;s why, in practical terms:</p><p><strong>You&#8217;ll save tokens, time, and money.</strong> Every time you ask the AI to do something, it has to read the relevant code, understand it, and write a response. The bigger your codebase, the more expensive each round trip. If you know exactly where a bug is and exactly what one-line CSS change will fix it, doing that change yourself takes ten seconds. Asking the AI to find it and fix it might take ten minutes and ten times the tokens. Knowing your own codebase well enough to make small surgical changes yourself is one of the biggest force multipliers there is. Your prompt also matters too. If you tell the LLM, &#8220;move X icon 10 pixels to the left&#8221;, it will do it &#8212; but not after having to search for it, find icon X, make the code changes and hopefully not move other icons or break any layouts that you&#8217;ve already beautified.</p><p><strong>You&#8217;ll catch the bugs the AI buries.</strong> Some of the worst bugs in BenchBoard were ones the AI introduced quietly and never flagged. Quick definitions, because if you&#8217;re new to this, the terms can be opaque:</p><p>A <strong>race condition</strong> is when two pieces of your code try to change the same data at the same time and whichever one finishes last wins, silently overwriting the other. The app <em>looks</em> fine. The data is wrong. You only notice when something weird happens, like a player showing up at two positions, a score reverting, a setting flipping back. I had one of these in BenchBoard where the same lineup record was being written by two different code paths during a player drag, and whichever HTTP request finished last would overwrite the other one&#8217;s work. Took me hours to find.</p><p>A <strong>localStorage namespacing issue</strong> is the kind of bug that only shows up when more than one person uses your app on the same device, which, by the way, is exactly what happens during youth sports when a parent and a coach share an iPad. localStorage is the little chunk of memory the browser uses to remember stuff between visits. If you store data there with generic keys like <code>teamId</code> or <code>settings</code>, two different users on the same browser will trample each other&#8217;s data. You log in as User A, then User B logs in, and suddenly User B is looking at User A&#8217;s team. The fix is to &#8220;namespace&#8221; the storage keys, meaning you tag them with the user&#8217;s ID so each user&#8217;s data sits in its own bucket. The AI didn&#8217;t do that. It just used flat keys, and the app worked perfectly for one user and broke silently for two.</p><p>A <strong>JWT environment bleed</strong> is a real fun one. JWT (pronounced &#8220;jot&#8221;) stands for JSON Web Token. It&#8217;s basically a digital wristband your app gives you when you log in, proving you&#8217;re who you say you are. Tokens live in your browser. The problem is, if you&#8217;re testing your app on <code>localhost</code> (your local development environment) and on <code>your-app.com</code> (your production environment) in the same browser, the wristbands can get crossed. The browser hands a production wristband to your local app, your local app sees a valid-looking token and lets you in, and then half your API calls quietly fail because you&#8217;re authenticated against the wrong server. I spent an entire evening thinking my API was broken. It wasn&#8217;t. I was logged into the wrong universe.</p><p>None of these were the AI&#8217;s fault, exactly. They were design choices the AI made without flagging that they were choices. The only way I caught them was by reading the code it had written and asking &#8220;wait, why is it doing it this way?&#8221;</p><p><strong>You&#8217;ll learn the codebase that&#8217;s being created.</strong> This is the part I want every new programmer reading this to internalize. The codebase the AI is generating for you is, in a real sense, a free education. It is a working example of a real production system written in your stack, doing exactly the thing you wanted to build. Reading it, <em>actually reading it</em>, is one of the fastest ways to learn how software is built in 2026. </p><p><strong>The YouTubers who tell you that you don&#8217;t have to look at the code are robbing you of the single most valuable byproduct of working with AI tools. You can come out of a six-month build either with a working app and the same skills you started with, or with a working app and the skills of a mid-level engineer. The difference is whether you read what the machine is writing.</strong></p><p>You don&#8217;t need to memorize every line. You don&#8217;t need to write everything from scratch. But every few days, pick a file the AI just generated, open it, read it line by line, and ask the AI to explain anything you don&#8217;t understand. That habit alone will separate you from 90% of the people watching those tutorial videos. Even better, if you don&#8217;t feel like reading the whole damn thing, tell the AI to write solid comments for each class, API, etc. and summarize what each of those things do.<br><br>You can even highlight some of the code and write &#8220;Explain what this code snippet does and leave a comment explaining what it&#8217;s for&#8221;. Just by that alone it helps you and it helps the LLM from hallucinating because it will help with your judgement when you need to add future features or make changes to your app.</p><h3>7. Am I Willing to Learn All of This?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rAhm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rAhm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!rAhm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!rAhm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!rAhm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rAhm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2621006,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rAhm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!rAhm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!rAhm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!rAhm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ddbdd47-28b7-4ab1-84e4-f755f97c969d_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now the honest question. The one no salesperson asks.</p><p>If you&#8217;ve read this far and you&#8217;re thinking, &#8220;okay, this is more than I bargained for, I just wanted to build an app this weekend,&#8221; that&#8217;s a totally legitimate reaction, and it has two legitimate answers.</p><p>The first answer: <strong>scope down</strong>. Build the simplest version of the simplest possible thing. Use AI tools the way they actually work well, for prototypes, internal tools, things where it&#8217;s okay if it breaks. Have fun. Build something useful for yourself or for ten people. There&#8217;s nothing wrong with that, and the AI tools are a genuine miracle for that use case.</p><p>The second answer: <strong>hire someone who&#8217;s done this before</strong>. If your idea is real, if your validation is strong, if you genuinely need a production-grade product that handles real users and real data, AI coding tools will not get you there alone. They will get an experienced builder there faster, which is what they&#8217;re for. They are an accelerator for someone who already knows where they&#8217;re going. They are a very confusing GPS for someone who doesn&#8217;t.</p><p>There&#8217;s a third answer, which is the one I picked: <strong>commit to learning the craft</strong>. Use the AI as a tutor as much as a tool. Read the code it writes. Ask it to explain its decisions. Push back when something feels off. Sit with the discomfort of not understanding something and stay with it until you do. You will become a real engineer through this process, faster than any traditional path, <em>if</em> you treat the AI as an apprenticeship rather than a magic wand. But of course, I have decades of experience. And while that seems daunting it really isn&#8217;t, even for new people. AI bridges that gap between my decades of experience down to months &#8212; if you&#8217;re really willing to learn. </p><p>But you have to want it. Nobody can want it for you. And no YouTuber with a $499 masterclass is going to give it to you in a weekend.</p><h3>Dear YouTubers</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GHPy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GHPy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!GHPy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!GHPy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!GHPy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GHPy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2611709,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GHPy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!GHPy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!GHPy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!GHPy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f719df-2785-4832-961e-44d3bbdf9bb9_1254x1254.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You have the production value. You have the audience. You have the platform.</p><p>You also have, in many cases, a real talent for <em>presenting</em> things. You&#8217;re charismatic on camera. You&#8217;ve mastered the rhythm of a fifteen-minute video. Your thumbnails convert. Your motion graphics are clean. Your delivery is confident enough that a person who doesn&#8217;t know any better will trust whatever you say next.</p><p>You are using that skill to be opportunistic. Let&#8217;s not dance around it. The incentives in this space are too easy, the shortcuts are what people want to hear about, and the affiliate checks clear whether or not the audience builds anything real. You found the cheat code. Make a slick video. Pick whichever tool is paying out. Tell people they don&#8217;t need to learn to code. Slip the link in the description. Pitch the masterclass. Repeat.</p><p>Maybe some of you genuinely don&#8217;t know any better. Most of you do. And for the ones who do, who know full well that the audience walking away from your video is about to spend a year of their life building something that will collapse the first time it hits real users, what you&#8217;re doing is a kind of theft. Not of money, though there&#8217;s plenty of that too. Of time. </p><p><strong>But most of all &#8212; confidence.</strong> </p><p>Of the years a new programmer could have spent actually learning the craft if someone had been honest with them on the way in.</p><p>Cashing in is one thing but when you&#8217;re pretending to teach people how to build real things. But misleading others into thinking that the tool can take care of everything is the problem &#8212; no matter how nice the b-roll is. </p><p>The audience watching you is may or may not know what they&#8217;re getting themselves into. They&#8217;re mostly new. There&#8217;s a difference. Pull up the comments on any of those videos and you&#8217;ll see the other half of the story: a waterfall of people who genuinely don&#8217;t know what they&#8217;re looking at, agreeing with each other in real time, reinforcing the majority view, and walking away from the video knowing <em>less</em> than when they arrived because they&#8217;ve now had their bad assumptions validated by a thousand strangers. That&#8217;s the part that should bother you. Your comment sections are a feedback loop where ignorance gets louder, not corrected. You could fix that with a sentence or two of honesty in every video. Most of you choose not to.</p><p>The version of this content that would actually help them isn&#8217;t harder to make. It&#8217;s just less flattering to the tools. And maybe there&#8217;s a real fear in losing the affiliate contract. </p><p>But there&#8217;s a better way. Show the bugs. Show what happens when the AI generates the wrong architecture. Show the moment where you have to open the file yourself and fix a CSS class because the AI keeps rewriting the wrong component. Show what it looks like when the AI is wrong, and how you knew it was wrong. That&#8217;s the content people need. That&#8217;s the content that builds careers instead of selling courses.</p><p>You don&#8217;t have to stop using affiliate links. You don&#8217;t have to give up the production value or the thumbnails. You just have to tell the truth about what these tools actually are and what they actually require. And maybe you have to pick a different affiliate &#8212; once you realize which companies are the actual good ones.</p><p>There are people doing this right. Unfortunately, they are a dime a dozen but they&#8217;re definitely out there. You just have to look. </p><p>Please be one of them.</p><h3>And to the person reading this who's about to start building</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lek-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lek-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!Lek-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!Lek-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!Lek-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lek-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2138551,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/199485313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lek-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!Lek-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!Lek-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!Lek-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ecb10e9-7e29-4840-8de5-9cf61716f6a3_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can do this. You'll just find that there are videos that don't tell you the whole story about what it actually takes to build something real. But at least you have these things you&#8217;ve subscribed to. That said, there&#8217;s a good chunk of people out there who believe in the same thing. </p><p>Stay tuned. There&#8217;s a lot more to come if you&#8217;re interested in taking the dive.</p><div><hr></div><p><em>If this piece resonated, subscribe. I write about building BenchBoard in public, about what AI coding tools actually do well and where they actually fail, and about the gap between how this stuff is sold and how it actually works. Next up in the BenchBoard series: Part 4, where we talk about the day my printer died in the middle of a live game and I learned that hardware is software's most underrated dependency.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Mark Zuckerberg Thinks He Can Watch His Smart People, Then Replace Them. He's Wrong.]]></title><description><![CDATA[Meta is recording its engineers' keystrokes to train AI, then cutting 8,000 jobs. I build software with these tools every day. Those people are irreplaceable because the model can't do that one thing.]]></description><link>https://radicalinsider.org/p/mark-zuckerberg-thinks-he-can-watch</link><guid isPermaLink="false">https://radicalinsider.org/p/mark-zuckerberg-thinks-he-can-watch</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Wed, 20 May 2026 17:57:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZG0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZG0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZG0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZG0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZG0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZG0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZG0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4189170,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/198592513?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZG0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZG0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZG0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZG0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea521be6-de2b-4519-9dc4-25a0ecfd6ef1_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Data is people. That's the pitch, and also the problem.</figcaption></figure></div><p>On April 30, in a Meta all-hands, Mark Zuckerberg explained why the company had quietly installed software on employees&#8217; machines that captures their mouse movements, clicks, and keystrokes. The explanation leaked. Here&#8217;s the heart of it: the AI models learn from watching really smart people do things, and Meta&#8217;s people, he argued, are smarter than the contract workers the rest of the industry uses to train models. So watch the smart ones. Capture what they do. Feed it to the model.</p><p>Then, today, Meta is laying off roughly 8,000 people. About 10% of the company.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>You don&#8217;t need a decoder ring. Watch the smart people. Train the model. Cut the smart people. Whether or not Zuckerberg would phrase it that baldly, the timing phrases it for him.</p><p>I want to be fair about what he actually claimed, because the real argument is narrower than the headline, and it falls apart for a more interesting reason than most people think.</p><h3>What he actually said</h3><p>Strip the surveillance optics off it and Zuckerberg&#8217;s literal point is about data quality. His case is that Meta&#8217;s own engineers are a higher-quality data source than the contractors most companies pay to generate training examples. He framed Meta&#8217;s AI work as three things: research and architecture, infrastructure, and data. The keystroke tool feeds the third one. He also said no humans are reviewing individual employee activity, and that none of this is about surveillance or performance.</p><p>Fine. Let&#8217;s grant all of it. Let&#8217;s say Meta&#8217;s engineers are the best demonstration data on the planet. Better than contractors, better than an open-source scrape, better than anything anyone else can get their hands on.</p><p>It still doesn&#8217;t do what he thinks it does. And I know that because I spend every working day doing the exact thing he&#8217;s trying to record.</p><h3>The thing you can't capture</h3><p>I run a small software company. I&#8217;m building a live scorekeeping and team management app for youth baseball and softball coaches, and I write code with AI tools constantly. Claude Code, WindSurf, the whole kit. I am not an AI skeptic. The acceleration is real and I&#8217;ll defend it to anyone.</p><p>But here&#8217;s what a year of building with these tools has burned into me: an AI watching me work would learn the wrong thing.</p><p>A few months back I moved my entire stack off Microsoft Azure and onto Hetzner, a much cheaper European host. Before I pulled the trigger, I asked the AI what it thought. It argued against the move. It listed all the enterprise-grade reasons to stay: the compliance posture, the certifications, the managed services, the whole HIPAA-and-SOC-2 security blanket.</p><p>And it was wrong. Not because its facts were wrong, but because it had no idea what I was building. I&#8217;m running an app for volunteer coaches standing in 95-degree heat trying to swap two kids in the batting order before the umpire yells &#8220;play ball.&#8221; The enterprise compliance overhead Azure was charging me for was overhead I would never, ever use. The AI couldn&#8217;t see that, because &#8220;what is this product actually for&#8221; is not something you can read off my screen. I overruled it. The migration was the right call. Costs dropped, nothing broke.</p><p>Now picture Meta&#8217;s keystroke recorder pointed at me during that migration. It would have logged every command I typed, every config file, every terminal session. And it would have learned absolutely nothing about the decision, because the decision happened in my head, built on context the recorder cannot reach. The recorder captures what I did. It cannot capture why I did it, or why the obvious answer was the wrong one.</p><p>That&#8217;s the whole ballgame. You can record the work. You cannot record the judgment. And judgment is the thing you are paying smart people for.</p><p>I get the same lesson inside the code itself. The AI is a phenomenal implementer. Once I hand it an architecture, it&#8217;ll execute that design across a dozen files faster than I ever could. But it has never once handed me the architecture. It can&#8217;t. When my app had a nasty bug born from a bad early design choice, the AI&#8217;s instinct was to slap a patch on the symptom. I had to stop it and redesign the whole pipeline, because I&#8217;m the one who knows how coaches actually use the thing, what breaks when the cell signal drops, what happens when a kid shows up late wearing the same jersey number as the starting pitcher. The AI built my fix beautifully. It would never have designed it. (I&#8217;ve told that whole war story elsewhere, so I&#8217;ll spare you the schema diagrams.)</p><h3>Now multiply that by a company with tens of thousands of people</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yGmL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yGmL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 424w, https://substackcdn.com/image/fetch/$s_!yGmL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 848w, https://substackcdn.com/image/fetch/$s_!yGmL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 1272w, https://substackcdn.com/image/fetch/$s_!yGmL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yGmL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png" width="1409" height="1116" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1116,&quot;width&quot;:1409,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3551436,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/198592513?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yGmL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 424w, https://substackcdn.com/image/fetch/$s_!yGmL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 848w, https://substackcdn.com/image/fetch/$s_!yGmL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 1272w, https://substackcdn.com/image/fetch/$s_!yGmL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd50eff1-5466-48cb-84e6-cf98bc098752_1409x1116.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Plenty of data. Zero context. Notice who's actually shipping, and who's just standing there with a question mark.</figcaption></figure></div><h3><strong>Here&#8217;s where Zuckerberg&#8217;s plan goes from flawed to genuinely silly.</strong></h3><p>My company is small. The context the AI can&#8217;t see lives in exactly one head: mine. Now scale that up to Meta, a company with thousands of moving parts, hundreds of interlocking systems, decisions stacked on decisions made by people who&#8217;ve been there a decade.</p><p>A model watching a senior engineer&#8217;s screen sees the edits. It does not see the three years of tribal knowledge that make those edits correct. It does not know why a particular service is built the weird way it&#8217;s built, because the &#8220;why&#8221; is a hallway conversation from 2021 that nobody wrote down. It does not know which of the company&#8217;s forty competing priorities actually matters this quarter.</p><p>Ask the practical questions and the whole thing collapses. Does the model know what to deploy, and when? Does it know which project should be split across two teams and which one should be killed outright? Does it know the right moment to optimize a slow piece of code, or, the harder question, whether you should optimize it at all, instead of leaving it ugly and shipping the feature that&#8217;s actually on fire? Does it know the politics, the dependencies, the one customer who walks if this slips?</p><p>Is a model going to replace the person at Meta who&#8217;s been there ten years, knows four different domains, manages a team of engineers, and carries the entire unwritten history of why things are the way they are inside their head? No. It is not. You can record that person&#8217;s screen for a thousand hours and capture none of what makes them valuable, because almost none of it is on the screen.</p><p>How do you even get that context? You don't. That's the point. It isn't a data problem you solve with a better recorder. It is not in the data at all.</p><h3>Klarna already ran this experiment</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PXqG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PXqG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 424w, https://substackcdn.com/image/fetch/$s_!PXqG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 848w, https://substackcdn.com/image/fetch/$s_!PXqG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 1272w, https://substackcdn.com/image/fetch/$s_!PXqG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PXqG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3367178,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/198592513?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PXqG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 424w, https://substackcdn.com/image/fetch/$s_!PXqG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 848w, https://substackcdn.com/image/fetch/$s_!PXqG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 1272w, https://substackcdn.com/image/fetch/$s_!PXqG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa90c0bef-6261-4a3f-a53a-046ed10bb969_1537x1023.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ah. Yes. You remember this app. We use it when we get things we can&#8217;t afford. </figcaption></figure></div><p>This is not theoretical. Buried behind the noise of mainstream media and social networks, a company already did the full version of what Meta is flirting with, and it blew up in public. </p><p>Klarna, the Swedish &#8220;buy now, pay later&#8221; fintech, went all in. Starting in 2023 it replaced around 700 customer service workers with an OpenAI-powered assistant, froze hiring, and let its headcount fall by roughly 40%, from about 6,500 to 3,800. For a while the numbers looked incredible. The bot was handling two-thirds of all customer chats. CEO Sebastian Siemiatkowski was on every stage telling the world the future had arrived.</p><p>Then the future arrived. Service quality fell. Customers got frustrated. And by 2025 Siemiatkowski was admitting, out loud, that the company had gone too far, that the all-AI approach produced "lower quality" service, and that Klarna would start hiring humans back so customers always had the option to reach a real person. By 2026 the Klarna saga has become the canonical cautionary tale that executives now get asked to explain their way around. The research backs it up: one Orgvue/Forrester survey found that 55% of companies that rushed to replace workers with AI already regret it, because <strong>the savings on paper turned into churn, reputation damage, and the cost of unwinding the whole mess</strong>.</p><p>And here's the part Meta should sit with. Klarna was automating tier-one customer service. Routine, high-volume, mostly scripted work. Genuinely one of the easier things to automate, and it still got burned. Meta isn't pointing the recorder at tier-one anything. It's pointing it at the hardest, highest-judgment work in the building, the engineering, and betting it can capture that. If Klarna couldn't replace the easy stuff, what exactly makes Zuckerberg think he can replace the hard stuff?</p><h3>IBM did it right, and it proves the point</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R-LW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R-LW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 424w, https://substackcdn.com/image/fetch/$s_!R-LW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 848w, https://substackcdn.com/image/fetch/$s_!R-LW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 1272w, https://substackcdn.com/image/fetch/$s_!R-LW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R-LW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3744837,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/198592513?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R-LW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 424w, https://substackcdn.com/image/fetch/$s_!R-LW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 848w, https://substackcdn.com/image/fetch/$s_!R-LW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 1272w, https://substackcdn.com/image/fetch/$s_!R-LW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f18abb-c234-4983-be0e-7ebf83874be7_1537x1023.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Remember this company? Yup. They&#8217;re making pretty good moves as of late.</figcaption></figure></div><p>The cleanest counterexample comes from a company nobody would call AI-shy: IBM.</p><p>IBM also used AI to replace people. CEO Arvind Krishna said the company automated a couple hundred HR roles with an AI agent that now handles roughly 94% of routine HR tasks: pay statements, vacation requests, the paperwork. So far it sounds exactly like Meta.</p><p>Except IBM&#8217;s total headcount went up, not down. The money saved on the rote work got plowed into hiring more software engineers, salespeople, and marketers. Krishna drew the line himself, and it&#8217;s the line that matters: AI took over the &#8220;rote process work,&#8221; and IBM reinvested the savings into roles built on critical thinking, the jobs where people, in his words, &#8220;face up or against other humans.&#8221;</p><p>Read that next to what Meta is doing and the contrast is brutal. IBM automated the rote and grew the judgment. Meta is trying to harvest the judgment and cut the people who have it. One company used AI to delete the boring part of the job. The other is using it to try to delete the part that was never boring, and never recordable.</p><p>That&#8217;s exactly the split I see from where I sit. As a one-man shop, AI is a gift, precisely because it erases the tedious work I&#8217;d otherwise drown in: the boilerplate, the layout tweaks, the mechanical bug fixes. That&#8217;s the IBM move, scaled down to one guy with a laptop and a Substack. But the giants like Meta have something different. Their entire value is locked up in human context, and they&#8217;re aiming AI at the one asset that can&#8217;t be rebuilt from a log file.</p><h3>The part that makes it genuinely dumb</h3><p>Take Zuckerberg&#8217;s own premise seriously for one more second. If the models learn by watching smart people make smart decisions, then the smart people making smart decisions are the supply. They are the well. Every novel call a senior engineer makes today is potential training data for tomorrow.</p><p>So what happens when you fire them?</p><p>You freeze the model at yesterday&#8217;s ceiling. A model trained on the decisions of 2026 can imitate the decisions of 2026. It cannot make the right call on a problem that doesn&#8217;t exist yet, because the context that drives that call, the new product, the new constraint, the new mess, was never in the data. New problems demand new judgment, and new judgment comes from humans sitting in the new mess. Cut the humans and you stop refilling the well. You are eating your seed corn and calling it a harvest.</p><p>You cannot watch your way to a model that replaces the people you&#8217;re watching, because the moment they&#8217;re gone, there&#8217;s nobody left generating the thing you were copying.</p><h3>Why this earns backlash, not applause</h3><p>One last thing, and it&#8217;s the thing the spreadsheet never shows.</p><p>Smart engineers are not Excel users. They talk. They have options. They read the room. When you install software to record their keystrokes and then, weeks later, lay off 8,000 of their colleagues, the message lands with perfect clarity: we are studying you so we can need fewer of you. That is not a message that makes your best people work harder. It makes your best people, the exact ones with context worth capturing and r&#233;sum&#233;s worth shopping, leave first.</p><p>And we know they talk, because this entire story exists thanks to a leaked all-hands. You cannot quietly turn your workforce into training data. They notice. The market notices too. Klarna found out that customers can tell, and they walk. Meta is about to find out that engineers can tell, and they walk faster, and they take the context with them.</p><h3>Dear Mark</h3><p>You can record the work. You can&#8217;t record the judgment.</p><p>The keystrokes, the diffs, the clicks, all the stuff your software is busy capturing, that&#8217;s the visible layer. It&#8217;s the easy 10%. The other 90%, the part that decides whether the work was even right, lives in context the recorder will never reach: the why, the history, the customer, the call somebody makes at 11 PM because they actually understand the thing they built. That is what your smart people are for. That is the entire job.</p><p>Klarna learned it and reversed. IBM understood it from the start and grew. You&#8217;re on track to learn it the expensive way: 8,000 people carrying context out the door, and a model that got really, really good at imitating a version of your company that no longer exists.</p><p>The context is the job, Mark. And the day you fire the people who have it, you&#8217;ve capped your AI at the past.</p><h3>The story everyone is getting wrong</h3><p>One last point, and it&#8217;s bigger than Meta.</p><p>Credit where it&#8217;s due: More Perfect Union did real work dragging this leak into the light. Watching a billionaire explain, on tape, that he&#8217;s recording his own staff to train their replacements is exactly the kind of thing the public should see.</p><p>But scroll the comments under that clip, on any platform, and you&#8217;ll find the same verdict copy-pasted ten thousand times: &#8220;AI is going to replace us all.&#8221; That&#8217;s the conclusion people are taking away from it. And it&#8217;s wrong. Not naive, not Pollyanna. Just wrong, and the data says so.</p><p>Let me be straight, though, because the doomers aren&#8217;t hallucinating, and pretending they are is how you lose the argument. People are losing jobs. Meta cut 8,000 today. The entry-level software market is genuinely brutal right now: recent computer science grads are sitting around 6% unemployment, higher than philosophy or art history majors, and entry-level engineering postings have fallen off a cliff since 2023, with Stanford&#8217;s Digital Economy Lab putting the drop near 67%. New grads now make up a shrinking sliver of big-tech hiring. If you&#8217;re 22 with a fresh CS degree refreshing a job board, the fear is rational. I&#8217;m not going to tell you nobody&#8217;s being displaced.</p><p>I&#8217;m going to tell you the conclusion is backwards.</p><p>Because look at the same labor market one rung up. The Bureau of Labor Statistics projects software developer employment to grow 15% between 2024 and 2034, five times the average for every other occupation, with roughly 129,000 openings a year and median pay north of $130,000. And the BLS lists AI as one of the <em>drivers</em> of that growth, not a threat to it. The head of Code.org said it cleanly: AI isn&#8217;t killing computer science, it&#8217;s making it more essential.</p><p>Both things are true at the same time, and that&#8217;s the part nobody bothers to explain. The floor is collapsing while the ceiling keeps rising. AI is eating exactly the work I described earlier, the rote, the boilerplate, the mechanical first draft, which happens to be the work juniors used to cut their teeth on. What it is not touching is the judgment layer, which is why demand for experienced engineers keeps climbing even as the junior on-ramp narrows.</p><p>Which means the whole industry is doing, at scale, the same dumb thing Meta is doing in miniature. By automating away the bottom rung, we&#8217;re starving the pipeline that turns juniors into the senior engineers everyone agrees we&#8217;ll need more of. Same seed corn, bigger field.</p><p>That&#8217;s the story the media should be telling, and mostly isn&#8217;t, because &#8220;Zuckerberg surveils his own engineers&#8221; is a better headline than &#8220;here&#8217;s how to actually position yourself for the next decade.&#8221; The dunk gets the clicks. The useful version, the one that tells a scared 20-year-old that the opportunity is bigger than ever but the door moved, gets buried under outrage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LRdf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LRdf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!LRdf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!LRdf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!LRdf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LRdf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3513286,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.org/i/198592513?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LRdf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!LRdf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!LRdf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!LRdf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cfb8c-0723-423f-9999-7a00b2f2444e_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The real relationship: it helps you build. It doesn't get to decide what's worth building.</figcaption></figure></div><p>So here&#8217;s the useful version, plainly. If you&#8217;re steering away from tech because you think AI is going to take the job, you&#8217;ve got it backwards. The job isn&#8217;t going away. It&#8217;s moving up the stack, toward context, judgment, and decisions, the exact things this entire essay just spent two thousand words proving AI can&#8217;t do. The kids running to the trades aren&#8217;t wrong that the trades are durable and AI-resistant. They are. But running <em>away from tech</em> out of fear of replacement is solving the wrong problem.</p><p>The replacement was never coming for the people who can think. It was only ever coming for the typing.</p><div><hr></div><p><em>Sources: the leaked April 30 Meta all-hands as reported by The Week, India Today, and Investing.com, and surfaced by More Perfect Union; Meta&#8217;s May 20 layoffs (roughly 8,000 jobs, about 10% of staff); Klarna&#8217;s reversal via Bloomberg, Business Insider, CX Dive, and Siemiatkowski&#8217;s own public comments; the 55% regret figure via Orgvue/Forrester research; IBM&#8217;s HR automation and headcount figures via The Wall Street Journal and Arvind Krishna&#8217;s public statements; software developer growth projections, openings, and median pay via the U.S. Bureau of Labor Statistics; entry-level and recent-graduate figures via the Federal Reserve Bank of New York, Stanford&#8217;s Digital Economy Lab, and SignalFire; the Code.org comment via Fortune.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The AI Wrote the Code. I Still Had To Teach It Baseball.]]></title><description><![CDATA[Part 3 of 5: The BenchBoard Build &#8212; How I Bit Off More Than I Could Chew Building This SaaS Even With the "Best" LLMs]]></description><link>https://radicalinsider.org/p/the-ai-wrote-the-code-i-still-had</link><guid isPermaLink="false">https://radicalinsider.org/p/the-ai-wrote-the-code-i-still-had</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Sat, 25 Apr 2026 14:03:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XBy8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>This is Part 3 of a five-part series about building BenchBoard, a team management and live scorekeeping app for youth baseball and softball, with the help of AI tools. <a href="https://radicalinsider.substack.com/p/how-i-bit-off-more-than-i-could-chew">Part 1</a> covers the big-picture lessons of building with AI. <a href="https://radicalinsider.substack.com/p/the-architecture-the-ai-couldnt-see">Part 2</a> is the technical deep dive: the race condition, the three-tables-to-one refactor, the pipeline I designed after the AI&#8217;s fix wasn&#8217;t good enough. Start there if you want the full context.</em></p><p>So. </p><p>November was the month BenchBoard went into production.</p><p>Not &#8220;production&#8221; in the way people on Twitter mean it. Not a landing page with a Stripe checkout and a waitlist. Real production. A deployed app on Azure, behind authentication, with a database, a real-time communication layer, and actual functionality. Coaches could create teams, add players, drag them into batting orders and defensive positions, and see everything sync across devices.</p><p>I soft-launched it. No marketing. No ads. I put it out there and let search do its thing.</p><p>And people found it. Real coaches. Not friends I&#8217;d asked to test. Not developers giving polite feedback. Coaches who were actively looking for a tool to manage their youth baseball and softball teams, who found BenchBoard through Google, signed up, and started using it. Just a dozen of them.</p><p>That&#8217;s when I got the feedback that changed everything.</p><h3>&#8220;It&#8217;s a Nice Toy&#8221;</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!scuw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!scuw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 424w, https://substackcdn.com/image/fetch/$s_!scuw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 848w, https://substackcdn.com/image/fetch/$s_!scuw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 1272w, https://substackcdn.com/image/fetch/$s_!scuw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!scuw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png" width="1332" height="1181" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1181,&quot;width&quot;:1332,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2393318,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!scuw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 424w, https://substackcdn.com/image/fetch/$s_!scuw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 848w, https://substackcdn.com/image/fetch/$s_!scuw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 1272w, https://substackcdn.com/image/fetch/$s_!scuw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a7396a-5553-466b-8e01-9b4fbe98c0e5_1332x1181.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I&#8217;m paraphrasing, but that was the essence. The coaches who found BenchBoard liked the team management side. The drag-and-drop lineup builder, the roster, the field diagram. They could see the potential. A few of them told me it was the cleanest interface they&#8217;d found for organizing their team.</p><p>Then came the &#8220;but.&#8221;</p><p>&#8220;But I need data. I need to know who&#8217;s playing where and for how long. I need to track at-bats. I need pitch counts. I need to know if I&#8217;m giving my left fielder enough innings or if the same three kids are always pitching. I need this thing to help me make *decisions*, not just arrange a lineup card.&#8221;</p><p>That hit hard. Because they were right.</p><p>Without game data, BenchBoard was a pretty roster. A digital lineup card. Coaches don&#8217;t need help making a list. They need help managing a season. They need to know that Jennie has pitched 45 pitches this week and shouldn&#8217;t start again until Thursday. They need to know that the kid who&#8217;s been sitting on the bench for three innings is the same kid whose parents are starting to wonder if the coach plays favorites. They need the numbers. In youth sports, fairness isn&#8217;t optional. It&#8217;s the whole point.</p><p>And they couldn&#8217;t get those numbers from BenchBoard. </p><p>At least not yet.</p><h3>The Options I Explored (And Why They Failed)</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4SKC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4SKC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!4SKC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!4SKC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!4SKC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4SKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4SKC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!4SKC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!4SKC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!4SKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac62d28d-da4b-4530-9ecd-ca96e98b787d_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>My first instinct wasn&#8217;t to build scorekeeping from scratch. That sounded insane. Surely somebody else had solved this, and I could integrate with them. As I was doing research, I noticed there are a dozen solutions out there, but they need to be robust and most of all they need to be real-time. Out of the dozens available, it boiled down to two candidates.</p><p><strong>GameChanger</strong> was the obvious one. It&#8217;s the most widely used scorekeeping app in youth baseball and softball. If I could pull data from GameChanger into BenchBoard, I&#8217;d have instant access to pitch counts, at-bats, innings played. Everything the coaches were asking for.</p><p>One problem: GameChanger&#8217;s APIs aren&#8217;t public. There&#8217;s no integration path. You can&#8217;t programmatically access the data. It&#8217;s a walled garden. I poked around at some git repositories and noticed someone tried to scrape it and reverse-engineer their endpoints, but that&#8217;s fragile, probably against their terms of service, and not something I&#8217;d want to build a product on. That, and the fact that my two kids have their stats on there.</p><p><strong>iScore</strong> was another option. They&#8217;ve been around longer and they do have some data export capabilities. But when I dug into it, the data fidelity wasn&#8217;t there. The connectors didn&#8217;t provide the level of detail these coaches were asking for. No play-by-play granularity. No per-player breakdowns across multiple games. It would&#8217;ve been a compromise from day one.</p><p>I looked at a few others. None of them gave me what I needed: <strong>a reliable, real-time data pipeline</strong> that could feed directly into BenchBoard&#8217;s team management layer and produce the coaching analytics these coaches were describing.</p><p>Which left the one option I&#8217;d been avoiding.</p><p><strong>Build it myself.</strong></p><p></p><h3>Going Head-to-Head With GameChanger</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qgEd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qgEd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!qgEd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!qgEd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!qgEd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qgEd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2896735,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qgEd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!qgEd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!qgEd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!qgEd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b7eb0c-5d99-4716-8868-a024d256ba35_1672x941.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Before I could commit to that, I had to answer an uncomfortable question. Why would anyone use BenchBoard&#8217;s scorekeeping when GameChanger already exists?</p><p>GameChanger is the 800-pound gorilla in this space. They have the market. They have the brand. They have the streaming feature that parents pay for. And let me be honest: their scorekeeping is solid. They track pitches, at-bats, game events. Their live stream shows real data because a scorekeeper is feeding it in real time. They do a lot of things well.</p><p>So I wasn&#8217;t sitting here thinking I could out-GameChanger GameChanger on day one. That would be delusional.</p><p>What I *was* thinking about was the gap between what GameChanger tracks and what a coach actually needs to *manage their team*.</p><p>GameChanger records the game. It tells you what happened. Who got a hit, who struck out, what the score was. But it doesn&#8217;t provide reports on *coaching decisions*. It doesn&#8217;t provide insight that the coach moved their right fielder to pitcher in the third inning and that decision led to three consecutive walks. It doesn&#8217;t advise the coach that the same three kids have been sitting on the bench for two innings while the starters play every position. It doesn&#8217;t connect lineup management to game outcomes in a way that helps a coach answer the question: &#8220;Am I managing this team fairly, and are my decisions working?&#8221;</p><p>Or from a competitive standpoint, am I making the best decision for this situation? Could the San Francisco Giants use this? Oh the dream of it all. Would it be overkill? And to do this in real-time? That&#8217;s the goal.</p><p>That question matters differently depending on the league. In a rec league, fairness is everything. Every kid is supposed to get equal playing time, and parents notice when their child sits more than others. In a competitive league, it&#8217;s about development. At least for most travel teams. Is this kid getting the right mix of positions and at-bats to grow?</p><p>Either way, the data has to connect <strong>what the coach decided</strong> to <strong>what happened on the field</strong>. Hence the &#8220;Nice toy&#8221;.</p><p>Once in awhile a bit of doubt creeps in and says &#8220;would this ruin youth sports?&#8221; I guess that depends on every coach.</p><p>GameChanger doesn&#8217;t have that connection because it doesn&#8217;t manage the team. It scores the game. Those are different products.</p><p>BenchBoard manages both. The lineup builder, the roster, the drag-and-drop defensive positions - all of that feeds directly into the scorekeeping engine. When a coach makes a substitution mid-game, BenchBoard knows it was a coaching decision, not just a lineup change. When the scorekeeping data shows that substitution led to a scoreless inning, that&#8217;s actionable intelligence. When it shows a kid has only played two innings across three games, that&#8217;s an equity flag.</p><p>That realization was what moved me from &#8220;this is daunting&#8221; to &#8220;this is necessary.&#8221; If I build the scorekeeping engine right, tightly coupled to the team management layer, I&#8217;m not just catching up to GameChanger. I&#8217;d also make the real-time APIs public and consumable by other developers. If developers want to build a scoreboard in the middle of the field with my APIs, they can. I&#8217;m building something GameChanger&#8217;s team would have to fundamentally restructure to replicate. </p><h3>A Full-Blown App, Inside the App I Just Finished</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MN15!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MN15!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 424w, https://substackcdn.com/image/fetch/$s_!MN15!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 848w, https://substackcdn.com/image/fetch/$s_!MN15!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 1272w, https://substackcdn.com/image/fetch/$s_!MN15!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MN15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png" width="1456" height="823" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:823,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3088629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MN15!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 424w, https://substackcdn.com/image/fetch/$s_!MN15!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 848w, https://substackcdn.com/image/fetch/$s_!MN15!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 1272w, https://substackcdn.com/image/fetch/$s_!MN15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897425d4-6122-4a33-9133-b72bbb9cf6e5_1668x943.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I ended <a href="https://radicalinsider.substack.com/p/the-architecture-the-ai-couldnt-see">Part 2</a> by telling you the decision to build scorekeeping terrified me. Let me walk that back a little, because it&#8217;s not quite right.</p><p>With 30+ years of building software, code doesn&#8217;t scare me. I was shaking my head. Because I knew exactly what I was looking at. Building *another* app. Not a feature. Not an add-on. A full-blown *system of record* for live game data - even with AI agents behind me doing a good chunk of the work.</p><p>And if you know anything about building systems of record, you know they have to be robust and reliable from day one. You don&#8217;t get to ship a &#8220;pretty good&#8221; scorekeeping engine and iterate. If the data is wrong, coaches make wrong decisions. If it&#8217;s unreliable, nobody trusts it. If it drops a pitch or miscounts an at-bat, you&#8217;ve lost that user forever. The irony is that&#8217;s where the code stands now and scorekeeping is in Beta. Ok for scrimmages.  Not for tournaments or even Little League.</p><p>That&#8217;s a high bar for any project, let alone one you&#8217;re bolting onto an existing app that already took months to stabilize. The team management side of BenchBoard had just taught me how hard the &#8220;simple&#8221; part was. The three-table refactor. The race condition. The 36 migrations. The localStorage cross-contamination. All of that was the warm-up.</p><p>Now I was looking at scorekeeping. And I realized the coach&#8217;s feedback was mine too.</p><p>On one of my reporting pages, I have a feature called *Position Heat Maps*. Innings played at each position, rendered as a grid. The darker the cell, the more innings that player has played there. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iLrx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iLrx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 424w, https://substackcdn.com/image/fetch/$s_!iLrx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 848w, https://substackcdn.com/image/fetch/$s_!iLrx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 1272w, https://substackcdn.com/image/fetch/$s_!iLrx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iLrx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png" width="654" height="485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:485,&quot;width&quot;:654,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43397,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iLrx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 424w, https://substackcdn.com/image/fetch/$s_!iLrx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 848w, https://substackcdn.com/image/fetch/$s_!iLrx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 1272w, https://substackcdn.com/image/fetch/$s_!iLrx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F579bc5f9-de88-4dc8-8c57-dcaea99d4974_654x485.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s how a coach spots, in two seconds, that the same three kids have been pitching all season. That kind of visibility only exists if the underlying data exists. </p><p>Now check out this&#8230; </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MCRi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MCRi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 424w, https://substackcdn.com/image/fetch/$s_!MCRi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 848w, https://substackcdn.com/image/fetch/$s_!MCRi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 1272w, https://substackcdn.com/image/fetch/$s_!MCRi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MCRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png" width="825" height="554" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e13477fe-2b72-4877-888a-5690045a73d5_825x554.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:554,&quot;width&quot;:825,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69738,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MCRi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 424w, https://substackcdn.com/image/fetch/$s_!MCRi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 848w, https://substackcdn.com/image/fetch/$s_!MCRi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 1272w, https://substackcdn.com/image/fetch/$s_!MCRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13477fe-2b72-4877-888a-5690045a73d5_825x554.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This one shows the average batting order (AVG BO) of the player as well as the highest the player batted at on the batting list - vs the lowest (BO RANGE). As well as the rate of how often they start.</figcaption></figure></div><p>and this&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ImEj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ImEj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 424w, https://substackcdn.com/image/fetch/$s_!ImEj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 848w, https://substackcdn.com/image/fetch/$s_!ImEj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 1272w, https://substackcdn.com/image/fetch/$s_!ImEj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ImEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png" width="817" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4610c00a-0501-41de-bed8-676e9156d09e_817x445.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:817,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33397,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ImEj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 424w, https://substackcdn.com/image/fetch/$s_!ImEj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 848w, https://substackcdn.com/image/fetch/$s_!ImEj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 1272w, https://substackcdn.com/image/fetch/$s_!ImEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4610c00a-0501-41de-bed8-676e9156d09e_817x445.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>All nice ideas and cool to have but these along with other insights and reports are parked behind a door labeled &#8220;scorekeeping.&#8221; </p><p>No scorekeeping, no data. No data, no screens. I wasn&#8217;t just losing a few coaches who wanted pitch counts. I was losing the entire second half of the product I thought I was building.</p><p>So, yes. <strong>Another app inside my app.</strong></p><h3>&#8220;Build Me a Scorekeeping App for BenchBoard&#8221; Is Not a Prompt</h3><p>Here is where I have to pause and say something to the growing choir of voices claiming software engineers are about to be obsolete.</p><p>Open a fresh chat with whichever LLM you like. Type the prompt:</p><p>&gt; *Build me a scorekeeping app for BenchBoard.*</p><p>You will get code. Lots of it. It will compile. It will run. A demo will appear on your screen. You can tap a button and a &#8220;1&#8221; will increment somewhere. And that&#8217;s where the camera will stop.</p><p>Twitter will clip it. A YouTuber will make a 30 minute video from a 10 second clip and call it the end of the software engineering as we know it. Hell, pick almost any high skill profession that has a ton of logic gates to open through.</p><p>Now ship that to a youth coach in the middle of a real game and watch what happens. This is what the media does NOT show.</p><p>Because that prompt has no answer. There is no single prompt that produces a scorekeeping system. There is a <strong>tree</strong> of decisions, and every branch requires both knowledge of baseball and knowledge of how to build software, and those two things are almost never in the same person. </p><p><strong>That is the actual job.</strong> </p><p>That&#8217;s what has to exist in someone&#8217;s head, and that&#8217;s what the AI cannot do on its own.</p><p>Let me show you what I mean. I&#8217;ll pull from a single file in my codebase &#8212; the domain model. This is one C# file. It literally defines the <strong>shapes of things</strong> that scorekeeping has to be aware of (database schema for all you seasoned devs out there). It&#8217;s basically where the stats go. How many strikes are thrown. Etc. Nothing fancy. No logic. Just the list of entities that must exist for the system to function.</p><p>Quick normie translation. Entities are the boxes on your scorecard. Every little pre-printed rectangle with a label above it. &#8220;Pitcher.&#8221; &#8220;Batter.&#8221; &#8220;Inning.&#8221; &#8220;Out.&#8221; If your scorecard doesn&#8217;t have a box for a thing, that thing cannot exist in your world. You can&#8217;t write &#8220;guest player&#8221; on a scorecard that has no row for guest players &#8212; you&#8217;ll stuff them into the roster row, and now your roster is wrong for the rest of the season.</p><p>Entities are those boxes. A data model is just a scorecard for the computer. And if the scorecard is missing a box, the computer cannot remember what you didn&#8217;t give it a place to write down.</p><p>Here is an abbreviated tour:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Awx7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Awx7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Awx7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Awx7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Awx7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Awx7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2132480,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Awx7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Awx7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Awx7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Awx7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d442cf-39f3-478d-a7f9-8e1142e75197_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Yes. I know. To a normal person, this is a lot to take in. But to a seasoned developer this is nothing. But that&#8217;s one file. I have four others. Roughly 1,300 lines of model code in total, before a single line of business logic, frontend code, database migration, or SignalR wiring gets written. And none of those shapes were invented because a textbook told me to. Every single one exists because something in the real game forced it. In other words, a human did that. No AI decided that&#8217;s how the tables would look.</p><p>Take a look at one table (or entity) and see how deep it goes.</p><p><strong>GamePlayerStat.</strong> This is the per-game stats row. How many fields does it have? A little over fifty. <code>AB, H, R, RBI, BB, SO, HBP, SF, TB, Singles, Doubles, Triples, HR, PA, SH, IBB, SB, CS, GIDP, XBH, PickedOff, IP, ER, HRAllowed, BBAllowed, SOThrown, Pitches, Strikes, Balls, BF, H_Allowed, R_Allowed, WP, HB, BK, W, L, SV, BS, HLD, QS, GS, CG, SHO, PO, A, E, DRS, InningsByPosition, PositionInningsJson, DP, TP, PB, SB_Allowed, CS_Caught, RF&#8230;</code>* and I'm stopping because the list goes on.</p><p>Some of you who know baseball (or even softball) may know half of what some of these are &#8212; and we haven&#8217;t even begun to talk about how to manage users.</p><p>For the non-coders: picture the back of a baseball card. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uci2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uci2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 424w, https://substackcdn.com/image/fetch/$s_!uci2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 848w, https://substackcdn.com/image/fetch/$s_!uci2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!uci2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uci2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png" width="1456" height="1029" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1029,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2915650,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uci2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 424w, https://substackcdn.com/image/fetch/$s_!uci2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 848w, https://substackcdn.com/image/fetch/$s_!uci2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!uci2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64179aa3-a70d-4782-a042-feea44521d9c_1492x1054.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every tiny number crammed in microscopic font across the bottom. Batting average, on-base percentage, stolen bases, caught stealing, sacrifice flies. Now imagine a card like that for every kid, for every game, for every season, for every team he (or she) is in. That is what this row is. Fifty little boxes the app has to remember to fill in, or remember <em>not</em> to fill in, every single time somebody swings a bat or throws a pitch.</p><p>Now tell me where in the "build me a scorekeeping app" prompt the AI decides which of those fifty fields to include, which to skip for youth vs. college, which ones are derived from other fields, which ones are entered directly by the scorekeeper, and which ones only exist because <em>Range Factor</em> is a thing in advanced baseball analytics but not in a rec league. </p><p><strong>It doesn't.</strong> </p><p><strong>It </strong><em><strong>can't</strong></em><strong>.</strong> </p><p>Someone has to sit at a table with a coach wearing a developer hat and decide. This is one of just a million examples where the non-developer has to sit down and decide where things go, how things should operate, how things should display. In fact, I&#8217;ve seen some examples online that are just simply broken. And we&#8217;re not even talking about how we deploy this damn thing or what devices it should be on, or even how it should look on each of those devices.</p><p>Then there&#8217;s the actual architecture of the system itself. </p><p>The <a href="https://learn.microsoft.com/en-us/aspnet/signalr/overview/getting-started/introduction-to-signalr">SignalR</a> hub and its scoping rules. The master orchestrator pipeline that hydrates game state from the event log on reconnect &#8212; basically when devices are disconnected, devices wait until it&#8217;s online THEN sends the updates to the internet fot safekeeping. The thirty-plus database migrations to get here. The SolidJS frontend stores, their persistence, their cross-environment token isolation. The SMS pipeline with its invite tokens and delivery status &#8212; which is basically texting a phone and letting you know it made it via &#8220;Read&#8221;. The admin dashboard. The Stripe linkage to get customers to pay for stuff like a subscription. The MFA flows for both users and admins to keep things secure. The incident tracking. The feature flag system. The <code>SkillTemplate</code> catalog. The Settings table keyed by entity type. The list goes on.</p><p>All of that was in my head, on my whiteboard, in my notes, or in someone&#8217;s war story from a real game. None of it came from a single prompt. </p><p><strong>None of it </strong><em><strong>could</strong></em><strong>.</strong></p><p>And that&#8217;s just a taste of some of the backend stuff.</p><h4>Why AI&#8217;s Suck Without Humans (which maybe my next headline)</h4><p>This is the part where I not only still had to teach it baseball/softball but how to build things the right way.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XBy8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XBy8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!XBy8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!XBy8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!XBy8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XBy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3281561,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/195262049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XBy8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!XBy8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!XBy8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!XBy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f52ed8f-bbce-49e6-ade8-a72b3232942d_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI needs humans to make stuff - even teach it baseball</figcaption></figure></div><h3>Why This Takes Both</h3><p>There is a loud narrative right now that software engineers are being automated out of a job. That the LLM is the new senior engineer and the rest of us are just typing slower versions of what it already knows. I have been doing this for thirty plus years. I have not been more convinced than I am right now that the opposite is true.</p><p>Here is how this actually breaks down.</p><p>The AI is excellent at the <em>inside</em> of a file. Give it a clear shape, a clear responsibility, and it will fill in methods, handle null checks, write test scaffolding, and clean up types faster than I can. It is a phenomenal accelerator for the parts of software engineering that are already understood. Part 2 of this series has more examples of that working for me.</p><p>But the AI is a tourist at the <em>outside</em> of the file. It does not know which entities should exist. It does not know whether a concept deserves a table, a JSON blob inside a table, an enum, a view, or a nothing. It does not know whether two things that look similar in a schema diagram are actually the same thing or are about to diverge violently in six months. It does not know what a coach will actually look at on game day, which means it cannot tell you what data has to be ready for that screen.</p><p>And it does not know what is <em>missing</em>. That&#8217;s the one that gets you. The AI will happily build what you ask for. It will not tell you that you forgot about walk-ups, fractional innings, pitch clock violations, dropped third strikes, passed balls, guest players with duplicate jersey numbers, or the difference between an opponent team and a registered team. Those gaps don&#8217;t show up until a real coach is standing in a real dugout and something happens that your schema can&#8217;t hold. </p><p>This is where knowing the lay of the land as a coach and a software engineer gives you a unique perspective. You understand the scope of the problem, its impact, and what it means to have a system that actually works. It&#8217;s like being the head chef in a kitchen. You know the equipment. You know the recipe. You know what your customers want and what tastes good <em>to them</em>. Only you can take your squad, agentic or not, to the right place.</p><p>The AI is the line cook. A very fast, very tireless, never-complains line cook. It is not the head chef.</p><h3>Software Engineers Aren't Obsolete. They're the Job.</h3><p>I&#8217;ll leave you with this.</p><p>The part of my build that the AI accelerated the most &#8212; the methods, the controllers, the scaffolding, the boilerplate, the CSS &#8212; is the part that was already solved by somebody in the training data. I got a real speedup there. It was worth every token.</p><p>The part that the AI could not do, would not do, did not even know needed to be done, is the part that separates a demo from a system of record. The shape of the data. The choice of what to cache and what to derive. The list of domain rules you will be punished for violating. The judgment about which textbook answer is wrong <em>in this specific case</em>. The willingness to throw out the first version because you can smell the drift coming from three months down the road.</p><p>That is software engineering. Not typing. Not syntax. Not reading a doc and producing a function. It is the accumulated muscle of having been wrong before, in ways you remember, about systems that mattered. And then, on top of all of that, knowing the domain well enough to build for it.</p><p>One of the reasons I&#8217;m writing this series is that I&#8217;m watching a narrative build in public &#8212; in podcasts, on X, in press releases &#8212; that says this profession is ending. </p><p><strong>I&#8217;m telling you, from inside a build, that it is the opposite. The AI raised the ceiling on what one person can ship. It did not remove the need for someone to know what to ship. The gap between &#8220;working demo&#8221; and &#8220;thing a coach will trust with their kid&#8217;s pitch count&#8221; is exactly the gap between someone who has never been in a dugout and someone who has.</strong></p><p><strong>Scorekeeping wasn&#8217;t the hard part because it was complex code. It was the hard part because every choice had a rule behind it that lived in someone&#8217;s head, and that someone had to sit in the same chair as the developer.</strong></p><p><strong>I know that&#8217;s overwhelming for a single person. It is. It has been.</strong></p><p><strong>But it is also why this is still a job.</strong></p><h2>One Last Thing</h2><p>Near the beginning of the current AI wave, one of the smartest and most influential computer scientists alive &#8212; one of the actual fathers of modern deep learning, a Turing Award winner, somebody whose ideas the entire current boom is built on top of &#8212; stood in front of a conference and said this:<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FgLs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FgLs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!FgLs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!FgLs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!FgLs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FgLs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FgLs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!FgLs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!FgLs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!FgLs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81325163-61d4-458b-88eb-ebc107d3f78a_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Sketch of Geoffrey Hinton</figcaption></figure></div><blockquote><p><em>&#8220;I think that if you work as a radiologist you&#8217;re like the coyote that&#8217;s already over the edge of the cliff but hasn&#8217;t yet looked down... People should stop training radiologists now. It&#8217;s just completely obvious that within five years, deep learning is going to do better than radiologists.&#8221;</em></p></blockquote><p>That was Geoffrey Hinton. In 2016.</p><p>Five years came and went. Ten is almost up. Radiologists are still radiologists. There are <em>more</em> of them today than there were the day he said it, and they are working alongside AI tools that make them faster and better, not unemployed. The prediction was confident. It was mathematically reasoned. It was delivered by somebody with more authority than anyone writing the same sentence today about software engineers.</p><p>And it was wrong.</p><p>So when you see the same confident tone, the same &#8220;ten years&#8221; timeline, the same &#8220;the profession is ending&#8221; chorus pointed at my line of work &#8212; I want you to scroll back up. Read about fractional innings. Read about the three-ring binder. Read about the empty chair and the photograph that can&#8217;t update its own hair. Read about the 9-pane window drawn over home plate, and the mailbox full of envelopes that all look the same until you know who sent them.</p><p>Then ask yourself whether a prompt is going to figure any of that out.</p><p>I&#8217;ll see you in Part 4. Thanks for reading.</p><h2>Coming Up in Part 4</h2><p>Part 3 was the <em>shape</em> of the problem. Part 4 is what happens when you try to make the shape actually run in a real game on a real field with a real network.</p><p>I&#8217;ll get into the implementation stories that followed. The cache-vs-view decision that kept the ball-and-strike count from lying to a dugout. The guest player with the duplicate jersey number who would have silently corrupted the stats table if I&#8217;d matched the textbook way. The real-time communication pipes that let a scorekeeper&#8217;s tap become a scoreboard update for a parent in the parking lot. The race condition I hunted down where <code>End Inning</code> kept putting phantom runners on second base. The decision to stop broadcasting by team and start broadcasting by game &#8212; which the AI called &#8220;architecturally correct&#8221; once I handed it the answer, but would not have volunteered. And the master orchestrator pipeline I had to design when the AI&#8217;s first fix for a different bug kept re-introducing the bug I&#8217;d just fixed.</p><p>Part 5 brings it home: what I've learned about shipping with AI, what I've stopped doing, what I've started doing, and the single question I now ask before I accept any prompt's output.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Dear Xbox Fans: Satya Nadella Just Doesn't Give a Damn About Games]]></title><description><![CDATA[He hired a platform architect to fix a cultural crisis. The financial data explains why, and why that thinking will kill the brand.]]></description><link>https://radicalinsider.org/p/dear-xbox-fans-satya-nadella-just</link><guid isPermaLink="false">https://radicalinsider.org/p/dear-xbox-fans-satya-nadella-just</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Mon, 30 Mar 2026 06:33:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QKc6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QKc6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QKc6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!QKc6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!QKc6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!QKc6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QKc6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QKc6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!QKc6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!QKc6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!QKc6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4087fb2c-f974-49ee-8055-e7420ada93d0_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The current gaming scene - in sketch</figcaption></figure></div><p>On February 20, 2026, in the middle of Xbox&#8217;s 25th anniversary year, a year that was supposed to signal renewal, Microsoft announced that Phil Spencer was retiring after 38 years at the company. In the same breath, Xbox president Sarah Bond resigned. And Asha Sharma, a senior executive from Microsoft&#8217;s CoreAI division who had never worked a day in gaming, was named EVP and CEO of Microsoft Gaming.</p><p>Just like that, the two most prominent faces of Xbox were gone. Replaced by someone most gamers had never heard of.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C7pt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C7pt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!C7pt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!C7pt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!C7pt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C7pt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3514684,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/192580784?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C7pt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!C7pt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!C7pt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!C7pt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc255bcd2-40f3-4557-8fb2-989a15065a46_1536x1024.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The reaction was immediate and loud: <em>Who is this person? Why her? Does anyone at Microsoft actually care about games anymore?</em></p><p>Five weeks later, the jury is still out on Sharma. But the verdict on Microsoft&#8217;s understanding of gaming came in a long time ago. And the evidence is damning.</p><div><hr></div><h2>Follow the Money</h2><p>Before we talk about leadership, culture, or strategy, look at the numbers. Because the numbers explain everything.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jXOu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jXOu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 424w, https://substackcdn.com/image/fetch/$s_!jXOu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 848w, https://substackcdn.com/image/fetch/$s_!jXOu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!jXOu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jXOu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png" width="1456" height="1287" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1287,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154336,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/192580784?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jXOu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 424w, https://substackcdn.com/image/fetch/$s_!jXOu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 848w, https://substackcdn.com/image/fetch/$s_!jXOu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!jXOu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d5ee02-44b7-4bdb-a95a-c8588264ba55_1572x1390.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Microsoft does not report Xbox as a standalone audited revenue segment. It buries gaming inside a bucket called &#8220;More Personal Computing,&#8221; alongside Windows, devices, and search advertising. That&#8217;s the first tell. But based on Microsoft&#8217;s own FY2025 disclosures (gaming revenue up $2.0 billion (9%), Windows and Devices up $288 million (2%), Search and News Ads up $1.6 billion (13%), you can back into a defensible estimate of what the Gaming/Xbox slice actually looks like.</p><p>It&#8217;s roughly $25.1 billion. Out of $281.7 billion in total Microsoft revenue.</p><p>That&#8217;s 8.9%.</p><p>Look at the pie. Productivity &amp; Business Processes (Office, LinkedIn, Dynamics) takes up 42.9% at $120.8 billion. Intelligent Cloud (Azure and the server empire) takes up 37.7% at $106.3 billion. Together, those two segments account for over 80% of Microsoft&#8217;s revenue. Gaming is the small green wedge jammed into the corner.</p><p>And even that $25.1 billion is misleading if you think of it as &#8220;Xbox.&#8221; It includes Xbox content and services (Game Pass, digital sales, Activision Blizzard revenue), Xbox hardware, and everything Microsoft acquired when it spent $68.7 billion buying Activision Blizzard and $7.5 billion on ZeniMax. Xbox hardware revenue <em>fell 25%</em> in FY2025. The growth came from content and services: software, subscriptions, and the games that came with the acquisitions. The console business itself is shrinking inside an already small slice.</p><p>When Satya Nadella looks at this pie chart, he doesn&#8217;t see a gaming empire. He sees a rounding error next to Azure. He sees 8.9% of revenue that should be optimized, scaled, and squeezed for more margin, the same way he&#8217;d think about any underperforming division.</p><p>And that&#8217;s exactly what he did.</p><div><hr></div><h2>The 30% Mandate</h2><p>In October 2025, Bloomberg&#8217;s Jason Schreier and Dina Bass reported what many inside Microsoft already knew: CFO Amy Hood had imposed an across-the-board goal of 30% &#8220;accountability margins&#8221; on the Xbox gaming division, which is Microsoft&#8217;s internal term for profit margins. The target was set in fall 2023, and Hood&#8217;s finance team had been taking a larger role in the gaming business ever since.</p><p>Let that number sit for a second. Thirty percent.</p><p>The gaming industry typically operates at 17% to 22% margins. Even PlayStation, the dominant force in gaming, with $30 billion in FY24 revenue and more than double Xbox&#8217;s install base, hasn&#8217;t hit a profit margin above 13% in nine years. An S&amp;P Global analyst called the 30% target the &#8220;outer range of what a gaming studio can typically reach in a boom year&#8221; and noted that margins like that are &#8220;usually reserved for a publisher that is really nailing it.&#8221;</p><p>Xbox was not nailing it. In the first nine months of FY2022, Xbox&#8217;s accountability margin was 12%. Microsoft was demanding they nearly triple it.</p><p>Before this mandate, Xbox developers weren&#8217;t asked to hit specific financial targets. They were told to focus on making the best games possible without worrying too much about finances. That philosophy, make great games and the business will follow, is the same philosophy that built every iconic gaming brand in history. It&#8217;s the philosophy PlayStation operates on today.</p><p>Microsoft replaced it with a spreadsheet.</p><p>And the results were immediate and devastating.</p><div><hr></div><h2>The Layoff Machine</h2><p>On July 2, 2025, Microsoft gutted its gaming studios in a single day. Raven Software: 20 jobs. Blizzard Entertainment: roughly 100. The Initiative: around 50. Turn10 Studios: roughly 70. ZeniMax Online: 164. King: 200. Halo Studio and Bethesda Softworks: unknown numbers. All Microsoft-owned. All on the same day.</p><p>This wasn&#8217;t the first round. Microsoft had already cut thousands of gaming jobs across 2024. But the July 2025 cuts hit different, because of who they hit, and what Phil Spencer said about it.</p><p>Spencer sent an email to all Microsoft Gaming employees that day. Windows Central obtained it. Here&#8217;s the key line: &#8220;I recognize that these changes come at a time when we have more players, games, and gaming hours than ever before. Our platform, hardware, and game roadmap have never looked stronger. The success we&#8217;re seeing currently is based on tough decisions we&#8217;ve made previously.&#8221;</p><p>Read that again. <em>The success we&#8217;re seeing is based on tough decisions we&#8217;ve made previously.</em> He&#8217;s celebrating growth metrics (the same inflated &#8220;500 million monthly active users&#8221; number) while announcing mass layoffs to the people who created that growth. More players, more games, more hours. And the reward is a pink slip.</p><p>The ZeniMax Online story is the one that should haunt Microsoft&#8217;s leadership.</p><p>Employees at ZeniMax Online Studios had been working on an MMO codenamed Project Blackbird. According to TrueAchievements, as late as October 2024, eight months before the layoffs, the team had taken a demo build to Microsoft&#8217;s Redmond headquarters. The response from leadership was positive. Sources said the team saw &#8220;good things coming out of that,&#8221; and Microsoft was impressed with the game.</p><p>Eight months later, the project was canceled and 164 people lost their jobs. No warning. No indication the game was in trouble. Leadership liked what they saw in October. The 30% margin target killed it in July.</p><p>This is what happens when you run a creative industry on spreadsheet logic. You greenlight a game. The developers pour years of their lives into it. They demo it for you. You&#8217;re impressed. And then a CFO who has never played a video game in her life looks at the accountability margin projection and cancels the project, because a game that might be great isn&#8217;t guaranteed to be profitable enough to satisfy a target that no company in the industry can consistently hit.</p><div><hr></div><h2>The Price of Extraction</h2><p>The 30% mandate didn&#8217;t just kill studios. It raised prices everywhere.</p><p>Game Pass Ultimate went from $20 to $30 a month, a 50% hike. Game Pass tiers were restructured in ways that made the service feel less like &#8220;the best deal in gaming&#8221; and more like a cable package designed to confuse you into overpaying.</p><p>Xbox consoles got price hikes. And in October 2025, The Verge reported that Xbox dev kits (the hardware that game developers need to build Xbox games) jumped from $1,500 to $2,000, a 33% increase. Microsoft&#8217;s justification? &#8220;The adjustment reflects macroeconomic developments.&#8221; That&#8217;s it. That&#8217;s the explanation. Macroeconomic developments. I want you to imagine someone at Microsoft typing that sentence into a press release with a straight face. I want you to imagine it being reviewed by a communications team, approved by a manager, and published, and at no point did anyone in the room say, &#8220;Hey, do we maybe want to explain why we&#8217;re charging game developers more money to build games for a platform that&#8217;s losing market share?&#8221;</p><p>Developers scoffed. And they scoffed because what Microsoft is doing is so cosmically, hilariously out of touch that it would be funny if it weren&#8217;t real.</p><p>Let me paint you a picture of the competitive landscape so you can understand just how absurd this is.</p><p>Unreal Engine 5, the engine powering some of the most visually ambitious games on the planet, the engine behind Fortnite, the tool that nearly 28% of all Steam games are built on, is completely free. Free to download. Free to use. Full source code access included. A developer doesn&#8217;t pay Epic Games a single cent until their game earns over $1 million in revenue, at which point a 5% royalty kicks in. That&#8217;s it. You can build a AAA-quality game from scratch, ship it to the world, and owe Epic absolutely nothing unless you&#8217;ve already made a million dollars. The price of admission to the most powerful game engine on Earth is zero.</p><p>Unity, the engine behind over 51% of all Steam releases, the engine that powers more games than any other on the planet, offers its full Personal tier for free to any studio making under $200,000 a year. Unity even tried to squeeze developers once with a controversial Runtime Fee in 2023. You know what happened? The indie community revolted overnight. Developers threatened to leave. Stock price cratered. Unity backed down, canceled the fee, and went crawling back to its subscription model. The lesson was loud and clear: you do not charge game developers to build games. The entire industry watched that play out in real time.</p><p>Apparently, nobody at Microsoft was watching.</p><p>Between them, Unreal and Unity power roughly 80% of all games released on Steam. Eighty percent. Their business model is built on the simplest premise in platform economics: make the tools free, lower every barrier to entry, and build an ecosystem so large and so loyal that success becomes self-sustaining. You don&#8217;t charge developers to build for your platform. You <em>incentivize</em> them. You make it so easy, so frictionless, and so economically rational to build on your tools that developers would feel stupid going anywhere else.</p><p>And then there&#8217;s Microsoft, standing on the other side of the room, hiking dev kit prices by 33% and blaming &#8220;macroeconomic developments.&#8221;</p><p>I genuinely struggle to imagine the boardroom conversation where this decision was made. Picture it: a room full of executives at one of the most powerful technology companies in the history of the world. A company with $281 billion in annual revenue. A company that just spent $76 billion acquiring game studios. And someone in that room, someone with a title and a salary and presumably a college education, raised their hand and said, &#8220;What if we charged game developers <em>more</em> to build games for the platform we&#8217;re desperately trying to save?&#8221; And the rest of the room said yes. They said yes to that. Someone took notes. Someone drafted a memo. Someone told The Verge it was about macroeconomic developments. And nobody, not one person in the entire decision chain, said, &#8220;Wait. Unreal is free. Unity is free. Eighty percent of the industry builds on free tools. Are we sure we want to be the ones charging more?&#8221;</p><p>This is the kind of decision that makes you wonder if anyone at Microsoft Gaming has ever actually talked to an indie developer. Or visited a game jam. Or looked at what it costs to ship a game on literally any other platform in 2026.</p><p>There was a time when Microsoft understood this. There&#8217;s a famous video of Steve Ballmer, drenched in sweat, bouncing across a stage like a man possessed, screaming &#8220;Developers! Developers! Developers! Developers!&#8221; at a Microsoft conference. It became a meme, but the philosophy behind it was dead serious. Microsoft&#8217;s entire empire was built on making developers feel like the most important people in the room. Windows won because developers built for Windows. Xbox won the 360 generation in part because Microsoft made it easier and cheaper to develop for Xbox than for PlayStation 3. The developer relationship wasn&#8217;t a nice-to-have. It was the strategy.</p><p>That philosophy is dead. Buried under a CFO&#8217;s margin target and a $500 dev kit price hike that tells every independent game developer in the world: we don&#8217;t need you as much as you need us.</p><p>Except they do. That&#8217;s the part that makes this go from laughable to tragic. Microsoft needs developers more than developers need Xbox. In 2026, a game studio can ship on Steam, PlayStation, Nintendo Switch 2, and mobile, and skip Xbox entirely, without losing a minute of sleep. The power has shifted. Developers have options. Microsoft is acting like it&#8217;s still 2008 and the 360 is king.</p><p>It&#8217;s not. And every dev kit price hike, every Game Pass increase, every studio closure makes it easier, not harder, for developers to walk away.</p><p>Every one of these decisions traces back to the same root: a profit margin target that has no business being applied to a gaming division, imposed by financial leadership that either doesn&#8217;t understand how the gaming industry works, or understands perfectly and simply doesn&#8217;t care.</p><div><hr></div><h2>The AI Connection</h2><p>Here&#8217;s the part that ties it all together.</p><p>The 30% accountability margin was imposed in fall 2023. What else happened in fall 2023? Microsoft was in the middle of the most aggressive AI investment spree in corporate history. Billions into OpenAI. Copilot being jammed into every Microsoft product. The CoreAI division (the one Asha Sharma would later run) being stood up as a major new business unit.</p><p>Microsoft Research published a year-end recap in December 2023 titled &#8220;A Year of Groundbreaking AI Advances and Discoveries.&#8221; This was the company&#8217;s priority. This was where the money and attention were going. AI was the future, and every other division needed to justify its existence on the balance sheet, or be squeezed to fund the bet.</p><p>Xbox wasn&#8217;t squeezed because it was failing. Xbox was squeezed because AI needed to be fed.</p><p>And here&#8217;s the irony. I say this as someone who uses AI tools every day. I&#8217;m building a SaaS product right now with the help of Claude and other LLMs, and the acceleration is real. AI has genuinely helped me build things I couldn&#8217;t have built alone. But the fact that AI is a powerful tool doesn&#8217;t mean every division of a company should be sacrificed at its altar. You can acknowledge that AI is transformative without accepting that it justifies gutting a creative industry to pay for it.</p><p>The gamers who are angry about this aren&#8217;t anti-technology. They&#8217;re anti-extraction. They can see what happened: Microsoft bought $76 billion worth of gaming studios, imposed a profit margin that no gaming company can sustain, used the shortfall as justification to cut jobs and raise prices, and redirected the financial energy of the company toward AI, while hiring an AI executive to run the gaming division.</p><p>That&#8217;s not a gaming strategy. That&#8217;s an asset strip.</p><div><hr></div><h2>The Exodus, and Why Sarah Bond Mattered More Than Microsoft Realized</h2><p>Now the leadership departures make sense. But to understand why the Xbox community felt the ground shift in February 2026, you have to understand what Sarah Bond actually represented. Not just as a title on an org chart, but as a signal to the people who built, played, and believed in Xbox.</p><p>Phil Spencer had been at Microsoft for 38 years. He&#8217;d run gaming for 12 of them. He watched the 30% mandate descend on his studios. He watched the layoffs. He signed the emails. Whether he agreed with the financial pressure or simply couldn&#8217;t stop it, he was done. He told Nadella in the fall of 2025 that he was planning to step back. His retirement was announced in February 2026.</p><p>Spencer&#8217;s departure, while surprising in its timing, was at least legible. A veteran stepping back after nearly four decades. Fair enough.</p><p>Bond&#8217;s exit was different, and it sent shockwaves through the entire ecosystem.</p><p>Bond joined Microsoft in 2017, overseeing gaming business partnerships. She came from McKinsey and T-Mobile, the world of strategic operations, not game development. But she became something that mattered enormously to the Xbox ecosystem: the person who connected the business to the developers. She brokered partnerships. She expanded Game Pass into the subscription juggernaut it became, a service that hit $5 billion in annual revenue under her leadership. She drove the cloud gaming expansion that let console owners play on phones and tablets. She launched the ROG Xbox Ally handheld partnership with ASUS. She set up a dedicated team for backward compatibility and game preservation, future-proofing digital libraries across hardware generations. She led the integration of Activision Blizzard&#8217;s massive portfolio into the Xbox ecosystem after the $68.7 billion acquisition.</p><p>When Bond was promoted to president of Xbox in October 2023, it felt like succession planning in motion. Spencer was the visionary. Bond was the operator who made the vision real. She reported directly to him, and everyone inside and outside the company assumed she&#8217;d eventually take his job.</p><p>She was also the first Black woman to serve as president of Xbox, a Yale and Harvard Business School graduate who championed diversity initiatives, served as executive sponsor of the Blacks @ Microsoft employee resource group, and worked to bring more BIPOC creators into game development. In an industry where only 2% of creators have historically been Black, that representation mattered. It was a statement about what Xbox valued.</p><p>For the developer community inside Microsoft&#8217;s gaming division, Bond was the connective tissue. She sat between the studios and the business side, someone who understood what the developers were building and could translate it into language that the finance team and the executive layer would support. In a company as large as Microsoft, that kind of bridge is irreplaceable. Studios don&#8217;t just need someone who approves budgets. They need someone who <em>advocates</em> for them, someone who can walk into a meeting with the CFO and argue that a game needs another year, or that a risky creative bet is worth funding even if the margin projections don&#8217;t look perfect on a spreadsheet.</p><p>So Bond&#8217;s departure carries a painful duality. She did things that mattered enormously: Game Pass, cloud gaming, backward compatibility, developer partnerships, the Activision integration, representation in leadership. And she also did things that damaged the brand.</p><p>According to The Information, Bond was the architect behind the &#8220;This is an Xbox&#8221; marketing campaign, the one that told consumers any device with a screen could be an Xbox. After the previous head of marketing left, the marketing teams reported directly to her. The campaign was her vision, and it was deeply unpopular, not just with fans but with internal staff who felt it actively undermined the console they were building. One employee described her management style as rigid: &#8220;If you didn&#8217;t follow the vision or questioned it, you were out.&#8221;</p><p>There was also the larger strategic tension. Phil Spencer had directed the effort to decouple Microsoft&#8217;s dependency on Xbox consoles, to turn Xbox from a hardware brand into a platform and services ecosystem. Bond was the primary executor of that strategy. She pushed Game Pass as the center of gravity, drove the multiplatform expansion, and worked to turn every screen into an Xbox. In one sense, she was doing exactly what Microsoft&#8217;s leadership asked her to do. In another, she was systematically dismantling the thing that made Xbox fans loyal in the first place.</p><p>But here&#8217;s why her resignation, combined with Spencer&#8217;s retirement, on the same day, sent a signal that reverberated far beyond Redmond.</p><p>For the studios inside Microsoft Gaming, losing both leaders simultaneously meant that the last two executives who had any relationship with the development teams were gone. These were the people who had visited studios, who had seen demos, who had context for what each team was building and why it mattered. Asha Sharma had none of that context. She came from CoreAI. She&#8217;d never reviewed a game milestone, never approved a greenlight, never argued for a studio&#8217;s budget in front of the CFO.</p><p>Developers inside Microsoft weren&#8217;t just losing leaders. They were losing their advocates. In a division already reeling from mass layoffs, studio closures, and a 30% margin mandate that had killed projects leadership praised, losing the last people who could fight for them felt like the final signal. The message was clear: the people who understood what you do, who could translate your work into terms the business side respected, who could protect you from the spreadsheet, they&#8217;re gone. And the person replacing them has never shipped a game.</p><p>For the Xbox gaming community, the signal was equally devastating, even if it arrived differently.</p><p>Xbox gamers are loyal in a way that most consumers aren&#8217;t. They don&#8217;t just buy a console. They join a tribe. They defend Xbox in comment sections, on Reddit, on Twitter, in group chats. They argue with PlayStation fans not because they think it&#8217;s a rational debate but because Xbox is part of their identity. When you&#8217;ve spent a decade in Halo lobbies, when your Gamertag has been the same since high school, when your friend group was built through Xbox Live, the platform isn&#8217;t a product. It&#8217;s a social fabric.</p><p>That loyalty means Xbox gamers pay attention to leadership in a way that Samsung phone owners don&#8217;t track Samsung executives. They knew Phil Spencer by name. They knew his Gamertag, P3. They watched his interviews. They followed his social media. They had opinions about Sarah Bond, some positive, some critical, but always engaged. These weren&#8217;t passive consumers who would shrug at a leadership change. These were people who understood that the person running Xbox determined whether the games got made, whether the studios stayed open, whether the platform still felt like home.</p><p>So when Spencer and Bond both left on the same day, replaced by someone from the AI division that gamers already associated with the layoffs, the cost-cutting, the corporate machinery that had been grinding their favorite studios into dust, the community didn&#8217;t just notice. They panicked.</p><p>Forums lit up. Reddit threads went nuclear. YouTube channels with hundreds of thousands of subscribers published videos with titles like &#8220;Xbox Is Over, Now We Know Who Is Responsible.&#8221; The sentiment wasn&#8217;t just anger. It was grief. The feeling that the last people in the room who had any connection to gaming were gone, replaced by someone who represented everything gamers feared about Microsoft&#8217;s direction.</p><p>The lesson Xbox gamers took from Bond&#8217;s tenure, and from her departure, is simple and brutal: it doesn&#8217;t matter what leadership says. It matters what leadership does. The last two leaders who had any gaming credibility just walked out the door. What walks in next will be judged by that standard, whether Asha Sharma likes it or not.</p><div><hr></div><h2>The Outsider</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Pqg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Pqg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8Pqg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8Pqg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8Pqg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Pqg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3403500,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/192580784?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Pqg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8Pqg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8Pqg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8Pqg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80fa9900-e45e-4150-b93f-a961d1fe6b6b_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Asha Sharma&#8217;s resume is impressive. Just not in the way gamers care about.</p><p>She was COO at Instacart, VP of product at Meta, and most recently ran Microsoft&#8217;s CoreAI division, the same AI empire that was being built while Xbox studios were being gutted to hit margin targets. Nadella hired her because she&#8217;s scaled consumer platforms to billions of users and aligned business models for long-term value.</p><p>Gamers heard &#8220;AI executive with no gaming background&#8221; and drew their own conclusions.</p><p>Sharma has acknowledged she has &#8220;a lot to learn.&#8221; She shared her Gamertag (created recently) and listed Halo, Valheim, and GoldenEye as favorites. She agreed to play Borderlands 2 with fans. When IGN pressed her on authenticity, she was direct: her goal isn&#8217;t to be the best gamer in the room, it&#8217;s to make Xbox the best place to play.</p><p>But gaming isn&#8217;t an industry where you learn the culture from the outside and apply it like a framework. You either feel it or you don&#8217;t. The people who wore Master Chief helmets to midnight launches, who spent thousands of hours in Halo lobbies, who evangelized Xbox to every friend who&#8217;d listen, they can tell the difference between someone who gets it and someone who&#8217;s studied the briefing document.</p><p>The jury is out on Sharma. It&#8217;s going to be out for a while. And this jury is finicky as hell.</p><div><hr></div><h2>The First Move</h2><p>To her credit, one of Sharma&#8217;s very first acts as CEO was to kill the &#8220;This is an Xbox&#8221; campaign. Not quietly sunset it. Kill it. As of mid-March 2026, all evidence of the campaign was scrubbed from Microsoft&#8217;s online presence. A Microsoft spokesperson confirmed: &#8220;Asha retired &#8216;This is an Xbox&#8217; because it didn&#8217;t feel like Xbox. She is personally leading a reset of how we show up as a brand.&#8221;</p><p>At her first town hall with the Xbox team in Redmond, she said she wanted Xbox to be a &#8220;reference console,&#8221; the ideal console against which every other console is judged. Xbox general manager Chris Charla described the room: &#8220;People went from being pretty nervous, like, &#8216;What&#8217;s going on, what&#8217;s happening?&#8217;, to by the end of that day it was, like, seeing people had exhaled.&#8221;</p><p>She&#8217;s also said she has &#8220;no tolerance for bad AI&#8221; and explicitly rejected &#8220;soulless AI slop&#8221; in gaming. That&#8217;s a meaningful thing to say when you literally ran Microsoft&#8217;s AI division six weeks ago.</p><p>But killing a bad marketing campaign is the lowest possible bar. It&#8217;s like a new restaurant manager actually enforcing the handwashing sign. You don&#8217;t get credit for stopping something that should never have existed. You get credit for what you build next.</p><p>And the question Sharma can&#8217;t answer yet, the one that matters more than anything she says in a town hall, is whether the 30% accountability margin is still in effect. Because if it is, nothing else she does will matter. You can&#8217;t build a &#8220;reference console&#8221; and nurture creative studios while a CFO is holding a spreadsheet to everyone&#8217;s throat.</p><div><hr></div><h2>The Culture Problem Microsoft Can&#8217;t See</h2><p>Here&#8217;s what Satya Nadella fundamentally misunderstands about gaming, and it&#8217;s the same thing every platform-minded executive misunderstands: gaming is not an industry you optimize. It&#8217;s a relationship you earn.</p><p>Most industries work the way Microsoft thinks. You identify a market. You build a product. You solve a distribution problem. You maximize revenue per user. You build a defensive moat. You scale.</p><p>Gaming doesn&#8217;t work that way.</p><p>Gaming is built on <em>relationships</em>. Between players and the characters they inhabit, between fans and the franchises they love, between a community and the platform that houses it. A Halo fan doesn&#8217;t just play Halo. They wear the t-shirt. They buy the energy drink. They argue about lore in forums at 2 AM. They recruit their friends. They are unpaid brand ambassadors who do more marketing in a single Xbox Live party chat than a million-dollar ad campaign.</p><p>Steam users are the same way about Half-Life. Full disclosure: I&#8217;m one of them. I was never a huge Halo guy, but I know plenty of people who are, and I&#8217;ve watched them defend that franchise like it was family. I get it because I&#8217;m the same way about Half-Life. The best version is on PC, will always be on PC, and I will tell you that until you beg me to stop. PlayStation fans are the same way about God of War. Nintendo fans are the same way about Zelda.</p><p>And if you want the most extreme example of what gaming loyalty actually looks like, look at StarCraft in South Korea. An entire country built a competitive culture around that game. Professional leagues. Television broadcasts. National celebrities who are famous for nothing other than being really, really good at StarCraft. It&#8217;s not a hobby over there. It&#8217;s closer to a religion. Microsoft owns Blizzard now, which means Microsoft owns StarCraft. Imagine for one second if someone in Redmond decided to announce that StarCraft is coming to PlayStation 5 and Nintendo Switch 2. Imagine telling an entire nation of fans who built their identity around that game on PC that their platform doesn&#8217;t matter anymore. They would riot. I&#8217;m not being dramatic. There would be actual civic unrest. That&#8217;s how deep gaming loyalty runs when a company earns it and a community owns it.</p><p>That&#8217;s not brand loyalty in the way a McKinsey deck defines it. That&#8217;s identity. That&#8217;s tribe.</p><p>Compare this to PlayStation. Sony completely understands that gaming operates on 17-22% margins and invests accordingly. They don&#8217;t try to make PlayStation perform like a cloud service. They don&#8217;t impose profit targets that would make a Wall Street analyst blush. They make great games, they respect their community, and they let the business follow the culture. It works. PlayStation outsells Xbox by multiples, not because Sony has better technology, but because Sony understands the relationship.</p><p>When Nadella looks at Halo and thinks, &#8220;This makes a ton of money with just Xbox players, so why can&#8217;t PlayStation 5 owners enjoy it too?&#8221;, he&#8217;s not wrong about the revenue opportunity. He&#8217;s catastrophically wrong about the cost. Because those hardcore fans who wear the shirt, who tattoo the logo, who <em>are</em> the brand, they didn&#8217;t just buy the game. They bought the idea that Halo belongs to Xbox. That Xbox is <em>home</em>. That their loyalty means something.</p><p>Take that away, and you don&#8217;t just lose a customer. You lose an evangelist. You lose the person who was doing your marketing for free. You lose the emotional infrastructure that no amount of advertising spend can replace.</p><p>Satya sees &#8220;console wars are over&#8221; and thinks it&#8217;s time to monetize across platforms. He doesn&#8217;t see the hardcore Halo player who rabidly advertises their favorite game on their t-shirt and energy drink. He doesn&#8217;t understand that those people <em>are the strategy</em>.</p><p>The culture is the strategy. It always has been.</p><div><hr></div><h2>Gamers Are Not Excel Users</h2><p>This is the part that should scare Microsoft, and apparently doesn&#8217;t.</p><p>Excel users don&#8217;t form tribes. Teams users don&#8217;t build identity around their productivity suite. LinkedIn users don&#8217;t tattoo the logo on their forearms. Those products win on features, pricing, and distribution. You can optimize your way to dominance in enterprise software.</p><p>Gamers are different. They are activists. They strategize with their wallets. They organize boycotts that actually work. They review-bomb games on launch day. They cancel subscriptions in coordinated waves. They make YouTube videos with hundreds of thousands of views explaining exactly why they feel betrayed. They are, by any rational corporate assessment, <em>dangerous</em>, and any CEO who ignores that is playing with a kind of fire that doesn&#8217;t show up on quarterly earnings calls until the building is already burning.</p><p>Look at what&#8217;s already happened. Xbox hasn&#8217;t outsold Sony and Nintendo since 2008. Game Pass growth stalled, then prices jumped 50%. Studios closed. Studios that were making good games, that had impressed leadership months earlier. Thousands of jobs cut. Dev kit prices hiked 33%. Major exclusives underperformed or delayed. The &#8220;This is an Xbox&#8221; campaign actively told console owners their hardware was irrelevant. Halo, <em>Halo</em>, shipped to PlayStation.</p><p>Each of these decisions made sense on a spreadsheet. Each was defensible in a boardroom. And each told the core community the same thing: <em>You are 8.9% of our revenue, and we&#8217;re going to treat you like it.</em></p><div><hr></div><h2>The 500 Million Mirage</h2><p>Microsoft loves to point to &#8220;over 500 million monthly active users&#8221; as evidence that Xbox is thriving. Sharma used this number in her first LinkedIn post as CEO. Phil Spencer cited it in the same email where he announced mass layoffs.</p><p>It includes Windows gamers. Steam players. Minecraft players on every platform. Candy Crush players on mobile. Anyone from Activision Blizzard&#8217;s portfolio. If you&#8217;ve ever touched a Microsoft account in a gaming context, you&#8217;re in the count.</p><p>And yes, Microsoft owns Candy Crush. They acquired King as part of the Activision Blizzard deal. Candy Crush alone has hundreds of millions of players across mobile. Those people have absolutely no idea they&#8217;re being counted as part of the Xbox ecosystem. Your grandma matching candies on her iPad during a dentist appointment is, according to Microsoft&#8217;s metrics, an Xbox user. Let that sink in. Grandma is an Xbox user, but the 164 developers at ZeniMax Online who were building a game Microsoft praised eight months earlier are unemployed.</p><p>The actual Xbox console base, the people who bought the hardware, who pay for Game Pass, who identify as Xbox gamers, sits closer to 15 to 20 million active users. That&#8217;s the community. That&#8217;s the tribe. And it&#8217;s shrinking.</p><p>Counting Windows users as Xbox users is like counting everyone who&#8217;s ever used a Microsoft keyboard as an Office 365 subscriber. The number is technically defensible and culturally meaningless. It&#8217;s the kind of metric you cite when you&#8217;re trying to impress shareholders while firing the people who make the product.</p><div><hr></div><h2>Project Helix: The Bet</h2><p>Project Helix, Xbox&#8217;s next-generation console, was detailed at GDC 2026. It&#8217;s a console-PC hybrid powered by a custom AMD SoC on RDNA 5 architecture, co-designed for next-gen DirectX, with ray tracing performance Microsoft calls &#8220;an order of magnitude leap.&#8221; It will play both Xbox console games and PC titles from storefronts like Steam and GOG. Developer alpha kits ship in 2027.</p><p>It&#8217;s technically ambitious. But it carries the exact tension that has defined Xbox for years: is this a console for gamers, or a platform for everyone? Because &#8220;a PC that also runs Xbox games&#8221; could be exactly what the market wants. Or it could be the &#8220;This is an Xbox&#8221; philosophy repackaged in better silicon.</p><p>If Project Helix launches and feels like a gaming PC with an Xbox skin, the core community will see right through it. If it launches and feels like <em>home</em>, like the Xbox 360 felt, like a console built for gamers by people who love games, it could be the reset Xbox desperately needs.</p><p>The difference between those two outcomes isn&#8217;t hardware specs. It&#8217;s philosophy. And philosophy is exactly what&#8217;s been broken.</p><div><hr></div><p></p><h2>Dear Satya</h2><p>Here&#8217;s the part nobody at Microsoft wants to hear.</p><p>You spent $68.7 billion acquiring Activision Blizzard. You spent $7.5 billion on ZeniMax. You now own Call of Duty, World of Warcraft, Diablo, Candy Crush, The Elder Scrolls, Fallout, Doom, Halo, Minecraft, and Forza. Some of the most valuable franchises in entertainment history.</p><p>And your gaming division is 8.9% of your revenue. A green sliver on a pie chart dominated by Azure and Office.</p><p>You responded to that by imposing a 30% profit margin on an industry that operates at 17-22%. You let your CFO run gaming like it was a cloud division that needed to hit quarterly targets. You watched as that mandate produced mass layoffs, studio closures, price hikes, and the cancellation of games that your own leadership had praised months earlier. Your studios made great games and got fired for it.</p><p>You look at that pie chart and see a sliver to be optimized. Gamers look at it and see their entire world.</p><p>The gaming community is not a user base. It&#8217;s not a TAM. It&#8217;s not a growth vector. It&#8217;s a tribe of people who will go to war for a brand that respects them, and will burn it to the ground if it doesn&#8217;t. They are strategizing with their wallets right now. They are canceling subscriptions. They are buying PlayStations. They are making very loud, very public decisions about where their money and loyalty go.</p><p>If you continue treating Xbox like a cloud division with a controller, if the 30% mandate stays, if the layoffs continue, if the culture keeps getting sacrificed for margin, you might as well drop the name entirely. Call it Microsoft Gaming. Call it whatever you want. Because the thing that made &#8220;Xbox&#8221; mean something, the identity, the community, the culture, the tribe, will already be gone, the community, the culture, the tribe, will already be gone.</p><p>The culture is the strategy, Satya. It always was.</p><p>And right now, 8.9% of your revenue is screaming that at you, and you&#8217;re not listening.</p><div><hr></div><h2>The Nuclear Option</h2><p>Here&#8217;s a thought that sounds radical until you think about it for thirty seconds: sell Xbox.</p><p>Not to another tech conglomerate that will treat it like a line item. Sell it to someone who actually gives a damn about games. A billionaire who&#8217;s a real gamer. A private equity group filled with people who understand that gaming is culture first and business second. Someone who would look at Halo, The Elder Scrolls, Call of Duty, and Minecraft and see them not as assets to be optimized but as legacies to be honored.</p><p>It raises a fascinating question: how many billionaires are actually hardcore gamers? How many would run Xbox the way it deserves to be run, with passion, with patience, and with the understanding that the 17-22% margins the industry operates on aren&#8217;t a problem to be solved but a reality to be respected?</p><p>I don&#8217;t know the answer. But I know this: whoever ran Xbox next would need to understand that the brand&#8217;s value isn&#8217;t in its revenue. It&#8217;s in the millions of people who built their identity around it. People who are still here, still waiting, still hoping someone at the top will finally, actually, give a damn.</p><p>Microsoft clearly doesn&#8217;t. And that might be the most honest thing you can say about Xbox in 2026.</p><div><hr></div><h2>The Bottom Line</h2><p>Asha Sharma is not the villain of this story. She might even be part of the solution, if the philosophy above her changes. But the jury on her is going to be out for a long time, and this is a jury that doesn&#8217;t grant continuances.</p><p>The villain is a corporate philosophy that treats gaming like any other division to be optimized. A CFO who set a 30% margin target that no gaming company can sustain. A CEO who let AI cannibalize the resources gaming needed. A leadership structure that looked at $76 billion in acquisitions and asked &#8220;how fast can we squeeze this?&#8221; instead of &#8220;how do we honor what we bought?&#8221;</p><p>The Xbox fanbase isn&#8217;t dead. But it&#8217;s been abandoned. They didn&#8217;t walk away. They were pushed. Pushed by decisions that treated them like a rounding error. Pushed by a 30% mandate that killed studios making good games. Pushed by a company that forgot what made Xbox matter in the first place.</p><p>Gamers don&#8217;t need perfection. They need passion. They need consistency. They need someone who gives a damn.</p><p>Right now, Microsoft is giving them strategy instead of soul.</p><p>And strategy has never, not once in the history of this industry, brought a single gamer back.</p><div><hr></div><p><em>Sources: Bloomberg (Jason Schreier, Dina Bass, October 23, 2025); Windows Central (Samuel Tolbert, July 2, 2025); TrueAchievements (Tom West, July 4, 2025); The Verge (Tom Warren, October 21, 2025); The Information; GameSpot; Bellular News.</em></p><p><em>Data note: Microsoft does not report Xbox as a standalone audited revenue segment. The $25.1B Gaming/Xbox estimate is derived from Microsoft&#8217;s FY2025 disclosures (Gaming revenue up 9%, Windows &amp; Devices up 2%, Search &amp; News Ads up 13%) normalized against the audited More Personal Computing segment total of $54.6B. Microsoft&#8217;s total FY2025 revenue was $281.7B. Xbox hardware revenue fell 25% in FY2025; growth was driven by Xbox content and services, including Activision Blizzard. Industry margin comparisons use different accounting standards (GAAP, IFRS, ASBJ) and Microsoft&#8217;s internal &#8220;accountability margin&#8221; metric is not directly interchangeable with competitors&#8217; reported operating margins.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Don't Let a Dentist Talk Your Kid Out of Learning to Code]]></title><description><![CDATA[Hey. Before we get into this &#8212; this one's for the normies.]]></description><link>https://radicalinsider.org/p/dont-let-a-dentist-talk-your-kid</link><guid isPermaLink="false">https://radicalinsider.org/p/dont-let-a-dentist-talk-your-kid</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Sun, 22 Mar 2026 23:29:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AdDZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>And I mean that with zero disrespect. Genuinely. You deserve to understand what's actually going on with all this AI noise just as much as anyone else does. So I left the technical deep-dives at the door for this one. No jargon. No acronyms. Just the truth, in plain English, with some metaphors that hopefully get you in the trenches me. </p><p>When you're ready to see what the real stuff looks like &#8212; the actual code, the actual architecture, the actual war stories from building a production app &#8212; the rest of my articles are right there waiting for you. But this one's yours. Let's go.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JORr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JORr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!JORr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!JORr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!JORr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JORr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3616468,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191805636?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JORr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!JORr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!JORr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!JORr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b20bbe-e2fa-4d55-bc75-061028af85e0_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Dentist: &#8220;Isn&#8217;t AI going to take over that job?&#8221; Wifey: &#8220;Maybe?!&#8221;</figcaption></figure></div><p>My wife&#8217;s dentist &#8212; good dude, actually. We went to the same high school. They were making small talk while she was in the chair and he asked whether our son was still learning to code. She said yes. And he goes, &#8220;Isn&#8217;t AI going to take over that job?&#8221;</p><p>My wife, bless her, went: &#8220;Maybe? I don&#8217;t know.&#8221;</p><p>She wasn't uncertain. She watches me fight with these things every single day. She knows exactly what I go through. She was just being nice to our friend.</p><p>But here&#8217;s the thing &#8212; he&#8217;s not wrong to ask. He&#8217;s just working with bad information. And that&#8217;s not his fault.</p><p><strong>That&#8217;s the media&#8217;s fault.</strong></p><h3><strong>Let's Talk About What the Media Actually Does</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PHLk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PHLk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!PHLk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!PHLk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!PHLk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PHLk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3585510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191805636?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PHLk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!PHLk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!PHLk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!PHLk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa93cac9c-5179-44bd-8868-9a861eee289b_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Picture a room. There are a hundred important things that need to be reported today. Real things. Things that actually affect your life. The people in that room look at all hundred of them, stick a finger in the wind, and think: <em>&#8220;Okay &#8212; what are people already talking about? What&#8217;s going to sell enough ad space to make this worth our time?&#8221;</em></p><p>That&#8217;s it. That&#8217;s the whole process. That&#8217;s the editorial meeting.</p><p>It&#8217;s not malicious. It&#8217;s not a conspiracy. It&#8217;s just a business making a business decision. And right now, &#8220;AI is coming for your job&#8221; sells a lot more ad space than &#8220;AI is a useful tool with some pretty significant limitations that require years of experience to navigate.&#8221; One of those headlines makes you feel something. The other one makes you change the channel.</p><p>So instead of telling you the boring true thing, they tell you the exciting false thing. With the confidence of people who have never written a line of code, never built anything real, and never had to sit with the consequences of being wrong. They are selling you a feeling, not a fact. And the feeling they&#8217;re selling right now is: <em>AI is magic, your job is gone, the robots are coming, be afraid, click here to learn more.</em></p><p>They can take a guy who jaywalked across the street and make him look like a serial killer. And they can take a tool that&#8217;s genuinely useful for certain things and turn it into the Second Coming of Skynet &#8212; all before lunch, with seventeen ads in between.</p><p>My friend the dentist heard the Skynet story. He never heard the jaywalking story. Nobody made the jaywalking story into a headline because who clicks on that?</p><p>So he asked my wife a completely reasonable question &#8212; and she said &#8220;maybe, I don&#8217;t know&#8221; because she didn&#8217;t want to get into it while someone had their hands in her mouth.</p><p>I, however, have all the time in the world. And no one&#8217;s hands are in my mouth right now. So let&#8217;s get into it.</p><h3>Example 1: The AI That Argued With a Receipt</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="7680" height="5760" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:5760,&quot;width&quot;:7680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;black and white wall mounted lamp&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="black and white wall mounted lamp" title="black and white wall mounted lamp" srcset="https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1626766234244-8bfa605e0cb3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkcmF3aW5nJTIwdmVyc2lvbiUyMG9mJTIwYSUyMHByb2dyYW1tZXJ8ZW58MHx8fHwxNzc0MjE5NDQ3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@theblowup">the blowup</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Here's a single line of code. The only thing it does is round a number:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;3d3b4f83-554e-40c8-a574-0a6382518fec&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">round(2.675, 2)</code></pre></div><p>You don&#8217;t need to know anything about programming to understand this. It&#8217;s asking the computer: <em>&#8220;Round 2.675 to two decimal places.&#8221;</em> That&#8217;s it. Third grade math. The answer is 2.68, right? The 5 rounds up. Everyone knows that.</p><p>The answer is 2.67.</p><p>Before you throw your phone &#8212; this isn&#8217;t a trick question. It&#8217;s not a riddle. The reason has to do with something deep in how computers store numbers, and the short version is this: computers can&#8217;t actually hold the number 2.675 perfectly. They store something <em>just barely less</em> than 2.675 &#8212; so tiny you&#8217;d never notice it &#8212; until you round, and the answer drops instead of rounds up. There&#8217;s also a whole separate thing where computers are designed to round a certain way specifically to stay fair over millions of calculations. The details don&#8217;t matter right now. What matters is: 2.67 is correct, 2.68 is wrong, and the reasons have been understood by mathematicians for decades.</p><p>Ask an AI. It will tell you 2.68. Confidently. It will <em>explain</em> why 2.68 is correct with the calm, authoritative energy of a man who has never been wrong in his life and finds the very concept personally offensive.</p><p>It&#8217;s not lying. It&#8217;s doing what it always does &#8212; it looked at the shape of the question, recognized a rounding problem, remembered that 5 rounds up, and produced the most familiar-sounding answer. It has never <em>understood</em> the rule. It&#8217;s just seen the pattern so many times it thinks it owns the rule. There&#8217;s a difference. A massive one.</p><p>Imagine you hire a math tutor who has read every math textbook ever printed &#8212; every single one &#8212; but has never once sat down and actually solved a problem with a pencil. He can <em>talk</em> about math all day. He sounds phenomenal. He&#8217;ll explain rounding to you with warmth and confidence and maybe a little diagram on a napkin.</p><p>And then he&#8217;ll hand you a bill that&#8217;s wrong by ten cents and argue with you about it while you&#8217;re literally holding the receipt.</p><p>Now here&#8217;s where it gets interesting &#8212; because the &#8220;AI experts&#8221; you see on your feed? The ones with the big audiences, the podcast, the newsletter, the LinkedIn posts getting fifty thousand likes? They&#8217;re the same tutor. They&#8217;ve read everything. They can <em>talk</em> about AI all day and night. They know all the right words. They sound like they&#8217;ve been doing this since before you knew what a computer was.</p><p>But here&#8217;s what they&#8217;re not doing: the actual work. They&#8217;re not sitting down with these tools and grinding through a real problem at midnight when everything is broken and the deadline is tomorrow. They&#8217;re not finding out the hard way that the AI confidently got the rounding wrong. They&#8217;re not living in the gap between what the AI <em>says</em> it can do and what it <em>actually</em> does when real people start using your product.</p><p>The people who are doing that work? The ones who actually know where these tools shine and where they completely fall apart? They&#8217;re too busy building. The engineers working on the next version of Claude, the next version of ChatGPT &#8212; they&#8217;re not on YouTube making reaction videos. They&#8217;re in the lab. They don&#8217;t have time for an audience because they&#8217;re too busy being genuinely useful.</p><p>So what you&#8217;re left with is this: the people who own the audiences don&#8217;t always tell the whole truth. Not because they&#8217;re evil &#8212; but because the whole truth doesn&#8217;t serve their bottom line. Their audience wants to feel like they&#8217;re on the edge of something historic. Their audience wants to believe the robots are coming, or that there&#8217;s a secret prompt that unlocks superintelligence, or that the guy in the thumbnail has figured out something everyone else missed. The whole truth &#8212; <em>&#8220;it&#8217;s a useful tool with specific limitations that requires real expertise to use well&#8221;</em> &#8212; doesn&#8217;t keep people subscribed. It doesn&#8217;t sell the course.</p><p>You know what it reminds me of? Those As Seen On TV ads. The ones you&#8217;d catch at midnight after a peanut butter and jelly sandwich, half asleep on the couch, watching some guy in a headset tell you this one weird trick will change your life for four easy payments of $19.99. You&#8217;d laugh, change the channel, go to bed. It was easy to ignore because it was only on at midnight and you stumbled into it by accident.</p><p>Except now it&#8217;s 2026. Social media is a TV in everyone&#8217;s pocket. And it&#8217;s not midnight once in a while &#8212; it&#8217;s every single second of every single day. The same pitch. The same energy. The same guy in the headset. Just with better lighting, a ring light, and an algorithm making sure you never accidentally change the channel.</p><p>So they tell the version that works for their audience. And the real experts? We&#8217;re exhausted. And honestly &#8212; even when we want to engage, the game is rigged before it starts.</p><p>Here&#8217;s how it goes. Someone wants to interview you. Great. You show up ready to give them the full picture &#8212; A to Z. Every nuance, every caveat, every &#8220;yes, but here&#8217;s the thing they&#8217;re not telling you.&#8221; Because context is everything in this conversation. Without context, the truth becomes a lie by omission.</p><p>But the interviewer doesn&#8217;t want A to Z. They want A, B, and C. They&#8217;ve already written the segment. They already know what their audience wants to hear. They need you for one thing &#8212; your name on the lower thirds. Your credibility as a prop. <em>&#8220;Engineer with 40 years of experience says...&#8221;</em> and then they finish that sentence however they want. They got what they came for. You gave them the ammunition and they aimed it however suited them.</p><p>So after a while, the real experts stop raising their hands. Not because we don&#8217;t care &#8212; but because we&#8217;ve learned that the format doesn&#8217;t allow for the truth. You can&#8217;t explain a race condition in a fifteen-second soundbite. You can&#8217;t explain why the rounding answer is wrong in a tweet thread designed to go viral. The full story is too long, too boring, and too unlikely to end with someone feeling scared or excited enough to share it.</p><p>And the real experts stay quiet, and the noise fills the vacuum, and somehow that noise gets mistaken for the signal.</p><p>That&#8217;s what my friend the dentist is reading. That&#8217;s what&#8217;s in his feed. That&#8217;s the math tutor with a million followers who has never once graded his own homework.</p><p>And that brings me back to the rounding problem &#8212; because it&#8217;s the perfect illustration of exactly what I just described. The AI gave the wrong answer with complete confidence, the same way the guy on the podcast gives you the wrong picture of AI with complete confidence. Neither of them has ever had to be accountable for being wrong. Now imagine that same confident wrongness running your billing system. That&#8217;s not a hypothetical. That&#8217;s a lawsuit.</p><h3>Example 2: The AI That Answered a Question Nobody Should Answer</h3><p>Here's another snippet. Again &#8212; you don't need to understand the code itself:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;c&quot;,&quot;nodeId&quot;:&quot;3a646e00-c32e-44f5-8cef-9a2b7012a64a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-c">printf("%d %d %d\n", i++, ++i, i);</code></pre></div><p>All this is doing is asking the computer to change a number in three different ways simultaneously and then print the result. Sounds simple enough.</p><p>What does it print?</p><p>The correct answer &#8212; the one any experienced programmer knows immediately &#8212; is: <em>nothing that means anything, and whoever wrote this needs to have a long think about their choices.</em></p><p>There&#8217;s a category of question that&#8217;s not just hard to answer &#8212; it&#8217;s <em>broken.</em> Like asking &#8220;what&#8217;s north of the North Pole?&#8221; The question itself is malformed. The rulebook that governs this type of code looks at it and explicitly states: <em>we refuse to define what happens here. The computer can do whatever it wants. Print a number. Crash. Catch fire. This one&#8217;s on you.</em></p><p>The right answer is to recognize the question is broken and say so. Clearly. Immediately.</p><p>Ask an AI. It prints a number. A specific, real, confident number. It might even walk you through <em>how</em> it arrived there &#8212; step by step &#8212; like a doctor delivering a detailed, professional diagnosis for a disease that has never existed in the history of medicine. Confident. Thorough. Completely made up.</p><p>Here&#8217;s the picture. You ask someone: <em>&#8220;What time does the next train leave from Union Station in my hometown?&#8221;</em> But your hometown doesn&#8217;t have a train station. Never had one. There&#8217;s a Dairy Queen where a train station might have been, if anyone had ever cared enough to build one.</p><p>A person who actually knows your town says: <em>&#8220;There&#8217;s no train station there.&#8221;</em></p><p>The AI says: <em>&#8220;3:47. Platform B. Bring your own snacks &#8212; that line doesn&#8217;t have a caf&#233; car.&#8221;</em></p><p>Specific. Confident. Entirely fabricated. Because it&#8217;s learned that train questions have train answers, and it has no mechanism for recognizing when the question itself is the problem.</p><p>The media says this thing is about to replace software engineers. Software engineers are over here watching it invent train schedules for cities with no trains.</p><h3>Example 3: The Movie Critic Who Reviewed a Film That Was Never Made</h3><p>Last one. Here&#8217;s some code:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;9b2041cc-a6a3-4105-be1c-9a0c3582b706&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">let mut v = vec![1, 2, 3];
let a = &amp;v[0];
v.push(4);
println!("{}", a);</code></pre></div><p>Plain English translation: make a small list of numbers, remember where the first one lives, add a new number to the list, then go back and read the first one.</p><p>Ask an AI what it prints. It&#8217;ll say: 1. No hesitation.</p><p>This code doesn&#8217;t run. It can&#8217;t. The programming language it&#8217;s written in looks at it before anything happens and refuses to proceed &#8212; because it can already see that something dangerous is about to occur.</p><p>Here&#8217;s why, with zero technical knowledge required. When you add a new item to a list that&#8217;s already at capacity, the computer sometimes has to pick up the entire list and move it to a bigger space &#8212; like moving out of a studio apartment into a two-bedroom because you finally bought a couch. When that happens, the address you saved for &#8220;the first item on the list&#8221; is now pointing at the old apartment. Which is empty. Which may have already been rented to someone else entirely. If you go looking for your stuff there, you&#8217;re not going to find it. You might find someone else&#8217;s stuff. You might find nothing. In the real world of software, this is how data gets corrupted and how security holes get created.</p><p>The language in this example is smart enough to look at your plan before it executes and say: <em>&#8220;I see what you&#8217;re about to do. I&#8217;m not going to let you do it. Go fix it first.&#8221;</em> Like a good friend who grabs your arm before you send the drunk text.</p><p>The AI says it prints 1. Because it&#8217;s seen a million examples of code that reads the first item in a list, this looked like one of those, and it told you what those usually do. It had no idea the whole thing was rejected before it ever started. It&#8217;s reviewing a movie that was never made. The studio said no. There are no actors. There is no footage. There is no film.</p><p>The AI just gave it four stars and called the third act emotionally devastating.</p><h3>The Bullshit Is So Thick &#8212; I&#8217;m Forced to Wade Through It.</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gduq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gduq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Gduq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Gduq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Gduq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gduq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg" width="960" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66032,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191805636?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Gduq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Gduq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Gduq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Gduq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff69044-9ea8-4987-8a35-0550546bf727_960x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s the part that actually exhausts me.</p><p>People are out here &#8212; on television, in major newspapers, in TED Talks &#8212; genuinely debating whether we&#8217;re close to building the Terminator. The actual Terminator. Skynet. The robot apocalypse. And after nearly three years of AI being shoved in our faces every single day on every platform, we are standing here watching it get a rounding question wrong. <em>One line of code.</em> Not a complex system. Not a massive algorithm. Three examples. One. Single. Line. Of. Code. </p><p>GET. THAT. IN. YOUR. HEAD.</p><p>Believe it or not, I have hundreds of examples of this once you get to 5-10 lines of code or more. The volume of nonsense floating around about AI right now is so extreme it makes dinosaur feces look like bird droppings. It&#8217;s not a little misinformation. It&#8217;s a full avalanche. It&#8217;s been building for three years and every new breathless headline adds another layer. And it doesn&#8217;t live out there in the abstract &#8212; it lands directly on my doorstep on a regular basis.</p><p>I have clients who&#8217;ve read the headlines and come to me asking whether they even need to invest in building software anymore, or if they should just &#8220;wait for the AI to handle it.&#8221; I have new programmers asking me if it&#8217;s worth learning to code or whether they&#8217;re already obsolete before they&#8217;ve written their first working program. And I have early customers of BenchBoard &#8212; the app I&#8217;ve spent the last eight months building &#8212; who wonder out loud whether some AI is going to show up and make the whole thing irrelevant before it even launches.</p><p>I have to talk every single one of them off the ledge. Every time. With actual examples. With actual facts. Because the headlines sure aren&#8217;t providing any.</p><p>And where are those headlines coming from? Let&#8217;s be honest. They&#8217;re coming from journalists who have never built software. Talking heads who learned the phrase &#8220;artificial intelligence&#8221; sometime around 2022 and have been dining out on it ever since. Venture capitalists who need a story to tell their investors. Consultants who rebranded overnight and declared themselves &#8220;AI strategy experts&#8221; because they used ChatGPT to write an email once. These people are speaking with total authority about something they have never done, and they are being handed microphones, publishing deals, and conference stages to do it from.</p><p>They are the ones telling my friend&#8217;s son not to bother learning to code.</p><p>They are the ones telling my clients to wait for the magic to arrive.</p><p>They are the ones manufacturing fear and awe and urgency out of thin air because fear and awe and urgency pay the bills &#8212; and the actual engineers, the people who use these tools every day and know exactly where and how they fail, are too busy fixing the problems to write the headlines.</p><p>So yes, this is partly therapeutic. But it&#8217;s also &#8212; I hope &#8212; genuinely useful for anyone who&#8217;s been swimming in that swamp and trying to find solid ground. These three examples are what I reach for every time someone comes to me with that look. You know the look. The one that says they just read something on the internet and now they think the robots have already won.</p><p>They haven&#8217;t. Not even close.</p><h3>What's Actually True &#8212; And Why It's More Interesting Than the Headlines</h3><p>I use these AI tools every single day. I&#8217;ve been building BenchBoard &#8212; a live scorekeeping and lineup management app for youth baseball and softball &#8212; and I genuinely could not have moved this fast without them. They are remarkable. I am not here to tell you they&#8217;re worthless.</p><p>But I&#8217;ve also watched an AI introduce a bug into my app that caused two players to show up at Second Base on a real field during a real game &#8212; because it created two separate systems writing to the same data at the same time with nobody coordinating them. The screen looked fine. Everything appeared to save correctly. It only blew up at exactly the worst moment, when a coach switched between games on their phone. You would never catch it in a demo. You catch it on a real field with real kids and a real umpire staring at you.</p><p>I&#8217;ve watched the AI design something that looked clean and logical on paper and turned into a disaster the moment actual people started using the app in actual ways &#8212; requiring 36 separate fixes before I finally scrapped it and rebuilt it myself. The AI didn&#8217;t come up with the solution. I did. Because I&#8217;ve been doing this for forty years and I know what breaks in the field.</p><p>I&#8217;ve watched the AI serve one user&#8217;s data to a completely different user because it stored everything in a flat unlabeled pile. Works great when you&#8217;re the only person testing it. Falls apart the moment a second human being shows up.</p><p>None of these are failures the AI could warn me about, because the AI doesn&#8217;t know what it doesn&#8217;t know. It doesn&#8217;t know what a coach looks like in August heat trying to swap two players before the umpire yells play ball. It doesn&#8217;t know what happens when a parent watching a live scoreboard on their phone sees the wrong lineup because the coach just made a change on theirs. It doesn&#8217;t know any of that because it&#8217;s never been there. It&#8217;s read about software. It&#8217;s never lived in it.</p><p>That&#8217;s the gap. And it&#8217;s not a small one. It&#8217;s the whole game.</p><h3>What I'd Actually Tell My Friend the Dentist</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AdDZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AdDZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!AdDZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!AdDZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!AdDZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AdDZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3315823,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191805636?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AdDZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!AdDZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!AdDZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!AdDZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d2a9be5-1727-47a2-9cc1-829e4709338e_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s what I would actually tell my buddy the next time it comes up &#8212; and hopefully <em>after</em> the checkup. </p><p><strong>Learning to code is absolutely still worth it. More than ever, actually. And here&#8217;s why.</strong></p><p>These tools are real and they&#8217;re genuinely useful. My son will probably use them from day one and move faster than I could at his age. Never having to spend three hours on something I spent three hours on. No more small dumb errors that come up that used to take hours to troubleshoot. At least almost. That&#8217;s real, and that&#8217;s good.</p><p>But he still needs to understand why the rounding answer is 2.67 and not 2.68. He still needs to recognize when a question is broken, and the right answer is &#8220;don&#8217;t do this.&#8221; He still needs to understand why a programming language threw his code in the trash before it even ran &#8212; not because he&#8217;ll be solving these things manually every day, but because when something breaks in the real world at the worst possible moment, &#8220;I asked the AI and it said everything was fine&#8221; is not going to cut it as an explanation. Not with a client. Not with a user. Not with a coach on a field who wants to know why two kids just showed up in the same spot.</p><p><strong>The AI is a brilliant, tireless, occasionally confident assistant that&#8217;s sometimes, well, wrong. It is not a substitute for knowing what you&#8217;re doing.</strong></p><p>The media will keep writing the Terminator story because the Terminator story gets clicks. My friend will keep reading it over breakfast. And somewhere, a kid is going to decide not to learn programming because of a headline written by someone who has never built a single thing in their life.</p><p>That kid deserves better than that. And honestly &#8212; so does my son.</p><div><hr></div><p><em>I write about what it actually looks like to build real software with AI tools &#8212; the wins, the failures, and everything the headlines leave out. If that sounds useful, subscribe and come along.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What I Learned When My Daughter's Softball Game Became My Product Demo]]></title><description><![CDATA[I'm 51 years old. I'm building a baseball and softball app called BenchBoard. Today I field-tested it at my daughter's game while coaching her team. Here's what actually happened.]]></description><link>https://radicalinsider.org/p/what-i-learned-when-my-daughters</link><guid isPermaLink="false">https://radicalinsider.org/p/what-i-learned-when-my-daughters</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Thu, 19 Mar 2026 21:35:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Y025!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y025!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y025!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Y025!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Y025!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Y025!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y025!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3050865,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191519132?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y025!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Y025!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Y025!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Y025!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17cf7b4a-6b86-416f-be69-b102b4b8889e_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">That is my daughter out there - just in a stylized version</figcaption></figure></div><p>My daughter is the most experienced pitcher on her team &#8212; she&#8217;s become a strong leader out there, and the other girls look to her. The manager gave her the game ball today. I&#8217;m the assistant coach &#8212; I manage the lineups and defense, and the manager trusts what I&#8217;m doing. There are three of us coaching this squad, and as of recently, I&#8217;ve also been testing the app I&#8217;ve been building in every spare hour I have.</p><p>Today was supposed to be a normal game. It wasn&#8217;t.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I&#8217;ve been bringing BenchBoard to games for a few weeks now &#8212; this was the third one.</p><p>I&#8217;ll be honest: I rushed this thing out the door. I was racing to get it ready before game one, and I barely made it. That first game, I printed the lineups at home beforehand and we still had to cross names out by hand when the roster changed at the field. Game two went smoother &#8212; everything worked except one wrong jersey number for a player. Small stuff. But small stuff is what coaches notice.</p><p>This third game was the first time the lineup and defense management ran with no hiccups. No crossed-out names. No wrong numbers. Just clean printouts, real-time roster changes, and a workflow that actually held up under game conditions.</p><p>But here&#8217;s what I&#8217;m realizing &#8212; the same thing the other coaches on my staff who&#8217;ve been using it are realizing: the lineup and defense side works. It needs polish, but it works. The big one &#8212; scorekeeping &#8212; is actually live. It&#8217;s there. You can use it. But I&#8217;d call it a beta, and I know it&#8217;s not ready for primetime yet.</p><p>One of the coach&#8217;s wives was already keeping score on paper during the game. I could have asked her to try BenchBoard&#8217;s scorekeeping too &#8212; but I wasn&#8217;t about to give her two things to do in the middle of a live game. That&#8217;s how you burn someone out on your product before they&#8217;ve even started. What I&#8217;m planning instead is to have whoever&#8217;s on the bench handle the scorekeeping next time. They&#8217;re sitting there, they&#8217;re watching the game, and it gives me a real beta tester who isn&#8217;t already juggling another task.</p><p>And that&#8217;s the tension of building in public. You want it to be ready. It&#8217;s not. You ship it anyway. And then you learn what &#8220;ready&#8221; actually means &#8212; not from your codebase, but from the helmet shelf in the dugout.</p><p>After the game, the manager told me the app is pretty cool. I just shrugged. I&#8217;m still at the stage where every compliment gets met with a quiet <em>I hope this damn thing works.</em> Cool is nice. Reliable is what I&#8217;m after.</p><p>Today was the game where everything clicked into focus. I learned more in two hours at that field than I have in months of development.</p><p>Let me tell you what I brought with me.</p><h2>The Setup</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5nfL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5nfL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5nfL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5nfL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5nfL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5nfL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3266219,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191519132?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5nfL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5nfL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5nfL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5nfL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe865d852-ac15-47fa-a32d-5cec126ff4d6_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I showed up to the field with <strong>four things</strong>: my laptop, a Phomemo M408 mobile printer, a USB-C cable, and a manila envelope stuffed with 100 sheets of 8.5x11 Phomemo thermal paper straight from Amazon. I set everything up on top of a helmet shelf in the dugout &#8212; a $2,000 MacBook Air balanced next to batting helmets with the printer attached via USB, both of them one elbow bump away from hitting the dirt. Every time we needed to print, I had to pull a sheet out of the envelope and feed it into the printer. It was cumbersome. It was not elegant. But I opened BenchBoard, pulled up our lineup, hit print, and handed a clean, formatted lineup card to the umpire.</p><p>The looks I got from the other coaches? Not excitement. Not &#8220;oh my God what is that.&#8221; Just a glance. A nod. An &#8220;ooh, interesting.&#8221;</p><p>And you know what? That&#8217;s exactly right.</p><p>Coaches at a game are coaching. They&#8217;re not evaluating software products between innings. They&#8217;re thinking about who&#8217;s batting fifth and whether their pitcher&#8217;s arm is going to hold up. I shouldn&#8217;t have expected more than a nod. But here&#8217;s the thing I noticed: the opposing coaches received our printed lineup, and then I caught them looking up the site on their phones. They were talking about it on the other side. Quietly. To each other.</p><p>That nod? That&#8217;s the top of the funnel. The conversion happens later, in the car ride home, when that coach is handwriting his next lineup and remembers the crisp printout he got handed today.</p><h2>What Worked</h2><p><strong>The interface looked good.</strong> On my laptop, BenchBoard looked like a real product. Not a side project. Not a prototype. A thing that belonged at a ball field.</p><p><strong>Managing the roster in real time was seamless.</strong> We had a couple players who weren&#8217;t going to make it &#8212; last minute, of course, because that&#8217;s how youth sports works. I pulled them off the lineup, adjusted, hit print again. New lineup. Done. No crossing out names with a pen like game one. No scribbling in the margin. No &#8220;wait, who&#8217;s playing short now?&#8221;</p><p><strong>Communicating with my coaches was easy.</strong> I could show them the screen and say &#8220;here&#8217;s who&#8217;s on the bench, here&#8217;s our defense&#8221; and everyone was on the same page. No squinting at a clipboard. No &#8220;I think she said Amanda&#8217;s at second?&#8221;</p><p><strong>The submit-and-print workflow was satisfying.</strong> Hit submit. Defense locked in. Lineup confirmed. Print. Hand it to the ump. There&#8217;s something about that flow that just feels right. Like the app is doing the thing it was born to do.</p><h2>What Didn&#8217;t Work</h2><p>And here&#8217;s where it gets honest.</p><p><strong>Four things is too many things.</strong> A laptop. A printer. A cable. A manila envelope full of thermal paper. I&#8217;m already carrying a gear bag, a bucket of balls, batting helmets, and whatever else my team forgot. Adding four items to set up a &#8220;simple&#8221; lineup system turns BenchBoard into a project, not a tool. Coaches don&#8217;t want projects. They want tools. Hell, Adam Sandler would be happy with just 3 things and thankfully <em>wallet</em> and <em>keys</em> don&#8217;t have to be part of it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JmmY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JmmY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!JmmY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!JmmY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!JmmY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JmmY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JmmY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!JmmY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!JmmY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!JmmY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0f1204-320c-430b-b45a-3366c764a11d_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">laptop sitting on baseball dugout bench - drawing</figcaption></figure></div><p><strong>The laptop kept timing out.</strong> This was one of the big ones. My laptop is secured with a fingerprint, so every time the screen locked &#8212; which it does constantly in the sun &#8212; everyone had to wait for me to wake it up just to see the lineup or defense. That&#8217;s a momentum killer. In the middle of a game, when a coach asks &#8220;who&#8217;s up next?&#8221; the answer can&#8217;t be &#8220;hold on, let me unlock my laptop.&#8221;</p><p><strong>Entering the opponent&#8217;s lineup was painful.</strong> The opposing coach handed me a paper lineup. Standard stuff. I tried to type it into BenchBoard manually and immediately started fighting the interface. I&#8217;d accidentally drag players around. Choosing positions meant hitting dropdown after dropdown. What should&#8217;ve taken 60 seconds took way too long and felt clunky the whole time. For a coach who&#8217;s never used the app before? That&#8217;s a wall.</p><p><strong>The laptop felt like overkill.</strong> I&#8217;m sitting there with this computer open at a kids&#8217; softball game and it just felt... heavy. Like I was doing too much. Meanwhile, one of the coach&#8217;s wives grabbed a clipboard and a dry-erase marker and wrote the lineup in big capital letters so everyone could see it from the dugout. She solved the visibility problem in 30 seconds with a $4 marker.</p><p>That moment stung a little. But it also taught me something.</p><h2>What I Actually Need</h2><p>The dry-erase clipboard wasn&#8217;t competing with BenchBoard. It was exposing a gap. BenchBoard is great at building and managing the lineup. But it&#8217;s not yet great at <em>displaying</em> it to the people who need to see it in real time &#8212; the coaches in the dugout, the parents keeping score, the players checking when they&#8217;re up.</p><p>A tablet changes everything. Mount it on the fence or the dugout gate. Big screen. Zoomable defense view. Everyone can see it. No laptop. No squinting.</p><p>And the printer? What if instead of lugging around a laptop-sized thermal printer with a cable, I just had a small Bluetooth label printer in my gear bag? The ones people use to print shipping labels &#8212; 4x6 format, Bluetooth, fits in your hand. I open BenchBoard on my phone. Tap print. The little printer spits out a lineup card. I hand it to the ump. Two things instead of four: my phone and a printer that fits in a side pocket.</p><p>That&#8217;s the difference between &#8220;this coach has a whole setup&#8221; and &#8220;wait, he just printed that from his phone?&#8221;</p><p>The first one is impressive but intimidating. The second one makes the opposing coach think <em>I could do that.</em></p><h2>The Feature I Wish Existed</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5PLR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5PLR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!5PLR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!5PLR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!5PLR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5PLR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5PLR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!5PLR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!5PLR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!5PLR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7735c17f-bfd3-4521-9029-ea52ec367d41_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">coach giving a small paper with a lineup to another coach - sketch</figcaption></figure></div><p>When the opposing coach handed me his paper lineup, I had to manually type in every name and select every position. But I&#8217;m staring at a piece of paper that already has all the information on it. In order.</p><p>What if I could just point my phone camera at that paper lineup and the app reads it? Scans the names, the positions, the batting order &#8212; and drops it right into the scorekeeping side. OCR for lineup cards. That&#8217;s not science fiction. That&#8217;s a phone camera and some text recognition.</p><p>I&#8217;m not building that tomorrow. But I wrote it down. Because today, at the field, fighting with dropdowns while the ump waited, I felt the friction. And when you feel it yourself, you don&#8217;t forget it.</p><h2>Why I&#8217;m Writing This</h2><p>I&#8217;m 51 years old. BenchBoard is my third company. The first two didn&#8217;t make it &#8212; one got absorbed by a bigger network, the other fell apart when my business partner couldn&#8217;t make it work. I&#8217;ve got teenage kids who are cheering me on. A wife who believes in what I&#8217;m building. And a long road ahead.</p><p>I read a story recently about James Dyson &#8212; the vacuum guy. He spent 14 years building prototypes in a shed behind his house. Built 5,127 of them. His wife Deirdre was an art teacher who supported the family on her salary while he remortgaged their home over and over. His kids grew up watching him go to that shed every day. He finally shipped his first product at age 46.</p><p>Today, his son is VP of Engineering at the company. His wife is creative director. The family that held him up during the hard years is now running the thing that came out of them.</p><p>I&#8217;m not James Dyson. I&#8217;m a coach with a laptop balanced on a helmet shelf, hoping it doesn&#8217;t fall, at my daughter&#8217;s softball game. But I know what it feels like to carry something you believe in while the world gives you a polite nod and goes back to what they were doing.</p><p>The opposing coach looked up my site today. He didn&#8217;t sign up. He didn&#8217;t say &#8220;wow.&#8221; He just nodded. And that&#8217;s enough. Because adoption doesn&#8217;t start with a standing ovation. It starts with a nod. Then a glance at the phone. Then, weeks later, when that coach is handwriting a lineup at 6 AM before a tournament and he remembers the printed lineup that got handed to him &#8212; that&#8217;s when the seed grows.</p><p>I&#8217;m building BenchBoard for coaches like me. Coaches who are also parents. Coaches who are tired of the clipboard-and-Sharpie workflow but don&#8217;t want to fight with bloated apps that weren&#8217;t built by someone who&#8217;s actually stood in the dugout.</p><p>Every game I coach is a product test. Every printed lineup I hand to an opponent is a business card. Every problem I hit at the field is a feature I&#8217;ll build next week.</p><p>Today I learned that four things is too many. Two is the right number. And a dry-erase marker is still the fastest display technology ever invented &#8212; until I get a tablet on the fence.</p><p>More soon.</p><div><hr></div><p><em>Rad is the founder of IronBench Labs and the creator of BenchBoard &#8212; a real-time scorekeeping and team management app for baseball and softball. He&#8217;s an assistant coach on his daughter&#8217;s team in California and field-tests every feature himself. Follow along as he builds in public.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Architecture the AI Couldn't See]]></title><description><![CDATA[Part 2 of 5: The BenchBoard Build - How I Bit Off More Than I Could Chew Building This SaaS &#8212; Even With the "Best" LLMs]]></description><link>https://radicalinsider.org/p/the-architecture-the-ai-couldnt-see</link><guid isPermaLink="false">https://radicalinsider.org/p/the-architecture-the-ai-couldnt-see</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Mon, 16 Mar 2026 22:01:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yyX7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yyX7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yyX7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!yyX7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!yyX7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!yyX7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yyX7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!yyX7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!yyX7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!yyX7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!yyX7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae6c21a-2cf7-480a-ae24-9d38cf37dc26_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>This is Part 2 of a five-part series about building BenchBoard &#8212; a team management and live scorekeeping app for youth baseball and softball &#8212; with the help of AI tools. If you missed <a href="https://radicalinsider.substack.com/p/how-i-bit-off-more-than-i-could-chew">Part 1</a>, <a href="https://radicalinsider.substack.com/p/how-i-bit-off-more-than-i-could-chew">start there</a>. It sets the stage for everything that follows.</em></p><div><hr></div><p>In <a href="https://radicalinsider.substack.com/p/how-i-bit-off-more-than-i-could-chew">Part 1</a>, I mentioned that the AI once built a race condition directly into my live scorekeeping system. I said I&#8217;d tell you the full story. So here it is.</p><p>But first, a little context &#8212; because this story doesn&#8217;t make sense unless you understand what BenchBoard is actually doing under the hood.</p><h2>What a &#8220;Simple&#8221; Lineup Actually Looks Like in Code</h2><p>When most people hear &#8220;lineup management,&#8221; they picture a list. A list of players, nine positions, maybe a batting order. How hard could it be?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6vf3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6vf3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 424w, https://substackcdn.com/image/fetch/$s_!6vf3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 848w, https://substackcdn.com/image/fetch/$s_!6vf3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 1272w, https://substackcdn.com/image/fetch/$s_!6vf3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6vf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png" width="394" height="503" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:503,&quot;width&quot;:394,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38442,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191169135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6vf3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 424w, https://substackcdn.com/image/fetch/$s_!6vf3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 848w, https://substackcdn.com/image/fetch/$s_!6vf3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 1272w, https://substackcdn.com/image/fetch/$s_!6vf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0c0ef2-6bc5-4b89-8cd0-7fec2740cd4e_394x503.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><p>Here&#8217;s how hard.</p><p>A lineup in BenchBoard isn&#8217;t a list. It&#8217;s a <em>snapshot</em> &#8212; a single atomic record that holds three separate JSON blobs at the same time: who&#8217;s active on the roster (ManagePlayersJson), what order they&#8217;re batting in (BattingOrderJson), and where they&#8217;re positioned on the field (DefenseJson). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qsHc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qsHc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 424w, https://substackcdn.com/image/fetch/$s_!qsHc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 848w, https://substackcdn.com/image/fetch/$s_!qsHc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 1272w, https://substackcdn.com/image/fetch/$s_!qsHc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qsHc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png" width="822" height="678" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:678,&quot;width&quot;:822,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147306,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191169135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qsHc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 424w, https://substackcdn.com/image/fetch/$s_!qsHc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 848w, https://substackcdn.com/image/fetch/$s_!qsHc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 1272w, https://substackcdn.com/image/fetch/$s_!qsHc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F058ac4fc-4e39-48a3-bcf1-b21a61fa084e_822x678.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>All three of those blobs interact with each other.</p><p>Here&#8217;s what a single LineupSnapshot actually looks like in the database. One row. Three blobs. Everything about your team&#8217;s current state lives here:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;45cd4705-09bd-4b28-98b6-0dac2204c5be&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">LineupSnapshot (one row per team per game)
&#9500;&#9472;&#9472; TeamId: "a]4f2e..."
&#9500;&#9472;&#9472; GameId: "7dee-4c9d..." (null = practice mode)
&#9474;
&#9500;&#9472;&#9472; ManagePlayersJson:
&#9474;   [
&#9474;     { "playerId": "p-001", "name": "Barry Bonds",     "jersey": 25, "active": true  },
&#9474;     { "playerId": "p-002", "name": "Jennie Finch",    "jersey": 27, "active": true  },
&#9474;     { "playerId": "p-003", "name": "Jackie Robinson", "jersey": 42, "active": true  },
&#9474;     { "playerId": "p-004", "name": "Yogi Berra",      "jersey": 8,  "active": true  },
&#9474;     { "playerId": "p-005", "name": "Monica Abbott",   "jersey": 14, "active": false },
&#9474;     ...12 players total
&#9474;   ]
&#9474;
&#9500;&#9472;&#9472; BattingOrderJson:
&#9474;   [
&#9474;     { "playerId": "p-003", "order": 1 },   // Jackie Robinson leads off
&#9474;     { "playerId": "p-001", "order": 2 },   // Barry Bonds bats second
&#9474;     { "playerId": "p-002", "order": 3 },   // Jennie Finch bats third
&#9474;     { "playerId": "p-004", "order": 4 },   // Yogi Berra cleanup
&#9474;     ...only active players, sequential, no gaps
&#9474;   ]
&#9474;
&#9500;&#9472;&#9472; DefenseJson:
&#9474;   {
&#9474;     "p-001": 9,    // Barry Bonds &#8594; Left Field
&#9474;     "p-002": 3,    // Jennie Finch &#8594; Pitcher
&#9474;     "p-003": 8,    // Jackie Robinson &#8594; Shortstop
&#9474;     "p-004": 11,   // Yogi Berra &#8594; Right Field
&#9474;     "p-005": 1,    // Monica Abbott &#8594; Bench Slot 1 (inactive)
&#9474;     ...
&#9474;   }
&#9474;   // Position IDs: 1=Bench1, 2=Bench2, 3=Pitcher, 4=Catcher,
&#9474;   // 5=1st, 6=2nd, 7=3rd, 8=SS, 9=LF, 10=CF, 11=RF
&#9474;
&#9492;&#9472;&#9472; LockLineupToggle: false</code></pre></div><p>See how they connect? If you deactivate <em>Monica Abbott</em> in ManagePlayersJson (<code>active: false</code>), that has to cascade into <strong>BattingOrderJson</strong> &#8212; she gets removed and the order renumbers so there&#8217;s no gap at position 5. And it has to cascade into <strong>DefenseJson</strong>, because if she was at pitcher, you can&#8217;t leave an empty circle on the mound. Everything ripples.</p><p>That&#8217;s the resting state. Now make it live. A coach is standing on a field with their phone, moving players around mid-game. A parent in the stands is watching a live scoreboard on their phone. The scorekeeper is tracking pitches in real time. All of these views need to stay in sync, instantly, and they all read from the same underlying data.</p><p>This is the kind of complexity that sounds manageable when you describe it in a sentence but becomes a monster the moment you start writing the code. And it&#8217;s the kind of complexity that LLMs are terrible at anticipating &#8212; because they&#8217;ve never stood on a field and watched a coach frantically swap their right fielder for a kid who just showed up late.</p><div><hr></div><h2>Three Tables Walk Into a Bar</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!blPO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!blPO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!blPO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!blPO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!blPO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!blPO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!blPO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!blPO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!blPO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!blPO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16c0ed3-f468-45a0-b725-0b04f4e7444b_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Robots in a bar. Anime style</figcaption></figure></div><p>Let me tell you how this mess started, because it&#8217;s a perfect example of how AI-generated prototypes can set you up for pain down the road.</p><p>Back in July, when I was still on ChatGPT, I was using Codex to build out the early screens &#8212; the roster view, the lineup card, the field diagram. Basic prototypes. The kind of thing where you describe what you want and the AI generates a working UI in minutes. And it was impressive. I had screens that looked real within hours.</p><p>But here&#8217;s what Codex also did: it looked at those prototypes and decided what the database should look like. It saw a roster screen, a batting order screen, and a field position screen &#8212; three screens &#8212; and created three tables. One for managing which players were active (LineupEntries). One for the batting order. One for the defensive positions (DefensiveAssignments). It even told me the schema was &#8220;expandable and would work perfectly over time.&#8221; Real words from the LLM. Not mine.</p><p>From a database design perspective, it wasn&#8217;t a bad answer. It&#8217;s what you&#8217;d find in a textbook. Each concern is separated. Each table has a clear purpose. If you were building a homework assignment, you&#8217;d get an A.</p><p>But I wasn&#8217;t building a homework assignment. I was building an app where a coach is standing on a field in 95-degree heat, trying to swap two players before the umpire yells &#8220;Play ball.&#8221; And in that world, three tables is a disaster.</p><p>Every time a coach made a change &#8212; moving a player from the bench to the field, or swapping two players in the batting order &#8212; the system had to coordinate writes across three tables. If one write succeeded and another failed (network hiccup, timeout, race condition), you&#8217;d get an inconsistent state. The batting order says the player is #6, but the manage-players table says they&#8217;re inactive. The field shows them at shortstop, but the batting lineup doesn&#8217;t have them at all.</p><p>The number of database migrations I&#8217;ve had since those original three tables is insane. At one point I had 36 migration files just for DefensiveAssignments alone &#8212; adding slot constraints, bench slots, indexes, field position constraints. Every time I discovered a new edge case, it was another migration. Another schema change. Another deployment risk.</p><p>This is the kind of thing the AI never warned me about. It looked at three screens and gave me three tables. It didn&#8217;t think about what happens when all three need to change atomically in the same instant.</p><p>And before someone in the comments says &#8220;well, you should&#8217;ve used MongoDB&#8221; or &#8220;NoSQL would&#8217;ve solved this&#8221; &#8212; no. Hard no. I need transactions. I need relational integrity. I need to know that when a coach confirms a lineup, that data is <em>exactly</em> what the system says it is. I need hard receipts. A scorekeeping app isn&#8217;t a dashboard pulling from a million data stores &#8212; it&#8217;s a system of record. Every pitch, every substitution, every lineup change needs to be verifiable and consistent. I love MongoDB &#8212; it&#8217;s a great database for the right use case. This isn&#8217;t it. Document-based storage would&#8217;ve given me the same data consistency nightmares, just wrapped in a different syntax. And honestly, it probably would&#8217;ve been messier, because at least with SQL Server I get real foreign keys and real transaction isolation.</p><p>Eventually, I made the call to consolidate all three tables into a single <strong>LineupSnapshot</strong> &#8212; one atomic record that holds everything. When the coach makes a change, one record gets written. If it fails, it fails completely. If it succeeds, everything is consistent. The refactor touched dozens of files across both the backend and frontend, required migrating all existing data, and took days. But when it was done, an entire category of bugs just disappeared.</p><p>The AI didn&#8217;t suggest this refactor. </p><p>I did. </p><p>Because I&#8217;d been living with the bugs its original &#8220;expandable&#8221; schema created for months.</p><div><hr></div><h2>The Night I Found Two Players at Right Field</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pGi5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pGi5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!pGi5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!pGi5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!pGi5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pGi5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pGi5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!pGi5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!pGi5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!pGi5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec58e159-951d-4921-a7df-5ff662f38ff0_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Two baseball players arguing over covering right field.</figcaption></figure></div><p>A few weeks later, I&#8217;m testing BenchBoard late at night. I&#8217;m dragging players around the field &#8212; moving Jackie Robinson to right field, where Yogi Berra is already stationed. Standard swap. The app should move Jackie to RF and send Yogi somewhere else &#8212; back to his original position or to the bench.</p><p>I do the drag. It looks fine. I switch to a different game to check something. I switch back.</p><p>Two players at right field. Jackie and Yogi, both sitting in the same position. That&#8217;s not supposed to be possible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mZdk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mZdk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 424w, https://substackcdn.com/image/fetch/$s_!mZdk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 848w, https://substackcdn.com/image/fetch/$s_!mZdk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 1272w, https://substackcdn.com/image/fetch/$s_!mZdk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mZdk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png" width="481" height="488" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:488,&quot;width&quot;:481,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72598,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191169135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mZdk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 424w, https://substackcdn.com/image/fetch/$s_!mZdk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 848w, https://substackcdn.com/image/fetch/$s_!mZdk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 1272w, https://substackcdn.com/image/fetch/$s_!mZdk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fad9f-6f46-447e-91c2-131740e04f5d_481x488.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I check the console logs. The data is there &#8212; the system knows there are two players at RF. But somehow the snapshot saved with both of them at the same position. The deduplication logic on the backend catches it after the fact, but the damage is already done. The data is dirty.</p><p>So I start tracing the flow with the AI, and here&#8217;s what we find.</p><p>When a coach drags a player to a new defensive position, the system does four things:</p><ol><li><p><strong>Optimistic update</strong> &#8212; the frontend store immediately swaps the players so the UI feels instant.</p></li><li><p><strong>syncSnapshot fires</strong> &#8212; the frontend serializes the entire store and writes the lineup snapshot to the database. Writer #1.</p></li><li><p><strong>The defensive controller fires</strong> &#8212; a separate API call tells the backend to process the swap with its own logic and write the result to the same snapshot. Writer #2.</p></li><li><p><strong>Re-fetch</strong> &#8212; the frontend pulls the latest snapshot from the backend and rehydrates the store from whatever it finds.</p></li></ol><p>See the problem?</p><p>Steps 2 and 3 are both writing to the <em>same database record</em> at the <em>same time</em>. It&#8217;s a textbook race condition. Here&#8217;s what it looks like with real data:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;f9f17122-82bc-4882-b798-a2f271e6a351&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">BEFORE THE DRAG:
  DefenseJson: { "p-003": 8, "p-004": 11, ... }
               // Jackie &#8594; SS,  Yogi &#8594; RF

COACH DRAGS JACKIE TO RIGHT FIELD:

  Step 1 - Frontend optimistic update:
    { "p-003": 11, "p-004": 1, ... }
    // Jackie &#8594; RF, Yogi &#8594; Bench1 &#10003; (looks right)

  Step 2 - syncSnapshot writes to DB:          &#8592; Writer #1
    saves { "p-003": 11, "p-004": 1, ... }
    // Jackie &#8594; RF, Yogi &#8594; Bench1

  Step 3 - Defensive controller writes to DB:  &#8592; Writer #2
    saves { "p-003": 11, "p-004": 8, ... }
    // Jackie &#8594; RF, Yogi &#8594; SS (his original spot) &#8592; CORRECT

  WHO WINS? Whichever HTTP response finishes LAST.

  If Step 2 finishes after Step 3:
    DB has: { "p-003": 11, "p-004": 1, ... }
    // Yogi is on Bench1 instead of back at SS
    // The controller's correct swap got silently overwritten</code></pre></div><p>Whichever HTTP response finishes last wins. If syncSnapshot finishes after the defensive controller, it overwrites the controller&#8217;s properly-computed swap with the frontend&#8217;s optimistic state &#8212; which has Yogi bumped to bench slot 1 instead of back to his original position. The backend controller&#8217;s correct answer gets silently erased.</p><p>The AI identified the race condition once I pointed out the symptoms. It then proposed what it called &#8220;the clear answer&#8221;: just stop calling syncSnapshot from the defensive drag handlers. Let the defensive controller be the sole writer.</p><p>That&#8217;s a band-aid. It would&#8217;ve fixed <em>this particular</em> race condition. But it wouldn&#8217;t fix the architectural flaw underneath &#8212; which is that there were multiple independent writers competing for the same data, with no coordination between them.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kH_5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kH_5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 424w, https://substackcdn.com/image/fetch/$s_!kH_5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 848w, https://substackcdn.com/image/fetch/$s_!kH_5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 1272w, https://substackcdn.com/image/fetch/$s_!kH_5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kH_5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png" width="1024" height="1070" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1070,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1326100,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191169135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kH_5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 424w, https://substackcdn.com/image/fetch/$s_!kH_5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 848w, https://substackcdn.com/image/fetch/$s_!kH_5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 1272w, https://substackcdn.com/image/fetch/$s_!kH_5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70f8e-88aa-42d5-bbf5-934f1049598f_1024x1070.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>&#8220;No. I Have a Better Architecture.&#8221;</h2><p>That was my exact response to the AI. And what followed was one of the most interesting dynamics of this entire build.</p><p>I didn&#8217;t just disagree with the AI&#8217;s fix. <strong>I redesigned the whole pipeline.</strong> </p><p>Here&#8217;s what I told it:</p><p>syncSnapshot becomes the <em>parent</em> &#8212; the single orchestrator for all lineup changes. Every action &#8212; whether it&#8217;s a roster toggle, a batting order drag, or a defensive position swap &#8212; flows through syncSnapshot as a pipeline with three stages:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;7e218fa1-2405-4568-9d2b-fdfc4576c96c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Coach action (drag / toggle / activate)
  &#9474;
  &#9660;
syncSnapshot &#8212; the single orchestrator
  &#9474;
  &#9500;&#9472;&#9658; MPCon (ManagePlayersController)
  &#9474;     Runs FIRST. Diffs the roster.
  &#9474;     "Monica Abbott just got deactivated."
  &#9474;
  &#9500;&#9472;&#9658; BLCon (BattingLineupController)
  &#9474;     Runs SECOND. Reads MPCon's output.
  &#9474;     "Monica was batting 5th &#8212; close the gap,
  &#9474;      renumber 6&#8594;5, 7&#8594;6, 8&#8594;7..."
  &#9474;
  &#9492;&#9472;&#9658; DLCon (DefensiveLineupController)
        Runs LAST. Reads MPCon's output.
        "Monica was at Pitcher &#8212; she's inactive now,
         move the sub in. Only I write DefenseJson.
         No one else. Ever."
  &#9474;
  &#9660;
Write once &#8594; localStorage &#8594; SignalR push to DB
  &#9474;
  &#9660;
RenderMainBoard &#8212; rehydrate UI from the updated store</code></pre></div><p></p><p><strong>Stage 1: ManagePlayersController</strong> runs first. It checks what&#8217;s changed in the roster &#8212; who got activated, who got deactivated. It establishes the ground truth of who&#8217;s even available.</p><p><strong>Stage 2: BattingLineupController</strong> runs next. It reads the roster state from Stage 1, looks at the batting order (which may have been reordered via drag-and-drop), and renumbers to fill any gaps. If a player was deactivated in Stage 1, the batting order closes the hole automatically.</p><p><strong>Stage 3: DefensiveLineupController</strong> runs last. It reads the roster state from Stage 1, processes any defensive position changes, enforces the rules (one player per field position, swap logic), and builds the final DefenseJson. No other handler anywhere in the system is allowed to write DefenseJson. This is the single source of truth.</p><p>After all three stages complete, the system writes everything to localStorage, pushes to the database via SignalR, and rehydrates the UI.</p><p>One pipeline. One write path. No races.</p><p>The AI&#8217;s response? </p><h3>&#8220;Good architecture.&#8221; </h3><p>Then it asked me six clarifying questions &#8212; smart ones &#8212; about trigger timing, swap logic ownership, whether the old API endpoint should be replaced entirely, how the rendering layer should consume the results, and whether practice mode follows the same path.</p><p>I answered all six. The AI then produced a perfect diagram of the architecture, confirmed its understanding, and started implementing.</p><p><em>That&#8217;s</em> the dynamic. The AI is an incredible implementer. It can take a well-defined architecture and execute it flawlessly across a dozen files in a fraction of the time it would take me. But it didn&#8217;t &#8212; and couldn&#8217;t &#8212; design that architecture. Not because it&#8217;s stupid. Because it doesn&#8217;t have the context. It doesn&#8217;t know that coaches switch between games constantly on their phones. It doesn&#8217;t know that a guest player might show up wearing the same jersey number as your starting pitcher. It doesn&#8217;t know that eventually I want parents watching a live scoreboard on a TV at the concession stand.</p><p>I know those things because I&#8217;m the coach. I&#8217;m the parent. I&#8217;m the guy who&#8217;s been at the field.</p><h2>Why the Band-Aid Would&#8217;ve Come Back to Bite Me</h2><p>Let me explain why the AI&#8217;s original fix &#8212; &#8220;just don&#8217;t call syncSnapshot from MainField&#8221; &#8212; would have failed down the road.</p><p>Under that approach, defensive changes would go through one code path, and batting/roster changes would go through another. Two separate write paths, two separate sets of assumptions, no guarantees about ordering or consistency.</p><p>Now imagine this: a coach deactivates a player from the roster (manage-players path) at the exact moment the scorekeeper swaps a defensive position (defensive path). Under the band-aid fix, those are two independent operations hitting the same snapshot with no awareness of each other. The deactivation writes ManagePlayersJson, and then the defensive swap writes DefenseJson &#8212; but DefenseJson still has the deactivated player at shortstop because the defensive controller didn&#8217;t know about the roster change.</p><p>With the unified pipeline, that can&#8217;t happen. The roster change flows through MPCon first, then BLCon, then DLCon &#8212; and DLCon already knows the player is inactive before it processes the defensive state.</p><p>This is what I mean when I say the AI can&#8217;t architect your system. It can identify a bug. It can propose a fix. But it can&#8217;t see the second-order consequences of that fix six months from now when your user base has tripled and coaches are making changes during live games while their phone signal drops in and out.</p><p>That requires judgment. That requires experience. That requires having been in the mess yourself.</p><div><hr></div><h2>The Uncomfortable Truth About &#8220;Vibe Coding&#8221;</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kT1q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kT1q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!kT1q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!kT1q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!kT1q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kT1q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2991878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191169135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kT1q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!kT1q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!kT1q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!kT1q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f36fe8-3bb5-4839-bfc5-0545d852b5e5_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There&#8217;s a trend right now &#8212; people calling it &#8220;vibe coding&#8221; &#8212; where you just keep prompting the AI until something works. No architecture. No planning. No understanding of what the code is actually doing. Just vibes. And you can thank Andrej Karpathy for that one. The irony is that he&#8217;s actually a damn good coder. But that&#8217;s what happens when your post about &#8220;coding with vibes&#8221; goes viral.</p><p>Look, I get the appeal. </p><p>It feels fast. And for a demo, a prototype, or a personal project that only you&#8217;ll ever use, maybe that&#8217;s fine.</p><p>But for anything real &#8212; anything that other people will depend on, anything that handles live data, anything that needs to work when the network drops or two users hit the same button at the same time &#8212; vibe coding is a time bomb.</p><p>The race condition I just described? That&#8217;s a vibe coding bug. Everything <em>looks</em> fine. The UI updates. The data saves. It only breaks when the timing is just wrong enough that two writes collide. You&#8217;d never catch it in a demo. You&#8217;d only catch it when a real coach, on a real field, switches games at exactly the wrong moment and sees two players at right field.</p><p>If you don&#8217;t understand what a race condition is &#8212; if you&#8217;ve never been taught about concurrent writes, atomic operations, or state management &#8212; you&#8217;ll never know why your app &#8220;randomly&#8221; loses data. You&#8217;ll blame the framework. You&#8217;ll blame the hosting provider. You&#8217;ll keep prompting the AI to &#8220;fix the bug&#8221; and it&#8217;ll keep applying band-aids to symptoms instead of addressing the architecture.</p><p>And I say this as someone who loves these AI tools and uses them every single day. They are genuinely incredible. But they&#8217;re tools. And a tool in the hands of someone who doesn&#8217;t understand the work is just a more efficient way to create problems.</p><div><hr></div><h2>The Wrong Team on the Wrong Screen</h2><p>The race condition wasn&#8217;t the only invisible bug the AI created. Here&#8217;s one that was arguably scarier &#8212; because it was a data integrity issue that affected <em>which user&#8217;s data showed up</em>.</p><p>One night I&#8217;m testing multi-user flows. I log in as one test account &#8212; let&#8217;s call him Baker Mayfield, UserID 7. His team should load. His players. His roster. Instead, I&#8217;m looking at 28 players that belong to a completely different account &#8212; UserID 3, a dev test account I&#8217;d been using earlier.</p><p>I check localStorage. Sure enough, the stored team ID doesn&#8217;t match the logged-in user. The AI had set up localStorage with generic keys &#8212; just a flat <code>teamId</code> and <code>settings</code> &#8212; with no namespacing per user. So when I logged in as a different user in the same browser, the old user&#8217;s data was still sitting there. The app saw a valid team ID in storage, loaded it, and never questioned whether it belonged to the person actually logged in.</p><p>This is the kind of bug that <em>works</em> as long as you only ever test with one account. The moment a second user touches the same browser &#8212; or you&#8217;re a developer switching between test accounts, which you do fifty times a day &#8212; everything looks fine but the data is wrong.</p><p>I told the AI: there should be exactly three keys in localStorage, and they need to be scoped per team and per user:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;90fcb79c-ac0c-41d3-9129-5ec2265c4b54&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">team_[TeamID]_user_[UserID]_bbentities   (TTUUB)
team_[TeamID]_user_[UserID]_settings     (TTUS)
currentUser_[UserID]                     (CUID)</code></pre></div><p>That&#8217;s it. They sit side by side, each one namespaced to its owner. When a different user logs in, their keys are separate. No cross-contamination. No loading Baker Mayfield&#8217;s screen with someone else&#8217;s roster.</p><p>The AI didn&#8217;t design this namespacing. It built a flat storage scheme that worked for one user and silently broke for two. I caught it because I was actually testing the app the way real people would use it &#8212; switching accounts, sharing a device, logging out and back in. The AI never simulated that.</p><div><hr></div><h2>Same Browser, Two Environments, One Nightmare</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IvJ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IvJ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!IvJ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!IvJ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!IvJ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IvJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3051560,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/191169135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IvJ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!IvJ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!IvJ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!IvJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58747f4c-81c8-4aff-b3b4-110024460700_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">No. That&#8217;s not what my app looks like but I&#8217;m just trying to illustrate a point. </figcaption></figure></div><p>While we&#8217;re talking about invisible bugs: here&#8217;s a lesson that cost me an entire evening and has nothing to do with code quality.</p><p>If you&#8217;re running a containerized development environment and a production environment &#8212; do NOT use the same browser for both. And definitely don&#8217;t use the same email addresses.</p><p>I was testing on <code>localhost:5173</code> (local dev) and <code>api.benchboard.org</code> (production). Same browser. Same test email. Both environments issue JWT tokens. And JWT tokens live in the browser.</p><p>So what happens? I visit production, get a valid production token. Switch to localhost, the token is still there. The local frontend sees a &#8220;valid&#8221; token and lets me in &#8212; but the token is for the wrong environment. Everything looks logged in. Some API calls work because the token hasn&#8217;t expired yet. Others silently fail with 404s instead of 401s because the production endpoints have changed.</p><p>I spent an evening debugging what looked like a broken API. It wasn&#8217;t broken. I was authenticated against the wrong server with a stale token from a different environment.</p><p>The fix is stupidly simple: use Chrome for dev, Firefox for production. Or use separate browser profiles. The AI will never tell you this because it&#8217;s not a code problem &#8212; it&#8217;s an operational problem. It&#8217;s the kind of thing you only learn by doing it wrong at 11 PM on a Tuesday.</p><div><hr></div><h2>When You Know Exactly Where to Point the AI</h2><p>I&#8217;ve been hard on the AI in this article, so let me show you the flip side &#8212; a moment where knowing my own codebase turned the AI into a surgical instrument.</p><p>I had a layout bug in the scoreboard. In demo mode, the inning scores, the R/H/E table, the ball-strike-out count, and the base diamond were all shifted to the right &#8212; overlapping, overflowing, completely broken. But when I logged in as a real user, everything rendered perfectly.</p><p>Now, if I didn&#8217;t know what I was looking at, I&#8217;d prompt the AI with something vague like &#8220;the scoreboard looks broken in demo mode, fix it.&#8221; And the AI would start guessing. It might rewrite the whole grid. It might restructure the component. It might introduce five new bugs while fixing one.</p><p>Instead, here&#8217;s what I did. I opened the browser&#8217;s inspect element. I found the CSS class on the broken section: <code>rounded-tl-md rounded-bl-md overflow-hidden</code>. I searched my codebase for that class to identify the exact file and line number. I noticed that the code was well-commented &#8212; each section marked with <code>=== Inning Score Table ===</code>, <code>=== R / H / E Table ===</code>, <code>=== B / S / O Count ===</code>. Then I gave the AI this prompt:</p><p><em>&#8220;Can you take a look into &#8216;DEMO MODE&#8217; under Scoreboard-v4-desktop.jsx? Just under that mode, the Inning Score Table, R / H / E Table, B / S / O Count and Base Diamond are all over the place. But when I&#8217;m logged on it displays fine. Start here @Scoreboard-v4-desktop.jsx#L101-106 and make your way to the rest of the code and tell me what you&#8217;ve found @Scoreboard-v4-desktop.jsx#L108-341&#8221;</em></p><p>Specific file. Specific line numbers. Specific symptom. Specific scope.</p><p>The AI came back in seconds with the exact root cause: a <code>&lt;Show&gt;</code> block was rendering an empty <code>&lt;div /&gt;</code> inside a CSS grid container. In demo mode, that empty div occupied a grid column slot, pushing every table one column to the right. In logged-in mode, the same block rendered an absolutely-positioned overlay that didn&#8217;t participate in grid flow &#8212; so the layout was fine.</p><p>The fix? One line:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;8bf330c4-02f4-4cc6-bfbe-0ded32abad21&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">BEFORE: &lt;div /&gt;
AFTER:  &lt;div class="absolute" /&gt;</code></pre></div><p><br>That&#8217;s it. One CSS class. The entire scoreboard snapped back into place.</p><p>The lesson isn&#8217;t that the AI is smart &#8212; it is, but so is a chainsaw. The lesson is that when you know your codebase well enough to point the AI at the right ten lines instead of the whole file, it becomes terrifyingly efficient. The people who are &#8220;vibe coding&#8221; &#8212; just throwing the whole problem at the AI and hoping &#8212; they&#8217;d never get this result. They&#8217;d get a rewrite of the entire component that introduces three new bugs.</p><p><strong>You have to know where to aim.</strong></p><div><hr></div><h2>Where AI Shined in This Story</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FVaG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FVaG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!FVaG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!FVaG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!FVaG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FVaG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FVaG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!FVaG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!FVaG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!FVaG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c019d2f-4c91-4547-8984-3c8c9b7dcf6c_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Robot with arms folded - anime style</figcaption></figure></div><p>I want to be fair here, because the AI absolutely earned its keep in this refactor.</p><p>Once I defined the architecture &#8212; the pipeline, the stages, the write paths &#8212; the AI implemented it across the entire codebase in a fraction of the time it would have taken me alone. It traced every file that needed to change. It found every broadcast location that needed retargeting. It updated the backend controllers, the frontend store, the SignalR client, and the UI components in a coordinated sweep. Then it committed the changes with a detailed message that documented exactly what changed and why.</p><p>That&#8217;s what I mean by &#8220;accelerator.&#8221; The thinking was mine. The execution was a partnership. And the result was better than either of us could&#8217;ve produced alone &#8212; me because it would&#8217;ve taken me days to touch that many files manually, and the AI because it never would&#8217;ve designed the pipeline in the first place.</p><div><hr></div><p><em>Next up &#8212; Part 3: &#8220;The Feedback That Changed Everything.&#8221; I&#8217;ll tell you about the moment real coaches &#8212; people who found BenchBoard through search and started using it without being asked &#8212; told me the truth: &#8220;It&#8217;s a nice toy, but it needs data.&#8221; That feedback meant I had to build an entire live scorekeeping engine on top of what I already had. Essentially a second app. And the decision to do it terrified me.</em></p><p><em>If you're following this series and it's resonating &#8212; subscribe. Part 3 is the turning point where BenchBoard stopped being a side project and became something real.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[How I Bit Off More Than I Could Chew Building This SaaS — Even With the "Best" LLMs]]></title><description><![CDATA[Part 1 of 5: The BenchBoard Build - The Honest Truth About Building with AI]]></description><link>https://radicalinsider.org/p/how-i-bit-off-more-than-i-could-chew</link><guid isPermaLink="false">https://radicalinsider.org/p/how-i-bit-off-more-than-i-could-chew</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Thu, 12 Mar 2026 14:03:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DrPG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;m Rad. Founder of BenchBoard. Engineer. Dad. Youth Coach. I&#8217;ve been writing code for decades &#8212; starting on a Commodore 64 with programs I copied out of library magazines onto cassette tapes. This series is about what actually happens when a veteran developer tries to build a real product with AI tools. Not the highlights reel. The whole messy truth.</p><p>I&#8217;ve been building BenchBoard since November, but the truth is the planning started way back in July. What began as a clean, exciting idea &#8212; a team management and scorekeeping app for youth baseball and softball &#8212; slowly evolved into a full-blown beast. The kind of beast you don&#8217;t fully understand until you&#8217;re already riding it downhill with no brakes.</p><p>And here&#8217;s the part I didn&#8217;t expect: using LLMs made the journey both faster <em>and</em> way more chaotic.</p><p>If you&#8217;ve spent any time on tech Twitter or LinkedIn, you&#8217;ve seen the posts. &#8220;I built a SaaS in a weekend with AI!&#8221; &#8220;No-code to $10K MRR!&#8221; I&#8217;m not here to tell you those people are lying. Maybe they built something. But I&#8217;d bet my last Docker container it wasn&#8217;t handling live scorekeeping for a 12U softball game where a guest player shows up wearing the same jersey number as your starting shortstop.</p><p>This series is for the people who want the real version of the story.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DrPG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DrPG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!DrPG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!DrPG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!DrPG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DrPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2471113,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/190708477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DrPG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!DrPG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!DrPG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!DrPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce842951-5dab-4405-88a3-61df54d890fd_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>The First Big Lesson: Never Fully Trust the AI</h2><p>When I started, I leaned heavily on ChatGPT. At the time, it felt like a superpower &#8212; instant architecture suggestions, instant code, instant explanations. But LLMs evolve fast. What they tell you in July isn&#8217;t what they tell you in November. And what they tell you in November isn&#8217;t what they tell you in January.</p><p>I learned the hard way that if you let the AI dictate how your system should operate, you&#8217;ll end up rebuilding major chunks of your app over and over. That happened to me more than once. Not because the AI was &#8220;wrong,&#8221; but because it doesn&#8217;t understand the full context of your system, your constraints, your users, or your long-term vision.</p><p>It&#8217;s confident. It sounds right. But it doesn&#8217;t <em>know</em>.</p><p>Here&#8217;s a simple example. Early on, I asked the AI how to structure my data layer &#8212; how teams, players, games, and lineups should relate to each other. It gave me a clean answer. Three separate tables for managing players, batting order, and defensive positions. Looked great on paper. Months later, I realized those three tables needed to be one &#8212; a single <em>LineupSnapshot</em> that holds everything atomically. The AI&#8217;s original suggestion wasn&#8217;t wrong for a textbook exercise. But it was wrong for a real app where a coach is juggling lineup changes on their phone while kids are warming up on the field.</p><p>That refactor took days. Not because the code was hard to write &#8212; the AI helped me rewrite it fast. But because the <em>decision</em> to consolidate those tables required understanding how coaches actually use the app mid-game. No LLM has that context. <strong>I did, because I&#8217;ve been that coach.</strong></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xz4z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xz4z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!Xz4z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!Xz4z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!Xz4z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xz4z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xz4z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!Xz4z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!Xz4z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!Xz4z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03fae40-2c13-4f16-b31d-7c59af5faaef_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The Scope Problem (AKA: The Monster I Created)</h2><p>Another mistake: I didn&#8217;t properly scope what I was building early on. Every time I solved one problem, I discovered three more. <strong>Every time the AI suggested a &#8220;better&#8221; approach, I&#8217;d rethink the architecture. Before long, the scope ballooned.</strong></p><p>Let me give you a taste of what I mean. Take something that sounds simple: <strong>&#8220;Let the coach enter the opposing team&#8217;s lineup before a game.&#8221;</strong></p><p><strong>Sounds like a form with some text fields, right?</strong></p><p>Here&#8217;s what it actually requires:</p><ul><li><p>How do you split a full name into first and last when someone types &#8220;Mary Jo Smith&#8221;?</p></li><li><p>How do you deduplicate players when jersey numbers aren&#8217;t reliable because guest players rotate in and out?</p></li><li><p>Should the coach pick from a dropdown of known opponent players, or type fresh names every game?</p></li><li><p>If a coach corrects a player&#8217;s name mid-game during scorekeeping, does that correction propagate back to the opponent&#8217;s player record for future games?</p></li><li><p>What happens when a player is removed from the lineup &#8212; do you delete the player record entirely, or just remove them from the game?</p></li><li><p>What about prefilling positions from the last time you played this team?</p></li><li><p>What about jersey number conflicts &#8212; two rows with #7?</p></li></ul><p>That&#8217;s <em>one feature</em>. And we haven&#8217;t begun put the damn code in yet! I had a vision of doing a cool drag-and-drop feature for the batting order that would be extremely helpful for coaches - but you also need to think of what happens when the lineup changes before a live game start. What happens when <em>David</em> or <em>Grace</em> shows up last minute to play? Every single one of those gaps was something I identified through domain knowledge &#8212; from standing on actual fields, watching actual coaches fumble with clipboards and group texts.</p><p><strong>The AI never surfaced a single one of those edge cases on its own. </strong></p><p><strong>Not one.</strong></p><p>Eventually I had to force myself to define a hard cutoff &#8212; a line where I&#8217;d stop adding, stop rethinking, and start shipping. That discipline didn&#8217;t come naturally. It came from pain.</p><h2>What the AI Actually Fixed (And It&#8217;s Not Nothing)</h2><p>I don&#8217;t want to sound like I&#8217;m bashing AI tools. I&#8217;m not. They fundamentally changed how I work, and I wouldn&#8217;t go back.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3543" height="2365" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2365,&quot;width&quot;:3543,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;monitor showing Java programming&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="monitor showing Java programming" title="monitor showing Java programming" srcset="https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1461749280684-dccba630e2f6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx3ZWJzaXRlfGVufDB8fHx8MTc3MzMxMzIxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s what shifted. For the first 35-plus years of my career, when I hit a wall &#8212; a syntax issue, a connectivity problem, a framework quirk &#8212; I&#8217;d open a browser and start searching. Stack Overflow. Blog posts. GitHub issues. Sometimes I&#8217;d spend 45 minutes just figuring out the right search query to describe what I was dealing with. Then I&#8217;d read through six different answers, figure out which one applied to my specific stack, adapt it, test it, and move on.</p><p>That entire workflow is mostly gone now. The LLM handles the tedious stuff &#8212; the boilerplate, the syntax lookups, the &#8220;how do I connect X to Y&#8221; problems &#8212; in seconds. It&#8217;s like having a junior developer who has read every documentation page ever written, sitting right next to you, never getting tired. But this developer doesn&#8217;t know everything - <strong>only what you tell it to do</strong>.</p><p>And here&#8217;s the thing nobody tells you about that time savings: it doesn&#8217;t make your project smaller. It makes you <em>faster at discovering how big your project actually is</em>.</p><p>All that time I used to spend on Stack Overflow? Now I spend it on architecture decisions, domain logic, and scope management. </p><p><strong>The boring problems got automated. </strong></p><p><strong>The hard problems got exposed. </strong></p><p><strong>And the hard problems are </strong><em><strong>harder</strong></em><strong> &#8212; because no AI can make those calls for you.</strong></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gSrY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gSrY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!gSrY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!gSrY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!gSrY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gSrY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gSrY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!gSrY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!gSrY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!gSrY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ddea9-05f3-4c32-8b3a-bc7a6d925063_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A teacher teaches coding concepts to a student</figcaption></figure></div><h2>Programming Knowledge Still Matters &#8212; A Lot</h2><p>We live in a world where people genuinely believe you can build a production app without deep programming knowledge. And honestly, you can build <em>something</em>. You can get a landing page, a database, some API routes, maybe even a working prototype. Take a few minutes on Starter Story and you&#8217;ll see developers and normies put up stuff quickly when comes to solving quick problems and honestly, I have no issues with those guys. More power to you.</p><p>But if you&#8217;re building something complex &#8212; something that will eventually serve hundreds or thousands of real users in real time &#8212; you still need to understand how systems behave. How databases work. How entities relate. How state flows across web and mobile. How APIs communicate. How your customers will actually use the thing.</p><p>LLMs can generate code, but they can&#8217;t architect your system for you. They can&#8217;t foresee the scaling issues. They can&#8217;t understand the nuance of your domain. They can&#8217;t tell you when something &#8220;feels wrong.&#8221;</p><p>That&#8217;s your job.</p><p>And if you don&#8217;t understand what the LLM is doing &#8212; or <em>why</em> &#8212; you&#8217;re flying blind. And that&#8217;s a big one many new programmers and so-called vibe coders romantically fall hard on. </p><p>I&#8217;ve seen the AI confidently generate code with race conditions baked in, where two different parts of the system were writing to the same database record simultaneously, and whichever request finished last would silently overwrite the other. If you don&#8217;t know what a race condition is, you&#8217;d never catch it. You&#8217;d just wonder why your app randomly loses data. Copying and pasting that log over and over to the LLMs chat box won&#8217;t bail you out.</p><p>That&#8217;s not a hypothetical. That happened to me. And I&#8217;ll tell you the full story in Part 2.</p><div><hr></div><h2>Where This Leaves Me Now</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CpHt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CpHt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!CpHt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!CpHt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!CpHt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CpHt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d306a813-bd6c-4148-b233-0e3203391208_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CpHt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!CpHt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!CpHt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!CpHt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306a813-bd6c-4148-b233-0e3203391208_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Looking at white board trying to make a decision</figcaption></figure></div><p>BenchBoard has grown into something far bigger than I expected. It&#8217;s been frustrating, hilarious, exhausting, and incredibly rewarding. I&#8217;ve rebuilt parts of it multiple times. I&#8217;ve learned more in the last several months than I expected to learn in a year.</p><p>But the biggest takeaway?</p><p><strong>AI is an accelerator, not a replacement.</strong> It can help you move faster, but only if you know where you&#8217;re going.</p><p>And if you don&#8217;t &#8212; it&#8217;ll happily lead you into a ditch with a smile.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XNPT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XNPT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!XNPT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!XNPT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!XNPT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XNPT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XNPT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!XNPT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!XNPT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!XNPT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fbd553-2b49-4841-8af0-a77e20e5197a_1024x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><p>Next up &#8212; Part 2: &#8220;The Architecture the AI Couldn&#8217;t See.&#8221; I&#8217;ll walk you through the night the AI built a race condition into my live scorekeeping system - full code and everything. It confidently proposed a band-aid fix and I had to stop everything and redesigned the entire data pipeline myself. </p><p><strong>It&#8217;s the story that made me realize: the AI is a great passenger, but you&#8217;d better not let it drive.</strong></p><div><hr></div><p><strong>If this resonated with you &#8212; whether you&#8217;re a fellow builder, a developer who&#8217;s been in the game for decades, or someone just curious about what building real software actually looks like behind the curtain in today&#8217;s AI-driven world &#8212; subscribe. This is a five-part series, and it only gets more real from here.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How I Spent an Hour Fighting .gitignore (and My Sanity): The Hilarious Truth About Ignoring Folders in Git]]></title><description><![CDATA[There are days when software engineering feels like building the future. And then there are days when you spend an hour arguing with Git about whether a folder exists.]]></description><link>https://radicalinsider.org/p/how-i-spent-an-hour-fighting-gitignore</link><guid isPermaLink="false">https://radicalinsider.org/p/how-i-spent-an-hour-fighting-gitignore</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Sun, 08 Feb 2026 21:01:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9VH9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is the story of the latter &#8212; a tale of confusion, betrayal, enlightenment, and one extremely stubborn directory called <code>htmltemplates</code>.</p><h4>Act I: I Was Just Trying to Commit Code Like a Normal Human</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9VH9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9VH9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9VH9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9VH9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9VH9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9VH9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1711656,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9VH9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9VH9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9VH9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9VH9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4d5591-89da-46e8-ade8-b40ace4edff1_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This whole annoyance began while I was happily in the middle of committing a big batch of real, meaningful code changes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I was in the zone.<br>I was productive.<br>I was proud of myself.</p><p>And then - like a raccoon knocking over a trash can - I noticed something in <code>git status</code> that absolutely derailed my brain:</p><pre><code>Changes to be committed:
    new file: htmltemplates/Examine.html
    new file: htmltemplates/Sample.html
    new file: htmltemplates/Sample2.html</code></pre><p>A whole folder of sample HTML files.<br>Ugly, messy, irrelevant sample files.<br>I didn&#8217;t want them in my repo.<br>I didn&#8217;t want them in my commit.<br>I didn&#8217;t even want to <em>see</em> them.</p><p>So I did the obvious thing:</p><pre><code>git restore --staged htmltemplates/</code></pre><p>Boom. Unstaged.</p><p>Except&#8230; now they were showing up in red.<br>Untracked. Loud. Annoying.<br>Like a toddler in a grocery store.</p><p>And I couldn&#8217;t ignore it.<br>My brain refused to move on.<br>I <em>had</em> to fix it before committing anything else.</p><p>This is how the spiral began.</p><h3>Act II: The Descent Into Madness</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HN-v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HN-v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!HN-v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!HN-v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!HN-v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HN-v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1722674,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HN-v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!HN-v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!HN-v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!HN-v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf73faff-68c3-4353-9e89-858b59448ce2_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I added the folder to <code>.gitignore</code>:</p><p>Code</p><pre><code><code>htmltemplates/
</code></code></pre><p>Git responded:</p><pre><code><code>?? htmltemplates/
</code></code></pre><p>Just the folder.<br>Not the files.<br>Not the contents.<br>Just the folder itself, haunting me like a Victorian ghost.</p><p>So I tried the nuclear option:</p><pre><code><code>git rm -r --cached htmltemplates/
</code></code></pre><p>Git said:</p><pre><code><code>fatal: pathspec 'htmltemplates/' did not match any files
</code></code></pre><p>Excuse me?</p><p>I can SEE the files.<br>They are RIGHT THERE.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w1V1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w1V1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!w1V1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!w1V1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!w1V1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w1V1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1748056,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w1V1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!w1V1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!w1V1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!w1V1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b952879-af3b-43c5-b810-ad4e2df2c48e_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>I even sent a screenshot to my AI assistant like I was reporting a crime.</p><p>I added the folder to <code>.gitignore</code>:</p><p>Code</p><pre><code><code>htmltemplates/
</code></code></pre><p>Git responded:</p><p>Code</p><pre><code><code>?? htmltemplates/
</code></code></pre><p>Just the folder.<br>Not the files.<br>Not the contents.<br>Just the folder itself, haunting me like a Victorian ghost.</p><p>So I tried the nuclear option:</p><p>Code</p><pre><code><code>git rm -r --cached htmltemplates/
</code></code></pre><p>Git said:</p><p>Code</p><pre><code><code>fatal: pathspec 'htmltemplates/' did not match any files
</code></code></pre><p>Excuse me?</p><p>I can SEE the files.<br>They are RIGHT THERE.<br>I even sent a screenshot to my AI assistant like I was reporting a crime.</p><h3>Act III: The AI Therapist Enters</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UnTD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UnTD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!UnTD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!UnTD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!UnTD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UnTD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1727004,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UnTD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!UnTD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!UnTD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!UnTD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a9290a-9b16-461e-8def-33fc02560ad3_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>At this point, I&#8217;m in chat with Copilot. <br><em>Yes, CoPilot - because it&#8217;s just right there on my Windows desktop ok?</em> <br><br>Anyway, I&#8217;m like:</p><blockquote><p>&#8220;DUDE. WHAT IS THE DEAL.&#8221;</p></blockquote><p>And Copilot, with the calm energy of a monk who has seen centuries of human suffering, says:</p><blockquote><p>&#8220;Git ignores files, not folders.&#8221;</p></blockquote><p>I blinked.</p><p>She continued:</p><blockquote><p>&#8220;A folder only disappears when <em>every file inside it</em> is ignored.&#8221;</p></blockquote><p>I blinked harder.</p><p>Then came the moment &#8212; the one that will live in my memory forever.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Il7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Il7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8Il7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8Il7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8Il7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Il7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1689418,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Il7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8Il7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8Il7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8Il7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863c0010-f0c1-4a06-bac4-0691a9657752_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I typed:</p><blockquote><p>&#8220;OOOOH. ARE YOU SAYING THAT I need to do <code>htmltemplates/*</code>&#8221;</p></blockquote><p>And Copilot basically nodded like a proud parent watching their kid finally ride a bike. LLMs are weird but I guess it&#8217;s good it was teaching me rather than giving me a straight answer.</p><h3>Act IV: The Enlightenment</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EH7P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EH7P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EH7P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EH7P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EH7P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EH7P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1620792,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EH7P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EH7P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EH7P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EH7P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12f10552-0ffe-43a0-a0f6-6fd3fa43dedf_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I changed the rule to:</p><pre><code><code>htmltemplates/*
</code></code></pre><p>Saved.<br>Committed.<br>Ran <code>git status</code>.</p><p>And like a magician&#8217;s final flourish&#8230;<br>the folder vanished.</p><p>I swear I heard a choir.</p><h3>Act V: The Moral of the Story</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jh-G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jh-G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Jh-G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Jh-G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Jh-G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jh-G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1805013,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jh-G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Jh-G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Jh-G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Jh-G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2acaabd1-2b80-49fa-b38c-f7961c41d81c_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The feeling when you&#8217;ve finally figured it out</figcaption></figure></div><p>If you want Git to ignore a folder completely &#8212; like it never existed, like you&#8217;ve scrubbed it from the timeline &#8212; you need:</p><pre><code><code>htmltemplates/*</code></code></pre><p>Not:</p><pre><code><code>htmltemplates/</code></code></pre><p>Not:</p><pre><code><code>/htmltemplates/</code></code></pre><p>Not:</p><pre><code><code>../frontend/htmltemplates/</code></code></pre><p>Just:</p><pre><code><code>htmltemplates/*</code></code></pre><p>Because Git is a file&#8209;based ignore engine, not a directory&#8209;based one.<br>And because Git enjoys watching us suffer.</p><h3><strong>Act VI: Five Things I Wish I Knew About </strong><code>.gitignore</code><strong> Before Losing an Hour of My Life</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ETkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ETkU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ETkU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ETkU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ETkU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ETkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1714976,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/187315754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ETkU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ETkU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ETkU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ETkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5d166f-faae-4517-bcb1-0df61008584d_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Yes, I know the code doesn&#8217;t make sense. Just read my five points below. You can thank ChatGPT for this.</figcaption></figure></div><p>This is the part where I pass on the ancient wisdom I earned through pain, confusion, and yelling &#8220;WHAT IS THE DEAL&#8221; at my terminal.</p><h4><strong>1. Git ignores </strong><em><strong>files</strong></em><strong>, not folders</strong></h4><p>This is the rule that started my villain origin story.<br>You can write <code>folder/</code> all day long &#8212; Git will still show the folder itself unless every file inside it is ignored. Git is petty like that.</p><h4><strong>2. </strong><code>folder/</code><strong> and </strong><code>folder/*</code><strong> are NOT the same thing</strong></h4><p>This one feels like a prank.<br><code>folder/</code> means &#8220;ignore files under here&#8230; probably&#8230; maybe&#8230; depends on the moon phase.&#8221;<br><code>folder/*</code> means &#8220;ignore EVERYTHING inside this folder,&#8221; which is what you actually want 99% of the time.</p><h4><strong>3. Git will happily show you an empty folder just to mess with you</strong></h4><p>Even if the folder contains only ignored files, Git may still show the folder name as untracked.<br>It&#8217;s like Git saying, &#8220;Hey, I know you told me to ignore this, but I just wanted you to know it exists.&#8221;</p><h4><strong>4. </strong><code>.gitignore</code><strong> doesn&#8217;t apply until you commit it</strong></h4><p>This one got me too.<br>You can modify <code>.gitignore</code> all you want &#8212; Git will keep using the old version until you commit the new one.<br>It&#8217;s like Git is saying, &#8220;I&#8217;ll believe it when it&#8217;s in the history.&#8221;</p><h4><strong>5. If </strong><code>git rm -r --cached</code><strong> says &#8216;did not match any files,&#8217; it&#8217;s not lying</strong></h4><p>This error means Git is not tracking ANYTHING in that folder.<br>Not one file.<br>Not one byte.<br>Not even a whisper of a file.<br>Which is why it refuses to &#8220;untrack&#8221; something it never tracked in the first place.</p><h3>Epilogue: What I Learned</h3><ul><li><p>Git will happily ignore files.</p></li><li><p>Git will NOT ignore a folder unless all files inside it are ignored.</p></li><li><p>Git will show you an empty folder like it&#8217;s tattling on you.</p></li><li><p><code>.gitignore</code> rules are deceptively literal.</p></li><li><p>Talking to an AI about Git is surprisingly therapeutic.</p></li><li><p>And most importantly:<br><strong>Never try to &#8220;quickly fix something&#8221; in the middle of a big commit.</strong><br><strong>That&#8217;s how the chaos begins.</strong></p></li></ul><p>If you ever see <code>?? htmltemplates/</code> again, run.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why AI Still Fails at Logos and Why Designers Matter More Than Ever]]></title><description><![CDATA[The myth of AI-generated branding&#8212;and why real creativity still requires real people.]]></description><link>https://radicalinsider.org/p/why-ai-still-fails-at-logos-and-why</link><guid isPermaLink="false">https://radicalinsider.org/p/why-ai-still-fails-at-logos-and-why</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Fri, 30 May 2025 17:21:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/22f084a8-e3d3-47c2-85f1-8e3dec89643d_1248x702.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y_GO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y_GO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 424w, https://substackcdn.com/image/fetch/$s_!Y_GO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 848w, https://substackcdn.com/image/fetch/$s_!Y_GO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 1272w, https://substackcdn.com/image/fetch/$s_!Y_GO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y_GO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:489,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y_GO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 424w, https://substackcdn.com/image/fetch/$s_!Y_GO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 848w, https://substackcdn.com/image/fetch/$s_!Y_GO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 1272w, https://substackcdn.com/image/fetch/$s_!Y_GO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39d4d0d3-c61d-4f61-9ff2-8662cdb7c3fb.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eTgT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eTgT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 424w, https://substackcdn.com/image/fetch/$s_!eTgT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 848w, https://substackcdn.com/image/fetch/$s_!eTgT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 1272w, https://substackcdn.com/image/fetch/$s_!eTgT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eTgT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp" width="1248" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:1248,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127666,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eTgT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 424w, https://substackcdn.com/image/fetch/$s_!eTgT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 848w, https://substackcdn.com/image/fetch/$s_!eTgT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 1272w, https://substackcdn.com/image/fetch/$s_!eTgT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18264ef2-5eda-494e-bfc6-0a1c334c29bf_1248x702.webp 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Not bad human. Not bad.</figcaption></figure></div><p>Let&#8217;s get this out of the way: AI is absolute garbage at making logos. Not mid. Not decent. <strong>Garbage.</strong> And before you come at me with some synthetic brand mark made in Midjourney or DALL&#183;E that looks kinda cool in a vacuum&#8212;hold up. That&#8217;s the design equivalent of nailing a three-pointer in practice with no defenders. Try doing it in Game 7 of the Finals. Different league.</p><div><hr></div><h3>Logos Are Emotional Landmines, Not Just Pixels</h3><p>A great logo is <strong>less design, more signal.</strong> It&#8217;s the emotional fingerprint of a company. And AI? It still thinks a logo is a fancy graphic with a keyword or two thrown in. It doesn&#8217;t grasp:</p><ul><li><p>Why a simple swoosh says "speed"</p></li><li><p>Why the Apple bite means &#8220;thinking different&#8221;</p></li><li><p>Or why some logos are <em>meant</em> to be boring&#8212;because the brand is the hero, not the design</p></li></ul><p>Logos are decisions. Thousands of them. Made under pressure, aligned with legacy, target audience, psychology, and vision. Most of this nuance? AI skips. Or worse&#8212;mimics badly.</p><h3>Why AI Can&#8217;t Touch Real Brand Strategy (Yet)</h3><p>Here&#8217;s what branding specialists get and where AI still fumbles - even with all that training data:</p><p><strong>What Branding Pros Get:</strong></p><ul><li><p><strong>Emotional subtext</strong> &#8211; Understanding how certain colors, shapes, or symbols evoke subtle emotional responses based on life experience and cultural memory. A heart shape might suggest love, but a designer knows when it needs to suggest compassion vs. romance.</p></li><li><p><strong>Cultural timing</strong> &#8211; Sensing the right moment to release a brand or campaign based on social trends, political climates, or generational cues. Designers keep tabs on the zeitgeist.</p></li><li><p><strong>Strategic restraint</strong> &#8211; Knowing what <em>not</em> to include. Resisting the temptation to fill space or over-design. Trusting minimalism when appropriate.</p></li><li><p><strong>Brand voice</strong> &#8211; Crafting visuals that align with how the brand "speaks"&#8212;whether formal, witty, confident, playful, rebellious, or aspirational.</p></li><li><p><strong>Story arcs</strong> &#8211; Designing with the long game in mind. How does the brand evolve? Where does it go next? Pros plan visual systems that adapt and grow over time.</p></li></ul><p><strong>What AI Misses:</strong></p><ul><li><p><strong>Literal visuals</strong> &#8211; AI tends to translate prompts too literally. Ask for a logo that suggests speed, and it might give you a cheetah clipart.</p></li><li><p><strong>Static datasets</strong> &#8211; AI trains on past data. It doesn&#8217;t know what just happened in culture this week&#8212;or what&#8217;s coming.</p></li><li><p><strong>Design bloat</strong> &#8211; Without judgment, AI adds more visual noise instead of editing down. It struggles with elegance.</p></li><li><p><strong>Keyword soup</strong> &#8211; It interprets brand voice through word lists, not tonality. It might mash "fun," "fast," and "friendly" into a chaotic blob.</p></li><li><p><strong>Style averages</strong> &#8211; AI often blends styles from millions of references, which leads to forgettable, generic outcomes rather than bold, defining statements.</p></li></ul><p>A brand strategist knows when <em>not</em> to add a shape. When to leave white space. When to choose a color because it taps into childhood nostalgia for your audience. AI? It just throws spaghetti.</p><p>There&#8217;s also <strong>design intent</strong>&#8212;the invisible blueprint behind every creative decision. AI doesn&#8217;t understand why one curve suggests elegance and another screams tech startup. It doesn&#8217;t know when a mark needs to whisper rather than shout.</p><h3>But Can&#8217;t We Just Train It Better?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tB2D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tB2D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tB2D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tB2D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tB2D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tB2D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2286893,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tB2D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tB2D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tB2D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tB2D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c14eefe-7114-4eef-8308-ed1ab1dada67_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Make a robot draw something next to a human who disapproves of the logo&#8221;</figcaption></figure></div><p>In theory? Sure. But here&#8217;s what that would take:</p><ul><li><p>Internal branding decks with rationale</p></li><li><p>Rejected design drafts <em>with explanations</em></p></li><li><p>Cultural context of each campaign</p></li><li><p>Customer emotional feedback over time</p></li><li><p>Iteration notes from real creative directors</p></li></ul><p>You&#8217;d need <strong>decades of human decision-making</strong>, not just pretty logos. AI needs to see what <em>didn&#8217;t</em> work, and why. And even then, you&#8217;re still missing something fundamental:</p><p><strong>Taste, timing, and intuition.</strong> These aren&#8217;t teachable in a traditional sense. AI can learn data. It can&#8217;t live through a rebrand disaster, a client meltdown, or a pivot that changed everything.</p><p>One of my close friends was a lead graphic designer&#8212;legit talented, leading a team that created incredible campaigns. His whole department was laid off when the company leaned into the media buzz that AI could replace entire design teams. At first, earlier this year, I thought maybe it was a forgone conclusion. After all, the tools were getting faster, flashier, and more accessible.</p><p>But now? After running real prompts through the latest tools myself, I&#8217;ve realized we&#8217;re further from human creativity than people think. The company that let him go? Victims of trend-chasing and media-driven excuses to normalize layoffs. They needed that team more than ever.</p><p>I&#8217;ll go deeper into that in another article. But the short of it: we need the <em>humans</em> behind design more than ever.</p><h3>Why AI Always Starts from Scratch (and Why That&#8217;s a Problem)</h3><p>You ever notice how image AIs don&#8217;t just tweak your logo? They <strong>start over</strong>, every time. That&#8217;s not creativity. That&#8217;s amnesia.</p><p>Here&#8217;s why:</p><ul><li><p>Most generative image models weren&#8217;t trained to remember context</p></li><li><p>They don&#8217;t understand &#8220;design intent&#8221; &#8212; they just generate based on prompts</p></li><li><p>They don&#8217;t know what&#8217;s sacred in a design (legacy colors, font shapes, whitespace)</p></li></ul><p>Real example: </p><div class="pullquote"><p>&#8220;Make me a logo based on this substack link: https://radicalinsider.substack.com/. It needs to be square. Draw from its bio, posts and themes.&#8221;</p></div><p>Result:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_wag!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_wag!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_wag!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_wag!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_wag!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_wag!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1986796,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_wag!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_wag!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_wag!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_wag!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2f4d94a-4c6d-446a-ae88-4b7056f58335_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><pre><code>Can you make it a lot more simplified? Like level 1?</code></pre><p>AI likes levels. <em>Level 1</em> denotes the most simplified design while a <em>Level 10</em> is elaborate and more noisy. So it does this&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ER8Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ER8Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ER8Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ER8Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ER8Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ER8Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1109285,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ER8Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ER8Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ER8Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ER8Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c4babd1-0c78-494f-90fd-9a65d6d8783b_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I then ask it&#8230;</p><pre><code>Remove "Fake News" and other social network stuff on it. Go for a more silhouetted look that is more about looking to find the truth in stuff. Radical Insider is all about being grounded with facts and educating the public as a father, a software engineer and a coach. At least it's square. lol.</code></pre><p>It then hilariously responds with:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!58Fx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!58Fx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!58Fx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!58Fx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!58Fx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!58Fx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1001391,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!58Fx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!58Fx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!58Fx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!58Fx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceeb4aab-fcff-48cc-9216-96b8cdf4c86b_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><pre><code><em>Eww. No silhouettes. Bad idea. Let's try something else. Stay simple but don't go in this direction. Imagine this icon/logo in other visual material. Keep going. Go color and again, no silhouettes.</em></code></pre><p>So what does it do?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5Df7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Df7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5Df7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5Df7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5Df7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Df7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1022392,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5Df7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5Df7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5Df7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5Df7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F208df2dd-1ca0-45e9-be8c-6075550f5cc2_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><pre><code>This is not working</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b3jA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b3jA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 424w, https://substackcdn.com/image/fetch/$s_!b3jA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 848w, https://substackcdn.com/image/fetch/$s_!b3jA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 1272w, https://substackcdn.com/image/fetch/$s_!b3jA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b3jA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png" width="549" height="309" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:309,&quot;width&quot;:549,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19608,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b3jA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 424w, https://substackcdn.com/image/fetch/$s_!b3jA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 848w, https://substackcdn.com/image/fetch/$s_!b3jA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 1272w, https://substackcdn.com/image/fetch/$s_!b3jA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23ea1d12-8bb2-4d91-b229-b0826ae641d8_549x309.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A friend even suggested pulling an image from the internet and modifying it through AI. But that defeats the entire purpose of originality and ownership.</p><h3>So... Is AI Useless for Branding?</h3><p>Nope. It&#8217;s actually a beast <strong>if you use it right</strong>. Think of AI as your endlessly caffeinated intern. Here&#8217;s where it wins:</p><h4><strong>Moodboarding</strong></h4><p>Throw in keywords, brand personality traits, emotional tones&#8212;and AI can generate dozens of visual references in seconds. It helps you explore styles (gritty, playful, high-end, brutalist) before you commit to one. It lets your team <em>see</em> the vibe of a direction early.</p><p>But it&#8217;s inspiration, not instruction. You still need a human eye to curate what <em>aligns</em> with your brand&#8217;s story&#8212;and to know when something looks good but feels off.</p><h4><strong>Naming Help</strong></h4><p>AI is excellent at brute-forcing name ideas. It can generate hundreds of brand name combos across tone types (playful, serious, nostalgic, futuristic). It helps brainstorm options fast.</p><p>But again&#8212;it doesn&#8217;t know what&#8217;s <em>too close</em> to a competitor. Or what resonates in your niche. Or what sounds like a dating app when you&#8217;re building a fintech platform.</p><h4><strong>Concept Drafts</strong></h4><p>Rapid visual ideation. Want to see how your brand could look on packaging, signage, or mobile UI? AI can give you starter visuals. It&#8217;s a thumbnail sketch machine.</p><p>Just don&#8217;t mistake them for finished work. That&#8217;s where your human designer takes over, bringing balance, originality, and polish.</p><div><hr></div><h3>Final Whistle: Don&#8217;t Bench the Designer</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tJRt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tJRt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tJRt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tJRt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tJRt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tJRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1265056,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164812536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tJRt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tJRt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tJRt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tJRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bc256d-c104-42c1-b6cd-604dd84e8399_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s the hard truth: <strong>you still need graphic designers and brand specialists. Maybe more than ever.</strong></p><p>What you see in the media&#8212;those &#8220;AI made this logo in 10 seconds!&#8221; headlines&#8212;don&#8217;t tell the full story. They&#8217;re novelty, not legacy. Behind every enduring brand is someone who knows how to weave meaning into pixels.</p><p>You still need:</p><ul><li><p>Your friend who actually studied typography</p></li><li><p>That Fiverr freelancer who knows color psychology</p></li><li><p>A creative director who understands business <em>and</em> story</p></li></ul><p>Branding is not just about standing out. It&#8217;s about <strong>belonging to something</strong>. And AI can&#8217;t feel that. It doesn&#8217;t know if your logo makes someone feel included, nostalgic, or inspired.</p><p>The takeaway? Use AI to brainstorm, to explore, to warm up the creative muscles. But when it comes time to <em>ship something that lasts</em>, bring in a human. Logos aren't just made&#8212;they're earned.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://substack.com/refer/radicalinsider?utm_source=substack&amp;utm_context=post&amp;utm_content=164812536&amp;utm_campaign=writer_referral_button&quot;,&quot;text&quot;:&quot;Start a Substack&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Start writing today. Use the button below to create a Substack of your own</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.com/refer/radicalinsider?utm_source=substack&amp;utm_context=post&amp;utm_content=164812536&amp;utm_campaign=writer_referral_button&quot;,&quot;text&quot;:&quot;Start a Substack&quot;,&quot;hasDynamicSubstitutions&quot;:false}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://substack.com/refer/radicalinsider?utm_source=substack&amp;utm_context=post&amp;utm_content=164812536&amp;utm_campaign=writer_referral_button"><span>Start a Substack</span></a></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why AI Won’t Replace Programmers — And Why That’s a Good Thing]]></title><description><![CDATA[AI might write code, but it doesn&#8217;t understand systems. And that&#8217;s where everything falls apart.]]></description><link>https://radicalinsider.org/p/why-ai-wont-replace-programmers-and</link><guid isPermaLink="false">https://radicalinsider.org/p/why-ai-wont-replace-programmers-and</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Wed, 21 May 2025 15:09:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cJjk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Over the last year, artificial intelligence has taken the world by storm&#8212;especially in software development. Ask ChatGPT to build a to-do list app in React, and it will confidently spit out a working prototype in seconds. Need a backend API? It&#8217;s got you. Want to spin up a business idea using prompts? Done.</p><p>This has led many to wonder:</p><p><em>Will AI replace programmers?</em></p><p>Short answer: <strong>No.</strong></p><p>Long answer: <strong>Not only will AI never replace programmers, but trusting it without knowing how to code can lead you into a costly mess.</strong></p><p>Here&#8217;s why.</p><h3><strong>The Internet Is Lying to You (But Not on Purpose)</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cJjk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cJjk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cJjk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cJjk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cJjk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cJjk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2252463,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164085924?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cJjk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cJjk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cJjk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cJjk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3217a2-576d-4853-b5f6-9b015c7de9ff_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We live in an age of instant gratification and social virality. It&#8217;s easy to be lured in by videos titled <em>&#8220;Built a SaaS startup with ChatGPT in one weekend&#8221;</em> or blog posts that brag about replacing developers entirely. These are exciting stories&#8212;but they&#8217;re often missing the bigger picture.</p><p>They don&#8217;t show you the aftermath:</p><ul><li><p>The security holes</p></li><li><p>The performance issues</p></li><li><p>The broken edge cases</p></li><li><p>The technical debt</p></li><li><p>The inability to maintain or evolve the code</p></li></ul><p>These success stories celebrate the MVP, but <strong>real software lives and dies in version 1.1 and beyond</strong>. And those who try to build production software with AI alone&#8212;without understanding how it works&#8212;usually find themselves rebuilding, refactoring, or bailing out entirely.</p><h3><strong>What&#8217;s Really Going On Under the Hood?</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ASCC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ASCC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ASCC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ASCC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ASCC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ASCC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2002274,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164085924?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ASCC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ASCC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ASCC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ASCC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4009e7a8-7212-4f28-a524-ee994eeb1955_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s demystify AI a bit. Code-generating AIs like ChatGPT or GitHub Copilot don&#8217;t think or reason. They don&#8217;t design. They don&#8217;t plan.</p><p>They <strong>predict</strong>.</p><p>Specifically, they predict the most likely next token (or chunk of code) based on training data from the internet. That includes Stack Overflow, GitHub repos, documentation, and yes, a ton of outdated and even incorrect examples.</p><p>AI doesn&#8217;t &#8220;know&#8221; what it&#8217;s doing&#8212;it just knows what <em>looks right</em>. It doesn&#8217;t understand your application, your users, or your infrastructure.</p><p>That&#8217;s why you might get a perfectly syntactic answer that&#8217;s dangerously wrong&#8212;and unless you&#8217;ve learned programming, you won&#8217;t know until it&#8217;s too late.</p><h3><strong>Real-World Examples: Where AI Code Falls Short</strong></h3><p>Let&#8217;s walk through some <strong>real</strong> examples where AI-generated code can work in theory&#8212;but fail in the real world.</p><h4><strong>Example 1: Login Code That Opens the Door to Hackers</strong></h4><p>A non-technical founder uses AI to build a login system. ChatGPT outputs:</p><pre><code><em>$query = "SELECT * FROM users WHERE username = '$user' AND password = '$pass'";</em></code></pre><p>It works. They deploy it. Users can log in. Success?</p><p>Two weeks later, a security breach exposes user data. Why? <strong>SQL Injection.</strong></p><p>AI didn&#8217;t sanitize input. The founder didn&#8217;t know to ask for prepared statements. No one knew to test for common web exploits.</p><div><hr></div><p><strong>The story here:</strong> The AI generated code that looked fine. But without a background in secure programming, the founder deployed a ticking time bomb.</p><div><hr></div><h4><strong>Example 2: AI Suggests Code That Breaks at Scale</strong></h4><p>Need to handle image uploads? Ask AI for a Node.js route. It gives:</p><pre><code><em>fs.writeFileSync('/uploads/file.jpg', fileData);</em></code></pre><p>It works locally. But on launch day, with 10 users uploading simultaneously, the app crashes.</p><p>Why? fs.writeFileSync blocks the Node event loop. Under concurrent load, the server stalls.</p><div><hr></div><p><strong>The story here:</strong> The AI doesn&#8217;t know that Node.js is single-threaded and event-driven. A real dev does. They&#8217;d use streams, queues, or cloud storage.</p><div><hr></div><h4><strong>Example 3: Thousands of Queries from One Innocent Loop</strong></h4><p>A Django app lists blog posts and authors:</p><pre><code><em>for post in Post.objects.all():</em></code></pre><pre><code><em>print(post.author.name)</em></code></pre><p>Seems fine&#8212;until the app generates <strong>1,001 database queries for 1,000 posts</strong>. The server chokes.</p><p>Why? N+1 query problem. AI doesn&#8217;t optimize unless told. A real dev would use:</p><pre><code><em>Post.objects.select_related('author')</em></code></pre><div><hr></div><p><strong>The story here:</strong> AI gives you working code, not performant code. And you won&#8217;t catch this unless you&#8217;ve been burned by it before.</p><div><hr></div><h3><strong>Why Programmers Should Feel Safe</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5gbk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5gbk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5gbk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5gbk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5gbk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5gbk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2242638,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164085924?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5gbk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5gbk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5gbk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5gbk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5bf8810-d482-4a73-9d3a-8b96556f9836_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Here&#8217;s the truth: <strong>AI doesn&#8217;t replace programming&#8212;it amplifies good programmers.</strong></p><p>It helps with:</p><ul><li><p>Boilerplate code</p></li><li><p>Rapid prototyping</p></li><li><p>Syntax corrections</p></li><li><p>Brainstorming edge cases</p></li></ul><p>But it can&#8217;t:</p><ul><li><p>Architect your system</p></li><li><p>Consider trade-offs</p></li><li><p>Debug obscure issues</p></li><li><p>Design intuitive UX</p></li><li><p>Write secure, scalable code</p></li></ul><p>A developer using AI is like Steph Curry using a better basketball&#8212;he&#8217;ll still dominate, but the court vision, footwork, and game IQ are all his.</p><p><strong>Even with all the computing power in the world and the freshest training data available, AI still doesn&#8217;t &#8220;understand&#8221; code the way a human does.</strong> It doesn&#8217;t live with the consequences of its decisions. It doesn&#8217;t debug at 3 a.m. It doesn&#8217;t refactor under pressure. It doesn&#8217;t design with the future in mind.</p><p>That&#8217;s why programmers are still&#8212;and will continue to be&#8212;indispensable.</p><h3><strong>Why It&#8217;s Dangerous to Build Without a Coding Background</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!__rg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!__rg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!__rg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!__rg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!__rg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!__rg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2044794,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164085924?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!__rg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!__rg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!__rg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!__rg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7718b4-4fe0-49d1-83bc-d6d3ed1279c1_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Entrepreneurs and business owners often think: <em>&#8220;If AI can build this, why learn to code at all?&#8221;</em></p><p>Because:</p><ul><li><p>When the code breaks, you can&#8217;t fix it.</p></li><li><p>When the app needs a new feature, you can&#8217;t evolve it.</p></li><li><p>When security or performance issues arise, you don&#8217;t even know they&#8217;re there.</p></li></ul><p>What you get is a <strong>fragile prototype</strong> that no real team can maintain or scale.</p><p>Building software with AI but without programming knowledge is like trying to open a restaurant using only DoorDash recipes. It might look okay on the plate&#8212;but what happens when health inspectors show up or the oven breaks?</p><h3><strong>AI Has a Garbage Problem</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NSvO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NSvO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NSvO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NSvO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NSvO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NSvO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1976203,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164085924?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NSvO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NSvO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NSvO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NSvO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ad6bd0-1ee5-4027-b2ac-a613182d1238_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>AI is only as good as the data it&#8217;s trained on. And the public code it ingested includes:</p><ul><li><p>Deprecated practices</p></li><li><p>Insecure examples</p></li><li><p>Poorly written tutorials</p></li><li><p>Misleading forum answers</p></li></ul><p>Unless you know how to spot bad code, AI can confidently hand you something dangerous&#8212;and you&#8217;ll have no idea.</p><p>Would you trust a surgeon trained entirely on YouTube comments?</p><h3><strong>Why Programming Is One of the Safest Jobs in the AI Era</strong></h3><p>The jobs least likely to be replaced by AI involve:</p><ul><li><p>Judgment in unpredictable environments</p></li><li><p>Creative problem solving</p></li><li><p>Contextual decision-making</p></li><li><p>Long-term accountability</p></li></ul><p><strong>Software development checks all those boxes.</strong></p><p>AI isn&#8217;t eliminating programming jobs&#8212;it&#8217;s <strong>changing the shape of them</strong>. Developers who embrace AI as a tool will become more powerful. Those who understand systems will be in high demand. Those who just copy and paste code will struggle.</p><h3><strong>But What If the AI Was Perfect?</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WZPD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WZPD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WZPD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WZPD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WZPD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WZPD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2349768,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radicalinsider.substack.com/i/164085924?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WZPD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WZPD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WZPD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WZPD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8200297b-a72d-437e-a2c9-42ccfa475182_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A common thought experiment:</p><p><em>&#8220;What if we had the most powerful AI ever made&#8212;with perfect training data, real-time context, and quantum computing behind it? Could it replace programmers entirely?&#8221;</em></p><p>It&#8217;s a fascinating idea&#8212;but even that scenario falls short.</p><p>Because programming isn&#8217;t just about typing instructions. It&#8217;s about:</p><ul><li><p>Modeling human problems</p></li><li><p>Making value judgments</p></li><li><p>Navigating uncertainty and trade-offs</p></li><li><p>Iterating with feedback, emotion, and context</p></li></ul><p>Even if the AI becomes flawless at writing and optimizing code, it still needs someone to <strong>interpret messy business needs, clarify vague user requirements, and make ethical or strategic choices.</strong></p><p>In other words: to act like a <strong>systems thinker.</strong></p><p><strong>That person may not be called a &#8220;programmer&#8221; in the future</strong>.</p><p>But the role they play will be more important than ever.</p><p><strong>AI can be the engine. But someone still needs to drive.</strong></p><p><strong>Final Thoughts: Learn the Game, Then Use the Tools</strong></p><p>If you&#8217;re a non-technical founder: AI won&#8217;t protect you from bugs, scalability issues, or bad design. If you want to build serious software, <strong>you need to learn the fundamentals.</strong></p><p>If you&#8217;re a programmer: Your job isn&#8217;t going anywhere. AI is the shooting machine in the gym&#8212;it&#8217;ll help you get your reps in faster. But the playmaking? That&#8217;s all you.</p><p>AI might help you code. But it&#8217;s not here to run your team.</p><p><strong>Software development is a sport of strategy, awareness, and execution and &#8220;programmers&#8221; are still the ones drawing the plays. Perhaps their names of their role will change (e.g. system designer, software architect, etc)</strong></p><p><strong>But the fact of the matter is someone human, particularly one who understands systems, still has to direct these powerful tools - and that won&#8217;t change, even in the quantum age.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Americans Are Tired of the Circus—And They’re Coming Together in Spite of It]]></title><description><![CDATA[For years, Americans have been told they are hopelessly divided&#8212;that political differences have turned neighbors into enemies and that the country is tearing itself apart.]]></description><link>https://radicalinsider.org/p/americans-are-tired-of-the-circusand</link><guid isPermaLink="false">https://radicalinsider.org/p/americans-are-tired-of-the-circusand</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Sat, 22 Mar 2025 13:00:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CdzX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For years, Americans have been told they are hopelessly divided&#8212;that political differences have turned neighbors into enemies and that the country is tearing itself apart. But reality tells a different story.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CdzX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CdzX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CdzX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CdzX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CdzX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CdzX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CdzX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CdzX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CdzX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CdzX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc5bcbd4-7318-4048-84e5-8710973961f5_1024x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>While media narratives focus on endless political bickering, something else is happening on the ground. Large, passionate crowds are forming at rallies across the country&#8212;not for the usual polished politicians, but for a movement that speaks to the struggles people actually face. These rallies are not built on the tired partisan narratives pushed by the media. Instead, they are filled with people from all backgrounds who agree on the most basic, yet ignored, truth: the system is failing them.</p><p></p><p><strong>The State of the Union&#8212;Or Lack of One</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g1Xr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g1Xr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g1Xr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g1Xr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g1Xr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g1Xr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g1Xr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g1Xr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g1Xr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g1Xr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9281dac6-7ad8-426b-8f24-23c27c15918e_1024x1024.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Americans are tuning out the political circus in record numbers. President Trump&#8217;s recent address to Congress drew an audience of 36.6 million viewers, reflecting a nearly 14% increase from former President Biden&#8217;s 2024 State of the Union address.&nbsp; However, this viewership still represents a decline compared to historical figures, indicating a broader trend of public disengagement.</p><p></p><p>This isn&#8217;t apathy&#8212;it&#8217;s rejection. People aren&#8217;t disinterested in politics; they&#8217;re tired of being lied to, manipulated, and used as pawns in a game designed to benefit a small elite. They&#8217;ve watched politicians, both Democrat and Republican, make grand promises only to serve the same corporate interests once in office. They&#8217;ve seen the media cover political theater while ignoring the skyrocketing cost of living, stagnant wages, and a healthcare system that prioritizes profit over people. The spectacle continues, but fewer and fewer Americans are willing to be part of the audience.</p><p></p><p><strong>The Media&#8217;s Role in the Smokescreen</strong></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FT4K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FT4K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FT4K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FT4K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FT4K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FT4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FT4K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FT4K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FT4K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FT4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19978464-e4b1-433d-afa2-16eec4ce5a43_1024x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One of the biggest reasons for this frustration is the unreliability of the media&#8212;especially the mainstream outlets that claim to be the guardians of democracy. Trust in mass media has reached record lows, with only 31% of Americans expressing a &#8220;great deal&#8221; or &#8220;fair amount&#8221; of confidence in the media to report the news fully, accurately, and fairly.&nbsp; This erosion of trust is not confined to one political ideology; it spans the spectrum, reflecting widespread skepticism toward traditional news outlets.</p><p></p><p>The perceived bias and sensationalism in media coverage have contributed to this distrust. For instance, during the early stages of the COVID-19 pandemic, media missteps, such as downplaying the virus&#8217;s severity and dismissing alternative theories without thorough investigation, damaged public confidence. Such instances have led to a growing sentiment that media narratives are often disconnected from the realities faced by everyday Americans.</p><p></p><p><strong>The Rallies That Media Won&#8217;t Cover</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VIrt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VIrt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VIrt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VIrt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VIrt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VIrt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg" width="1290" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:853,&quot;width&quot;:1290,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VIrt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VIrt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VIrt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VIrt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2ef8ad-7eb5-43fc-84b0-356d591fee92_1290x853.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Meanwhile, something remarkable is happening in cities across the country. Despite the media&#8217;s attempt to control the narrative, massive rallies are forming&#8212;often with little to no mainstream coverage. The people attending these gatherings aren&#8217;t showing up for a party or a politician; they&#8217;re showing up because they believe in something bigger than the two-party system.</p><p></p><p>These rallies attract working-class Americans, union members, small business owners, students, and retirees&#8212;all coming together not because they agree on every issue, but because they share the same struggles. They know wages aren&#8217;t keeping up with inflation. They know healthcare costs are unsustainable. They know the government works for corporations, not for them. And instead of blaming each other, they are realizing they have more in common than they were led to believe.</p><p></p><p>The reason these rallies feel different is because they aren&#8217;t staged, scripted, or manufactured by political consultants. They are filled with real people who have been ignored for too long. And that terrifies the establishment.</p><p></p><p><strong>A Growing Political Awakening</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AFK8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AFK8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AFK8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AFK8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AFK8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AFK8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AFK8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AFK8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AFK8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AFK8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e2c7379-6fa2-4a3a-860a-f922a7637fdb_1024x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>While corporate-backed politicians are afraid to hold town halls and face their own constituents, these rallies are only growing in size and energy. The political establishment&#8212;both parties&#8212;wants Americans to believe they are powerless. They want people to think that nothing will change, that their only choices are the same two parties, the same broken policies, and the same media narratives.</p><p></p><p>But something is shifting. Americans aren&#8217;t as divided as they&#8217;ve been led to believe. The true divide isn&#8217;t between left and right&#8212;it&#8217;s between the people and those in power. And as more Americans reject the circus, they&#8217;re realizing that the solutions won&#8217;t come from the same politicians and media figures who created these problems in the first place.</p><p></p><p>The crowds forming in towns and cities across the country aren&#8217;t just showing up for a cause. They&#8217;re showing up for each other. And that, more than anything, is what those in power fear the most.</p>]]></content:encoded></item><item><title><![CDATA[Diversity, Equity, and Inclusion: Progress, Challenges, and the Role of Media]]></title><description><![CDATA[And How We Can Better Implement It - The Right Way]]></description><link>https://radicalinsider.org/p/diversity-equity-and-inclusion-progress</link><guid isPermaLink="false">https://radicalinsider.org/p/diversity-equity-and-inclusion-progress</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Sat, 08 Feb 2025 18:01:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tA2t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tA2t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tA2t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!tA2t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!tA2t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!tA2t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tA2t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tA2t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!tA2t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!tA2t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!tA2t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ece8188-d318-4dbd-97c6-940b45e01ff7_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">a set of diverse people getting an awards from a company</figcaption></figure></div><h3>How It Started</h3><p>The origins of Diversity, Equity, and Inclusion (DEI) can be traced back to earlier movements advocating for civil rights and workplace equality. Over the decades, similar initiatives have gone by various names, including Equal Employment Opportunity (EEO) and Affirmative Action. These policies were initially designed to address systemic discrimination and promote fair treatment in hiring and education. However, as workplaces and institutions evolved, DEI expanded beyond legal compliance to emphasize the importance of fostering inclusive environments where people from diverse backgrounds feel valued and empowered. Today, DEI encompasses a broad spectrum of initiatives, from inclusive hiring practices to bias training and cultural awareness programs. While some view DEI as a necessary evolution toward a more equitable society, others see it as overreach that can sometimes prioritize representation over qualifications. Understanding this history and how DEI has transformed over time helps frame the ongoing debate about its effectiveness and impact. </p><p>At its core, DEI aims to create fair opportunities for people of all backgrounds while fostering environments that value differences. While DEI initiatives have led to significant positive change, they have also sparked debate regarding their implementation, effectiveness, and unintended consequences. Additionally, the media plays a crucial role in shaping how DEI is perceived, sometimes amplifying divisions rather than fostering unity. Sensationalized headlines and selective reporting often emphasize extreme cases&#8212;either showcasing DEI as a revolutionary success or painting it as a harmful overreach. Social media algorithms further entrench these views by prioritizing emotionally charged content, creating echo chambers that reinforce existing biases rather than promoting constructive discussion. To fully realize the benefits of DEI, it is crucial to separate the noise from the substance and ensure that diversity enhances, rather than overshadows, professional merit.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Radical Insider! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>The Positive Impact of DEI</h3><p>The benefits of DEI are well-documented. Companies that embrace diverse workforces often experience increased creativity, broader perspectives, and enhanced problem-solving abilities. Inclusive environments also contribute to greater employee satisfaction, reducing turnover and fostering innovation. Moreover, DEI initiatives have helped break down long-standing barriers, allowing underrepresented groups access to opportunities they might have historically been denied.</p><p>In the broader social context, DEI efforts have led to increased awareness of systemic inequalities, encouraging more inclusive policies and practices. By recognizing and addressing biases, organizations can create fairer hiring processes, more supportive workplaces, and better representation across various fields.</p><h3>The Challenges and Criticisms of DEI</h3><p>Despite its positive intentions, DEI is not without its challenges. Some critics argue that certain DEI initiatives prioritize quotas over qualifications, leading to resentment and skepticism about the merit of diverse hires. In some cases, well-qualified individuals may feel overlooked due to rigid diversity requirements, while others may experience imposter syndrome, questioning whether they were hired for their skills or simply to meet a target.</p><p>A close friend of mine has personally experienced the downside of these initiatives. As a black man, he has faced the unfortunate reality of being underestimated by colleagues who assume his success is due to DEI policies rather than his actual abilities. This persistent underestimation can be frustrating and counterproductive, as it undermines the confidence of highly capable individuals. However, despite these challenges, he still supports the need for diversity. His concern lies not with the existence of diversity initiatives but with how they are implemented. He believes that DEI should not be about ticking boxes but about ensuring fair access to opportunities while maintaining high professional standards.</p><h3>The Media&#8217;s Role in Shaping DEI&#8217;s Reputation</h3><p>The media plays a powerful role in shaping the narrative around DEI, often highlighting extreme perspectives on both sides of the debate. For example, some major news outlets like Fox News have criticized DEI as a form of forced social engineering, while others like MSNBC have framed it as a necessary correction to systemic injustice. On social media, trends such as #DEIisDiscrimination and #DiversityWins illustrate the stark contrast in public opinion, with each side amplifying their stance through viral content. Some outlets frame DEI as an essential step toward justice, while others depict it as an unfair system that penalizes certain groups. This polarized coverage can create unnecessary division, making it difficult for people to have nuanced discussions about DEI&#8217;s merits and shortcomings.</p><p>Social media further exacerbates these divides, with algorithm-driven content amplifying outrage and controversy. This results in echo chambers where individuals are fed information that reinforces their existing beliefs, preventing constructive conversations and solutions. If we want to move forward productively, we must actively seek balanced perspectives and engage in open-minded discussions rather than relying solely on media narratives.</p><h3>Moving Beyond the Noise: Making DEI a Professional Asset</h3><p>The key to making DEI work effectively is to ensure that diversity complements professional merit, enhancing excellence rather than being treated as an afterthought or a primary qualifier. Organizations should strive to create environments where diversity enhances excellence rather than being a substitute for it. </p><p>This means:</p><ol><li><p><strong>Prioritizing Merit and Inclusion Simultaneously</strong> &#8211; Ensuring that hiring and promotions are based on qualifications and skills while also providing fair opportunities to candidates from diverse backgrounds.</p></li><li><p><strong>Encouraging Open Conversations</strong> &#8211; Creating spaces where employees can discuss concerns about DEI policies without fear of backlash, fostering a culture of trust rather than division.</p></li><li><p><strong>Holding the Media Accountable</strong> &#8211; Promoting media literacy and critical thinking is essential to help individuals discern between genuine DEI efforts and divisive narratives. However, this is challenging when divisive content generates higher engagement and revenue for media outlets and social media platforms. To counteract this, individuals and organizations must actively seek out diverse sources of information, support independent journalism, and advocate for responsible reporting. Encouraging critical thinking through education, corporate training, and public discourse can also help people recognize bias and misinformation. While financial incentives drive media sensationalism, fostering a culture of inquiry and open discussion can help shift focus toward more balanced and constructive narratives.</p></li><li><p><strong>Celebrating Excellence Across All Backgrounds</strong> &#8211; Acknowledging achievements without attributing them solely to diversity policies, thereby reinforcing the value of competence and hard work. This is particularly important in cases where individuals from underrepresented groups achieve significant milestones through dedication and skill. Recently, another friend received a prestigious award as a top worker in his company. Despite his hard-earned success, some colleagues dismissed his achievement as a byproduct of DEI rather than recognizing his exceptional performance. This illustrates how DEI can sometimes be used as a wedge by those unwilling to acknowledge genuine merit. To combat this, organizations should emphasize transparency in performance evaluations and celebrate accomplishments in ways that highlight individual excellence, ensuring that diversity initiatives are seen as enhancements rather than determinants of success.</p></li></ol><p>DEI remains an important movement, but its success hinges on thoughtful implementation rather than rigid mandates. By cutting through the noise and focusing on a balanced approach where diversity and merit reinforce each other, we can ensure that DEI strengthens our institutions rather than weakening them. With a balanced approach, diversity can be a true asset that complements professional excellence rather than competing with it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Radical Insider! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[14 Red Flags to Spot Media Bias and Misinformation]]></title><description><![CDATA[Along with helping friends and family to recognize them]]></description><link>https://radicalinsider.org/p/14-red-flags-to-spot-media-bias-and</link><guid isPermaLink="false">https://radicalinsider.org/p/14-red-flags-to-spot-media-bias-and</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Wed, 29 Jan 2025 19:01:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W1js!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In today&#8217;s fast-paced world, where information travels at lightning speed, understanding how bias operates in the media is more crucial than ever. Cable news outlets, social media influencers, and even everyday content creators often use techniques like loaded language, selective data, and polarizing narratives to attract attention, drive engagement, and advance specific agendas. These tactics aren&#8217;t always rooted in malice&#8212;sometimes, they&#8217;re driven by financial incentives like clicks, views, and ad revenue, or political goals like swaying public opinion. </p><p>Media consumption shapes how we view the world, but it&#8217;s not always as objective as it seems. Recognizing these methods empowers us to consume information more critically, making us less susceptible to manipulation. <br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ol><li><p><strong>Loaded Language:</strong><br>Emotionally charged words like &#8220;disastrous,&#8221; &#8220;shocking,&#8221; or &#8220;heroic&#8221; are designed to provoke strong reactions rather than provide clear information. They often exaggerate or frame an event to influence how you feel about the subject. Be wary of language that seems more dramatic than the actual topic warrants&#8212;it&#8217;s a sign the goal may be persuasion, not clarity. Here's one that uses the word "haters" in a new way.<br><br><em>Example</em>:  &#8220;Snoop Dogg reacts to Trump inauguration haters mad he changed his tune on president&#8221;. Yes, <a href="https://www.foxnews.com/entertainment/snoop-dogg-slams-trump-inauguration-haters-tells-them-get-your-life-right#&amp;_intcmp=fnhpbt9">that's a real headline</a>. <br></p></li><li><p><strong>One-Sided Perspectives</strong>:<br>If the content focuses solely on one side of an argument, leaving out dissenting views, it&#8217;s a clear indicator of bias. Balanced reporting provides multiple viewpoints, allowing you to form your own opinion. Ask yourself: is there more to this story that hasn&#8217;t been covered?<br><em>Example</em>: An article about climate change interviews only fossil fuel executives while ignoring scientists.<br></p></li><li><p><strong>Selective Use of Facts/Data</strong>:<br>Cherry-picking specific statistics or details while ignoring others is a common tactic to push a narrative. For example, someone might highlight only the benefits of a policy without mentioning the downsides or risks. To spot this, look for whether the information is fully contextualized or designed to lead you to one conclusion.<br><br><em>Example</em>: "According to our poll, 95% of people support this law!" (The poll surveyed 10 people who all work for the organization promoting the law.)<br></p></li><li><p><strong>Omission of Key Details</strong>:<br>Leaving out important facts can drastically change how a story is perceived. A story that doesn&#8217;t explain the full background or skips over relevant details may be framing the narrative intentionally. Be cautious if what&#8217;s missing feels just as important as what&#8217;s included.<br><br><em>Example</em>: A news report claims, <em>&#8220;Local business closes due to union strikes!&#8221;</em>&#8212;but fails to mention the company had already filed for bankruptcy.<br></p></li><li><p><strong>Overgeneralizations</strong>:<br>Sweeping statements like &#8220;everyone knows&#8221; or &#8220;nobody cares&#8221; often oversimplify complex issues. Such phrases give the impression of universal truth while failing to provide evidence or nuance. Real-life problems usually have multiple factors at play, so generalized claims should always be scrutinized.<br><br><em>Example</em>: A news commentator says, <em>&#8220;Americans are tired of high taxes.&#8221;</em> Which Americans? Did anyone ask them?<br></p></li><li><p><strong>Sensational and Misleading Headlines</strong>:<br>Headlines are often written to grab attention, even if they distort or oversell the content. Sometimes, the article itself will contradict the sensationalized headline, so always read beyond the title. A clickbait headline might entertain, but it rarely informs.<br><br><em>Example</em>: <em>&#8220;Study Finds Cheese Cures Depression!&#8221;</em> (Spoiler: The study was about comfort eating, not medical cures.)<br></p></li><li><p><strong>Ad Hominem Attacks</strong>:<br>Attacking someone&#8217;s character or appearance rather than their ideas is a hallmark of biased or manipulative content. This tactic distracts from the actual issues and stokes emotional reactions. Instead of focusing on the argument, it shifts the discussion to personal jabs.<br><br><em>Example</em>: A political ad says, <em>&#8220;You can&#8217;t trust Senator Green; he&#8217;s been seen wearing Crocs to formal events!&#8221;<br></em></p></li><li><p><strong>Lack of Credible Sources</strong>:<br>Content that doesn&#8217;t provide clear, reliable citations or relies on anonymous or vague sources is less trustworthy. Without strong evidence, claims are just opinions or speculation. Always check if the sources can be verified independently.<br><br><em>Example</em>: <em>&#8220;Experts agree that watching TV is better than exercise!&#8221;</em> (Who are these &#8220;experts,&#8221; and where can we find them?)<br></p></li><li><p><strong>Overuse of Opinion</strong>:<br>News that reads more like a personal rant often blurs the line between opinion and fact. It&#8217;s fine for commentators to share their views, but they should clearly label opinion pieces and separate them from objective reporting. Be alert when strong opinions masquerade as factual analysis.<br><em>Example</em>: An article reads, <em>&#8220;This policy is the only logical choice; anyone against it clearly doesn&#8217;t understand economics.&#8221;<br></em></p></li><li><p><strong>Polarizing Narratives</strong>:<br>Content that divides issues into &#8220;good vs. evil&#8221; or &#8220;us vs. them&#8221; oversimplifies reality and fuels division. Real-world problems are rarely black and white and typically require more nuanced discussions. Be cautious of narratives that vilify or lionize without providing middle-ground perspectives.<br><br><em>Example</em>: <em>&#8220;This city&#8217;s problems will end if we just elect the right mayor.&#8221;</em> If only it were that easy.<br></p></li><li><p><strong>Appealing to Authority</strong>:<br>Just because someone with a title or influence endorses a claim doesn&#8217;t make it true. Authority figures can be biased, mistaken, or working in their own interest. Always look for additional evidence instead of taking their word at face value.<br><br><em>Example</em>: <em>&#8220;As the CEO of a billion-dollar company, I can assure you this policy works.&#8221;</em> Okay, but where&#8217;s the data?<br></p></li><li><p><strong>Lack of Transparency</strong>:<br>When it&#8217;s unclear who funds, writes, or promotes a piece, it&#8217;s difficult to assess its motives and credibility. Transparency helps build trust, while hidden agendas create doubt. Ask yourself who benefits from the story and whether that&#8217;s been disclosed.<br><br><em>Example</em>: A &#8220;scientific&#8221; article promoting a new wonder drug is later revealed to be written by the pharmaceutical company that sells it.<br></p></li><li><p><strong>Consistent Partisanship</strong>:<br>Sources that always side with one political party or ideology, regardless of context, are usually biased. Honest reporting should critique or praise based on the facts, not allegiance. If a source never questions its &#8220;team,&#8221; it&#8217;s likely pushing propaganda.<br><em>Example</em>: A website that only writes glowing reviews about one party, even when scandals emerge, is likely pushing an agenda.</p><p></p></li><li><p><strong>Unverified Claims</strong>:<br>Statements presented as fact without supporting evidence should immediately raise suspicion. These claims often spread quickly, especially on social media, even if they&#8217;re later proven false. Always ask: where&#8217;s the proof, and can this be independently confirmed?<br><br><em>Example</em>: A viral tweet declares, <em>&#8220;Breaking: Alien technology discovered in Nevada!&#8221;</em>&#8212;but no reputable source covers the story, and the tweet links to a conspiracy website.<br></p></li></ol><h4>Recognizing Bias With Family And Friends<br></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W1js!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W1js!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!W1js!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!W1js!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!W1js!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W1js!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140958,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W1js!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!W1js!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!W1js!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!W1js!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8ac251-8bcb-45a1-a57f-8a88d0475df3_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Recognizing these methods empowers us to consume information more critically, making us less susceptible to manipulation. For example, if your dad starts a conversation with, &#8220;I saw this on TV&#8230;&#8221; and launches into a talking point, it&#8217;s a reminder of how many people&#8212;especially seniors&#8212;take media at face value. Instead of overwhelming him with a detailed explanation, try using simple, gentle cues to plant a seed of skepticism. A kind response like, &#8220;That&#8217;s interesting&#8212;did they mention the other side of the story?&#8221; can subtly encourage curiosity and critical thinking without making him feel called out or defensive. <br><br>Start by discussing the reasons behind their preferences without dismissing their views. Understanding their perspective can help you find common ground. Instead of directly challenging their sources, share your own experiences with finding balanced information and how it has helped you form a more comprehensive understanding of the issues at hand.</p><p>Kindly teach them to identify loaded language and emotional appeals in news articles or broadcasts. Words with strong connotations can influence perception, portraying certain events or individuals positively or negatively. Encouraging them to look for these cues can make them more aware of subtle attempts to sway their opinions.</p><p>Try to set up a safe space for conversation where understanding and empathy are front and center. Use questions like, "Why do you think the questions of [said individual] are framed this way?&#8221;. </p><p>Suggest simple critical thinking techniques that don't require changing their sources or using fact-checkers. For example, they can look for inconsistencies within their preferred news source, question the motives behind sensational headlines, and consider how different wording might alter their perception of a story. By fostering a mindset of curiosity and skepticism, they may naturally become more open to diverse information.</p><p>Share your own journey of discovering media bias. You could say, "I used to watch X all the time, but then I noticed Y, which made me start checking other sources."</p><p>By framing it as a shared effort to seek truth, we can help loved ones spot bias and navigate media more thoughtfully.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radicalinsider.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Welcome To The Hate Economy]]></title><description><![CDATA[How Media Division Fuels Profit and Control]]></description><link>https://radicalinsider.org/p/welcome-to-the-hate-economy</link><guid isPermaLink="false">https://radicalinsider.org/p/welcome-to-the-hate-economy</guid><dc:creator><![CDATA[Radical Insider]]></dc:creator><pubDate>Mon, 27 Jan 2025 16:35:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6020dafb-9e74-46fa-af24-e3586d974fd5_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In today&#8217;s America, the media has evolved into a powerful force, shaping public opinion, framing debates, and determining the narratives that define our social, political, and cultural landscape. Yet, beneath the noise of partisan bickering between the &#8220;Left&#8221; and the &#8220;Right,&#8221; a deeper, more troubling dynamic is at play. The media&#8217;s obsession with sensationalism, coupled with the overarching influence of corporate interests, reveals a stark truth: the American people are being played. Congress, the presidency, and other institutions of power perpetuate a theater of division that keeps citizens distracted from the real mechanisms of control and manipulation. This essay explores how the media amplifies this division, perpetuates contradictions, and serves as a tool of distraction, ultimately benefiting the powerful at the expense of the public.</p><h4>The Theater of Division: Left vs. Right</h4><p>At its core, the American media operates as a megaphone for ideological conflict. Headlines scream about &#8220;Liberal Snowflakes&#8221; or &#8220;Conservative Fascists,&#8221; creating caricatures of both sides that are easy to digest but devoid of nuance. For example, Fox News might run a headline such as &#8220;Woke Culture is Destroying America&#8221; while MSNBC counters with &#8220;Right-Wing Extremists Pose the Greatest Threat to Democracy.&#8221; These narratives are not simply reflective of ideological differences; they are constructed to elicit outrage and deepen divisions.</p><p>Sensationalism sells, and in an era of declining attention spans, headlines have become more provocative and less factual. Consider the media&#8217;s treatment of issues like police reform. Following the tragic death of George Floyd, outlets on the left pushed headlines like &#8220;Defund the Police: The Only Path Forward,&#8221; while conservative outlets countered with &#8220;Defunding the Police Will Lead to Chaos and Lawlessness.&#8221; Neither position reflects the complexities of policing in America, yet the binary framing forces readers to pick a side rather than engage in meaningful discussion.</p><p>This dynamic is not accidental. By framing every issue as a battle between opposing forces, the media ensures a steady stream of conflict and controversy that keeps viewers glued to their screens. The result is a society increasingly divided along partisan lines, with little room for compromise or collaboration. But while Americans are busy fighting each other, the real players&#8212;corporations, lobbyists, and political elites&#8212;continue to pull the strings behind the scenes.</p><h4>Contradictions and Media Hypocrisy</h4><p>One of the most striking aspects of the media&#8217;s role in perpetuating division is its willingness to contradict itself when it suits the prevailing narrative. Both liberal and conservative outlets are guilty of this, often shifting their positions to align with political expediency or corporate interests.</p><p>Take, for example, the issue of free speech. Liberal outlets like The New York Times have historically championed the importance of free expression. Yet, in recent years, some of these same outlets have supported censorship in the name of combating misinformation. Conservative media is no less hypocritical. Fox News, which frequently rails against &#8220;cancel culture,&#8221; has also called for boycotts of companies that support progressive causes. These contradictions highlight the media&#8217;s true priority: maintaining a narrative that serves its own interests, even at the cost of consistency.</p><p>Another example can be found in the coverage of government spending. During the Trump administration, conservative outlets largely ignored the ballooning national deficit, focusing instead on the benefits of tax cuts and military spending. However, with a Democrat in the White House, these same outlets suddenly rediscovered their fiscal conservatism, decrying deficit spending as reckless and unsustainable. On the other side, liberal media that criticized Trump&#8217;s spending habits have been far more lenient when reporting on similar policies under President Biden.</p><p>These contradictions are not mere oversights; they are deliberate strategies designed to reinforce tribal loyalties. By selectively framing issues to align with their audience&#8217;s biases, media outlets ensure a steady stream of engagement and revenue. Meanwhile, the underlying issues&#8212;government spending, free speech, systemic inequality&#8212;remain unaddressed.</p><h4>Corporate Interests and the Illusion of Choice</h4><p>At the heart of the media&#8217;s manipulation lies the influence of corporate interests. Major media conglomerates like Comcast (owner of NBC), Disney (owner of ABC), and News Corp (owner of Fox) dominate the information landscape, prioritizing profits over public interest. These corporations are not neutral arbiters of truth; they are businesses with shareholders to please and agendas to advance.</p><p>Consider the role of advertising in shaping media content. News outlets rely heavily on corporate advertisers for revenue, creating a conflict of interest that undermines journalistic integrity. Stories that challenge corporate power or advocate for systemic change are often downplayed or ignored altogether. For example, coverage of climate change is frequently watered down to avoid alienating fossil fuel advertisers. Similarly, stories about labor rights and unionization struggles receive minimal attention, as they conflict with the interests of corporate sponsors.</p><p>This dynamic extends to political coverage as well. Both liberal and conservative media outlets receive funding from political action committees (PACs) and lobbying groups, further blurring the line between journalism and propaganda. The result is a media landscape that prioritizes the interests of the wealthy and powerful while marginalizing the voices of ordinary Americans.</p><h4>The Real Game: Power and Control</h4><p>While the media keeps the public distracted with partisan battles, Congress and the presidency continue to operate as two sides of the same coin. Both Democrats and Republicans rely on corporate donations to fund their campaigns, ensuring that their policies align with the interests of their donors rather than their constituents. This dynamic is perhaps most evident in the area of economic policy.</p><p>Take, for instance, the issue of tax reform. Both parties claim to champion the interests of working Americans, yet their policies consistently benefit the wealthy. The 2017 Tax Cuts and Jobs Act, passed by a Republican-controlled Congress, disproportionately benefited corporations and high-income earners. Similarly, Democratic proposals for tax reform often include loopholes that allow the ultra-rich to avoid paying their fair share. Despite their rhetoric, both parties are deeply entrenched in a system that prioritizes the interests of the elite.</p><p>Healthcare is another area where the bipartisan consensus becomes apparent. While Democrats and Republicans publicly clash over issues like Medicare for All, both parties have consistently failed to address the underlying problem: the profit-driven nature of the American healthcare system. Pharmaceutical companies and insurance providers wield enormous influence over both parties, ensuring that meaningful reform remains out of reach.</p><p>The media plays a crucial role in perpetuating this status quo by framing these issues as partisan battles rather than systemic problems. By focusing on the spectacle of political conflict, the media obscures the underlying economic and structural forces that shape American society. This serves the interests of both political elites and corporate sponsors, who benefit from a divided and distracted populace.</p><h4>Victims of the Game: The American People</h4><p>The ultimate losers in this game are the American people. By fostering division and perpetuating misinformation, the media undermines the very foundation of democracy. Citizens are left to navigate a sea of conflicting narratives, unable to discern truth from propaganda. This erodes trust in institutions and fosters a sense of cynicism and apathy.</p><p>Moreover, the media&#8217;s focus on sensationalism and conflict leaves little room for substantive discussion of the issues that matter most to ordinary Americans. Economic inequality, climate change, healthcare, education&#8212;these are the challenges that define our era, yet they are consistently overshadowed by the latest scandal or outrage. The result is a society that is ill-equipped to address its most pressing problems.</p><p>The media&#8217;s manipulation also has profound psychological effects. The constant barrage of negative news and partisan conflict contributes to feelings of anxiety, anger, and hopelessness. This is not an accident; it is a deliberate strategy designed to keep viewers engaged and emotionally invested. By fostering a state of perpetual outrage, the media ensures a steady stream of clicks, views, and ad revenue.</p><h4>Breaking the Cycle</h4><p>To break free from this cycle of manipulation, Americans must take a critical and proactive approach to media consumption. This begins with recognizing the biases and agendas that shape media narratives. From YouTube to traditional media, using tools such as Allsides along with seeing how a particular outlet gets funded helps seek out grounded perspectives. By engaging with independent and investigative journalism, citizens can gain a more nuanced understanding of the issues at hand. </p><p>Media literacy is also essential. Schools and communities must prioritize education that equips individuals with the tools to critically analyze media content. This includes understanding the techniques used to frame stories, recognizing logical fallacies, and identifying conflicts of interest.</p><p>Finally, systemic change is needed to address the root causes of media manipulation. This includes campaign finance reform to reduce the influence of money in politics, as well as antitrust measures to break up media conglomerates and promote competition. By challenging the concentration of power in both the media and political spheres, Americans can reclaim their democracy and ensure that their voices are heard.</p><h4>Conclusion: The Hate Economy</h4><p>The media&#8217;s role in shaping the divide between the &#8220;Left&#8221; and &#8220;Right&#8221; is not just a byproduct of ideological differences&#8212;it is a calculated component of what can only be described as a &#8220;Hate Economy.&#8221; This economy thrives on outrage, division, and sensationalism, generating profit and power for corporations, lobbyists, and political elites. By amplifying conflict and perpetuating contradictions, the media ensures a steady stream of engagement while obscuring the true dynamics of power and control.</p><p>The American people, caught in this cycle, are the victims of a game designed to keep them divided and distracted. To resist this manipulation, citizens must recognize the media&#8217;s role in perpetuating the Hate Economy and take steps to reclaim their agency. By fostering media literacy, supporting independent journalism, and advocating for systemic reform, Americans can break free from the noise and build a society that prioritizes truth, justice, and the common good. The stakes are high, but the path forward is clear: it is time to dismantle the Hate Economy and focus on the real game at play.</p>]]></content:encoded></item></channel></rss>