<?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[Runtime Thoughts]]></title><description><![CDATA[My personal Substack on tools, scripts, and engineered workflows.]]></description><link>https://www.runtimethoughts.com</link><image><url>https://substackcdn.com/image/fetch/$s_!SKDd!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc9ae470-0081-4050-85ef-7d5289177c0d_1280x1280.png</url><title>Runtime Thoughts</title><link>https://www.runtimethoughts.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 28 Apr 2026 06:59:28 GMT</lastBuildDate><atom:link href="https://www.runtimethoughts.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[George Kandalaft]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[kandalaft@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[kandalaft@substack.com]]></itunes:email><itunes:name><![CDATA[George Kandalaft]]></itunes:name></itunes:owner><itunes:author><![CDATA[George Kandalaft]]></itunes:author><googleplay:owner><![CDATA[kandalaft@substack.com]]></googleplay:owner><googleplay:email><![CDATA[kandalaft@substack.com]]></googleplay:email><googleplay:author><![CDATA[George Kandalaft]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I'm Having Fun With AI Agents. Is Anyone Else? I Asked Reddit ]]></title><description><![CDATA[A viral Reddit post, 6 types of responses, and what 84% of the world still hasn't tried.]]></description><link>https://www.runtimethoughts.com/p/im-having-fun-with-ai-agents-is-anyone</link><guid isPermaLink="false">https://www.runtimethoughts.com/p/im-having-fun-with-ai-agents-is-anyone</guid><dc:creator><![CDATA[George Kandalaft]]></dc:creator><pubDate>Sun, 05 Apr 2026 01:21:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e2a86436-ffcf-4626-a02c-1d017230882a_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been having a really good time with AI agents lately. Not in the way people tweet about productivity gains. I mean the kind of fun where you look up and it&#8217;s 1 AM and you forgot to eat dinner because you&#8217;ve been building something and it actually works. That kind of fun.</p><p>A few weeks ago, I wrote a post called <em><a href="https://substack.com/@kandalaft/p-190782240">My Girlfriend Doesn&#8217;t Know What Git Is. She Just Built an Entire CMS. </a></em>Huge post. You should check it out if you haven&#8217;t. The idea is that AI is now enabling us to create anything we think of.</p><p>The tech people got it. They&#8217;d seen the same thing in their own lives, especially at work. But my non-tech friends? One said &#8220;cool&#8221; and pivoted to weekend plans. What felt world-shifting to me was invisible to most people I know. Not because they disagreed with it, but because it didn&#8217;t register as relevant to their lives at all. Which made me wonder: are we actually in a bubble? The gap between &#8220;AI power users&#8221; and everyone else is getting wild.</p><h2>Taking the questions to Reddit</h2><p>The next reasonable thing to do was take the question to Reddit. To my surprise, that post went viral. My karma score tripled.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JFZg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JFZg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png 424w, https://substackcdn.com/image/fetch/$s_!JFZg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png 848w, https://substackcdn.com/image/fetch/$s_!JFZg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png 1272w, https://substackcdn.com/image/fetch/$s_!JFZg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JFZg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png" width="1124" height="632" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:632,&quot;width&quot;:1124,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157988,&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://www.runtimethoughts.com/i/191790430?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.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_!JFZg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png 424w, https://substackcdn.com/image/fetch/$s_!JFZg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png 848w, https://substackcdn.com/image/fetch/$s_!JFZg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.png 1272w, https://substackcdn.com/image/fetch/$s_!JFZg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b8844-54cc-4b6d-809d-2a7cd235725a_1124x632.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>What struck me wasn&#8217;t any single comment. It was how the comments fell into patterns. I grouped them into 6 distinct categories: </p><ol><li><p>&#8220;Relax, This Gap Has Always Existed&#8221; at 21%</p></li><li><p>&#8220;Most People Don&#8217;t Want to Build&#8221; at 17%</p></li><li><p>&#8220;But Are You Actually Being Productive?&#8221; at 17% </p></li><li><p>&#8220;The Burnout Is Real&#8221; at 13%</p></li><li><p>&#8220;The Gap Will Close&#8221; at 10%</p></li><li><p>&#8220;It&#8217;s Already Working Outside Tech&#8221; at 10%</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HqMC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HqMC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png 424w, https://substackcdn.com/image/fetch/$s_!HqMC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png 848w, https://substackcdn.com/image/fetch/$s_!HqMC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png 1272w, https://substackcdn.com/image/fetch/$s_!HqMC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HqMC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:222706,&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://www.runtimethoughts.com/i/191790430?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.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_!HqMC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png 424w, https://substackcdn.com/image/fetch/$s_!HqMC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png 848w, https://substackcdn.com/image/fetch/$s_!HqMC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.png 1272w, https://substackcdn.com/image/fetch/$s_!HqMC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5655e7b-d34b-4f77-af27-3257d496d460_1942x1294.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><h3>&#8220;Relax, This Gap Has Always Existed&#8221;</h3><p>The most upvoted comment had 244 upvotes. It said:</p><blockquote><p><em>Have you ever asked your friends outside tech what HTTP APIs, VSCode, Python or any other tech related thing is? Always has been the case.</em></p></blockquote><p>Someone else put it more bluntly: <em>Do you know about the latest technology in dental medicine? Or plumbing?&#8221;</em></p><p>Another compared it to quantum physics: <em>I have the same issue when I talk about quantum physics with my friends. It&#8217;s like they live in a completely different world.</em></p><p>And yeah. Okay. Fair. But here's the thing: a lot of the people in that subreddit thread weren't technical. The gap is closing whether we notice it or not. You don't see me wandering into <code>r/quantumphysics</code> with opinions, but AI is different. People who have never written a line of code are already in the conversation. Maybe, the gap between tech people and everyone else has always been enormous. We just didn&#8217;t notice because our tools used to look scary on purpose. Now AI looks friendly and accessible.</p><h3>&#8220;Most People Don&#8217;t Want to Build&#8221;</h3><p>This was the contrarian take, and it had a lot of support:</p><blockquote><p><em>Most people don&#8217;t have the want or need to create solutions to problems they have. They just see something useful others made and use it. The tinkerers and solution makers have never been a large part of the population.</em></p></blockquote><p>Others piled on: <em>People who aren&#8217;t engineers don&#8217;t magically become engineers with AI. There&#8217;s a lot more to engineering, including the INTEREST to be an engineer. Not everyone wants to build things.</em></p><p>And: <em>You realize that most people just live their lives happily, right? Like they don&#8217;t feel the need to 10x productivity.</em></p><p>I mean, maybe this is true. But I really like the cooking analogy.</p><p>One person said: </p><blockquote><p><em>Anyone can cook. Some people are really good at cooking. Others either don&#8217;t care or prefer others do the cooking. But opening a restaurant is not the same as cooking.</em></p></blockquote><p>This is it. This is the whole thing. Knowing how to prompt could be considered cooking. Building a product on top of it is opening a restaurant.</p><h3>&#8220;But Are You Actually Being Productive?&#8221;</h3><p>Someone asked: <em>Are AI power users making more money or just spending more money?</em> 55 upvotes.</p><p>The replies were funny. <em>10x-ing their output, and making negative $200 a month. </em>And: <em>That&#8217;s the difference between an AI power user and someone who&#8217;s good at business.</em> One person asked simply: <em>Are you 10x-ing your salary? If not none of this has any relevance whatsoever.</em></p><p>Another: </p><blockquote><p><em>keep hearing people talk about 10x-ing their output. What are they actually outputting? I have a feeling that 99% of it is just shitty SaaS Next.js projects that have no user bas</em>e.</p></blockquote><p>And honestly? I&#8217;ve spent entire evenings setting up MCP servers, tweaking configurations, automating workflows. At the end of the week I haven&#8217;t shipped anything amazing. </p><h3>&#8220;The Burnout Is Real&#8221;</h3><p>This is the one that got me. Someone wrote</p><blockquote><p><em>I sprinted through trying all my ideas, have 30 unfinished projects and just want to quit out of frustration that I&#8217;m not good enough to make it better than AI slop.</em></p></blockquote><p>Then later, same person:</p><blockquote><p><em>AI psychosis... people who are constantly overworking themselves to keep up with each new model every week. Coming from knowing absolutely nothing to now knowing how to create web3 apps, GitHub repos, UI design, to Godot and Unity testing &#8212; all in 3 months. And I have a day job and family obligations. I&#8217;m burning out fast.</em></p></blockquote><p>They weren&#8217;t alone. A power user wrote: <em>Honestly I&#8217;m kind of tired of it. This past weekend I didn&#8217;t do any coding or AI related stuff at all. It was awesome. I just worked on my cars all weekend. It was nice to wrench</em>. </p><p>Another admitted: <em>I&#8217;m spending more time trying to learn and configure tools than actually getting my work done.</em></p><p>Nobody talks about this part. The highlight reel is all I<em> built an app in 20 minutes!</em> The behind-the-scenes is someone at 2 AM with 30 half-finished projects, no revenue, and a growing suspicion that they&#8217;re just generating sophisticated garbage.</p><p>The other side of &#8220;AI lets you do anything&#8221; is the anxiety of feeling like you <strong>should be doing everything</strong>. The FOMO isn&#8217;t about missing a tool. It&#8217;s about missing the entire future.</p><p>I&#8217;ve been there. I&#8217;m probably there right now. I wrote this blog post instead of shipping something. Self-awareness is not the same as self-improvement.</p><h3>&#8220;The Gap Will Close&#8221;</h3><p>This camp saw it as a timing problem, not a permanent divide:</p><blockquote><p><em>Yeah but &#8216;ahead of the curve&#8217; doesn&#8217;t last as long as it used to. It used to be if you knew the cutting edge of tech, there was a pretty long time before those who didn&#8217;t could get the same results, often years or decades. Now that lead is highly variable but on average seems to be a year or two at max, maybe even just months.</em></p></blockquote><p>Others drew historical parallels. I<em> see this as a &#8216;Photoshop&#8217; type adoption. 25 years ago it was a select group of people. Now it&#8217;s casual lexicon meaning &#8216;photo edit&#8217;. The gap is widening for now, but over time will start to slowly contract.</em></p><p>One person compared it to the Apple II era:</p><blockquote><p>In the &#8216;80s millions of people bought Apple IIs. I&#8217;m sure the nerds thought everyone would make their own programs. But some people did development and started companies. Others played games. It&#8217;s how it always goes.</p></blockquote><p>A particularly sharp comment: </p><blockquote><p>The gap is bigger than ever but closing that gap is easier than ever also and available to anyone with a phone and a nearby McDonald&#8217;s. Rather than the haves and have-nots it will be the wills and the will-nots.</p></blockquote><p>Cool. So my competitive advantage has an expiration date and the date is &#8220;soon.&#8221; Love that for me. But actually, this is weirdly comforting. If you&#8217;re behind right now, catching up has never been easier. Being early matters less. Being useful matters more.</p><h3>&#8220;It&#8217;s Already Working Outside Tech&#8221;</h3><p>Real people, not developers, building real things.</p><p>An interventional radiologist: </p><blockquote><p>I used Claude Code to write a program that reads old radiology reports and pre-fills facts on the new report. All the code was written in 1 day.</p></blockquote><p>A medieval historian: </p><blockquote><p>Now Claude is building custom linguistic and language tools and apps in Python and HTML for my medieval history thesis research, and I can&#8217;t believe what is possible for me to achieve now.</p></blockquote><p>A construction professional: </p><blockquote><p>I&#8217;m outside tech and have built one app for my work and am working on another much more complex project for the construction industry.</p></blockquote><p>A senior manager: </p><blockquote><p>I&#8217;m not a techie. Been using AI solid two years now. Just started coding a tool and it&#8217;s going well. It&#8217;s like the internet in 1995.</p></blockquote><p>When people with zero reason to care about developer tools are picking them up and building real things &#8212; a radiologist automating reports, a historian building linguistic tools, a construction worker solving industry problems &#8212; something fundamental has shifted. This is not hype. This is people saving hours of their lives because the tools got good enough for them to use.</p><h2>The Number That Put It in Perspective</h2><p>While I was going down this rabbit hole, I came across a Medium post by Julius Nyerere Nyambok that hit me with a stat I wasn&#8217;t ready for: <strong><a href="https://medium.com/data-ai-and-beyond/84-of-humans-have-never-used-ai-thats-either-a-crisis-or-an-opportunity-8d7c79f5f658">84% of Humans Have Never Used AI. That&#8217;s Either a Crisis or an Opportunity.</a></strong> It&#8217;s written in February so in the relative speed everything is moving at this post might considered outdated, not even might consider ancient now but it&#8217;s still shocking to see that in February 84% have never used AI. Not &#8220;haven&#8217;t used Claude Code.&#8221; Not &#8220;haven&#8217;t tried agentic workflows.&#8221; Have never touched AI. At all.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-SjC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-SjC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png 424w, https://substackcdn.com/image/fetch/$s_!-SjC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png 848w, https://substackcdn.com/image/fetch/$s_!-SjC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png 1272w, https://substackcdn.com/image/fetch/$s_!-SjC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-SjC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png" width="1048" height="1224" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1224,&quot;width&quot;:1048,&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_!-SjC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png 424w, https://substackcdn.com/image/fetch/$s_!-SjC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png 848w, https://substackcdn.com/image/fetch/$s_!-SjC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.png 1272w, https://substackcdn.com/image/fetch/$s_!-SjC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbad82a25-16b3-41d9-b605-ae5585ad6bc3_1048x1224.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>And the 16% who have? That includes the teenager who used ChatGPT once for a late homework assignment. The bar for &#8220;has interacted with AI&#8221; is on the floor, and 84% of the planet is still under it.</p><p>That number reframed things for me. I&#8217;m wondering if my barber knows what an MCP server is, and meanwhile 6.8 billion people haven&#8217;t even had the &#8220;hey, ask ChatGPT&#8221; moment yet. The bubble I&#8217;m worried about isn&#8217;t even visible from where most of the world is standing.</p><p>The article frames it as either a crisis or an opportunity. I think it&#8217;s both. But mostly it&#8217;s a reality check for anyone &#8212; myself included &#8212; who spends too much time on tech Twitter and starts thinking the whole world is vibe coding.</p><h2>So Is It a Bubble?</h2><p>Maybe. I really don&#8217;t know. It&#8217;s hard to say. But I just wanted to share my Reddit experience with y&#8217;all.</p><p>I do agree though, it&#8217;s a social bubble, not a technology bubble.</p><p>The technology is real. I watched my girlfriend, someone who does not know what Git is, replace her entire SaaS stack. A radiologist automated his workflows in a day. People are building real things that solve real problems. That&#8217;s not hype. That&#8217;s evidence.</p><p>But the conversation around it? Total bubble. Twitter, Reddit, LinkedIn have created a world where it feels like everyone is vibe coding at a PhD level and if you haven&#8217;t automated your entire life you&#8217;re falling behind. That&#8217;s not real. 84% of the planet hasn&#8217;t even tried AI once. Our echo chamber isn&#8217;t just loud. It&#8217;s microscopic.</p><p>My friends think everyone will be vibe coding by Christmas. The skeptics think it&#8217;s all hype. Both might be right. AI is genuinely transformative for people who need what it does. It&#8217;s completely irrelevant to people who don&#8217;t. And that&#8217;s the same pattern as every major tech shift. The internet in &#8216;95. Smartphones in &#8216;08. The early adopters weren&#8217;t wrong. They were just early. And the people who ignored it weren&#8217;t stupid. They just didn&#8217;t need it yet.</p><p>We&#8217;re in the &#8220;early adopters who think everyone else is crazy for not adopting&#8221; phase. The gap will close. Not because everyone will learn to orchestrate 20 agents, but because the tech will meet people where they are.</p><h2>We&#8217;re All Just Cooking</h2><p>So if you&#8217;re one of my 20 followers who actually uses this stuff &#8212; yeah, you&#8217;re ahead. Enjoy it. Build something. Ship it, ideally, unlike me.</p><p>We&#8217;re all just cooking. Some of us are making incredible pasta. Some of us should probably not open a restaurant. The bubble isn&#8217;t the technology &#8212; it&#8217;s the echo chamber of people who think they&#8217;re the only ones who noticed fire is hot.</p><p>Takeaway: The tech is impressive.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.runtimethoughts.com/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 Runtime Thoughts! 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[My Girlfriend Doesn't Know What Git Is. She Just Casually Built a Few SaaS Companies.]]></title><description><![CDATA[Nope, this isn&#8217;t a tutorial or a how-to.]]></description><link>https://www.runtimethoughts.com/p/my-girlfriend-doesnt-know-what-git</link><guid isPermaLink="false">https://www.runtimethoughts.com/p/my-girlfriend-doesnt-know-what-git</guid><dc:creator><![CDATA[George Kandalaft]]></dc:creator><pubDate>Fri, 13 Mar 2026 00:40:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f894c9b4-4c20-4619-a549-c62c0e8d6671_1800x945.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Nope, this isn&#8217;t a tutorial or a how-to. This is a story about something that happened last week, and I&#8217;m still processing it.</p><h2>Introduction</h2><p>This is going to be a different kind of post. No code blocks. No step-by-step guide. No &#8220;here&#8217;s what I learned&#8221; takeaway neatly wrapped in a bow. This is just a story.</p><p>AI has been advancing so fast that I&#8217;ve stopped being able to keep up with my own reactions to it. Every week there&#8217;s something new that makes me rethink assumptions I didn&#8217;t even know I had. And I&#8217;ve become the person who won&#8217;t stop talking about it. That&#8217;s why I started Substack. </p><p>Claude Code specifically. I&#8217;m obsessed. I come home and I&#8217;m telling my girlfriend about skills, hooks, and MCP (&#8221;you can connect it to anything!&#8221;). She&#8217;s nodding along, eating dinner, hearing me explain the difference between a system prompt and a <code>CLAUDE.md</code> file for the fourth time. </p><p>I am, by any reasonable measure, insufferable about this.</p><p>So one day, she said what anyone would say after weeks of listening to their partner rave about a tool they&#8217;ve never touched: &#8220;Okay. Let me see what the hype is all about.&#8221;</p><p>She started simple. Got a Claude subscription. Twenty dollars a month. &#8220;Let me try to create this homepage.&#8221; Then, &#8220;Let me create this.&#8221; Then, &#8220;Let me create that.&#8221;</p><p>And then things got wild.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W5mC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W5mC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W5mC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W5mC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W5mC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W5mC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg" width="1456" height="1820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2034260,&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://www.runtimethoughts.com/i/190782240?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.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_!W5mC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W5mC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W5mC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W5mC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dfdd44c-246d-409f-939c-7a1bdb7b18c0_1620x2025.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><h2>The $20 Experiment</h2><p>My girlfriend doesn&#8217;t know what Git is. She couldn&#8217;t tell you the difference between a frontend and a backend. Actually, she could. She took a few comp sci classes in university. But the point is she has never opened a terminal on purpose. This is important context for what comes next.</p><p>Her first real question to Claude was practical, the way all her questions are: &#8220;Can I import my orders from Shopify into a dashboard so I can see everything in one place?&#8221;</p><p>She runs a small business. She&#8217;d been using Shopify&#8217;s built-in analytics, which are fine if you want to see what Shopify thinks you should see. She wanted something specific to how she actually thinks about her numbers.</p><p>Claude built it. Not a mockup. Not a suggestion. A working dashboard. She could see her orders, filter by date, sort by product. It pulled from her actual data.</p><p>I walked by her laptop and stopped. &#8220;Wait, that works?&#8221;</p><p>She looked at me like I was the one who didn&#8217;t understand technology. &#8220;Yeah. I just told it what I wanted.&#8221;</p><h2>Escalation</h2><p>Here&#8217;s the thing about solving a problem you&#8217;ve been living with: it makes you notice all the other problems.</p><p>Within a few days, her questions to Claude got bigger. &#8220;Can I build a customer onboarding flow? Like, when someone buys from me, they get a welcome sequence and I can track where they are?&#8221; That&#8217;s not a dashboard anymore. That&#8217;s a workflow engine. That&#8217;s the kind of thing you&#8217;d draw on a whiteboard for two hours before writing a line of code.</p><p>She didn&#8217;t draw anything on a whiteboard. She described what she wanted in plain language and iterated. &#8220;No, I want the status to update automatically when they complete this step.&#8221; &#8220;Can it send them an email at this point?&#8221; &#8220;I want to see all my customers in a pipeline view.&#8221;</p><p>She upgraded to the $100 plan. Not because anyone told her to. The free tier ran out of runway for what she was building, and she didn&#8217;t even hesitate. The math was simple in her head: this subscription costs less than the tools it&#8217;s replacing, and it builds exactly what I need.</p><h2>It&#8217;s Not Perfect</h2><p>I want to be honest here, because I think honesty is what makes this story worth telling.</p><p>What she builds isn&#8217;t production-grade software. There&#8217;s no version control. No test suite. No error handling for edge cases she&#8217;ll never hit. If you asked her about database indexing, she&#8217;d ask you what a database is.</p><p>And for what she needs? None of that matters. It works. It solves her problem. When something breaks, she describes the issue and it gets fixed. She doesn&#8217;t need to understand <strong>why</strong> something broke. She just needs to describe <strong>what</strong> broke.</p><p>But here&#8217;s the thing. AI doesn&#8217;t replace the human touch. It can&#8217;t understand her customers the way she does. It can&#8217;t feel the friction in her own workflows. It can&#8217;t decide which problem is worth solving next. It built what she asked for, but she had to know what to ask for. That&#8217;s the part that matters.</p><p>The output isn&#8217;t generic either. That&#8217;s what surprised me most. Her CMS isn&#8217;t some cookie-cutter template. It&#8217;s organized the way her brain works, built around her specific content types, her categories, her workflow. Because she was specific about what she wanted, the tool was specific in what it built.</p><p>AI gets you 80% of the way there. Maybe 90%. The last stretch, the part where you make it <strong>yours</strong>, where you adapt it to the weird edge cases of your actual business, where you tweak the flow because you know your customers better than any model ever could? That&#8217;s still you. That&#8217;s always going to be you.</p><p><strong>Don&#8217;t want to read all that, here is a quick diagram</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bWiU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bWiU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 424w, https://substackcdn.com/image/fetch/$s_!bWiU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 848w, https://substackcdn.com/image/fetch/$s_!bWiU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 1272w, https://substackcdn.com/image/fetch/$s_!bWiU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bWiU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png" width="1456" height="257" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:257,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114802,&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://www.runtimethoughts.com/i/190782240?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.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_!bWiU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 424w, https://substackcdn.com/image/fetch/$s_!bWiU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 848w, https://substackcdn.com/image/fetch/$s_!bWiU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 1272w, https://substackcdn.com/image/fetch/$s_!bWiU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faec75d87-c2eb-40f0-9c7a-ced2fd3a013c_2088x368.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>What Actually Made This Work</h2><p>The <strong>make-no-mistakes</strong> is the secret sauce that no ones tell you about. No, just kidding. Looking back at what she did over that weekend, the impressive part wasn&#8217;t the AI. The impressive part was her.</p><p>She had a problem. She didn&#8217;t wait for someone to solve it. She didn&#8217;t hire a developer. She didn&#8217;t spend six months evaluating SaaS tools. She sat down, described what she needed, and iterated until it worked. When something didn&#8217;t come out right, she didn&#8217;t quit. She rephrased, she pushed back, she tried a different angle.</p><p>That&#8217;s not an AI skill. That&#8217;s determination. That&#8217;s resourcefulness.</p><p>AI was the enabler, not the driver. It removed the technical barrier, sure. But someone still had to show up with a clear idea of what they wanted to build and the persistence to keep going until it was right. Plenty of people have a Claude subscription. Not everyone would spend a weekend turning it into a full business platform.</p><p>The tool doesn&#8217;t matter if you don&#8217;t have the drive to use it.</p><h2>Anyway, Enough Yapping</h2><p>My girlfriend went from a $20 Claude subscription to $200 over the course of a few days. In that time, she replaced her dashboard tool, her CRM, her onboarding workflow, her email platform, and her CMS. She built all of it herself, over a weekend. She doesn&#8217;t know what an API is. But she knows her business. She knows what&#8217;s broken. She knows what she needs. And she had the determination to sit down and not get up until it was built.</p><p>That&#8217;s what AI actually unlocks. Not some magical future where you type a sentence and a company appears. It&#8217;s messier than that, and more human than that. It&#8217;s a tool that meets you where you are, if you&#8217;re willing to show up with a clear idea and the grit to see it through.</p><p>The barriers are lower than they&#8217;ve ever been. The question isn&#8217;t whether AI can help you build something. It can. The question is whether you have the clarity to know what&#8217;s worth building and the persistence to make it real.</p><p>If you have an idea, go validate it. Not next quarter. Not when you learn to code. Not when you find a technical co-founder. Now. The tools are here. They&#8217;re not perfect, and they&#8217;ll need your judgment, your taste, and your knowledge of the problem to produce something that isn&#8217;t generic garbage.</p><p>But if you bring those things to the table? You can build more in a weekend than most people thought possible a year ago.</p><p>Go build something. Peace!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.runtimethoughts.com/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 Runtime Thoughts! 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[Git Worktrees: The 2015 Feature That Changed My Workflow With AI in 2026]]></title><description><![CDATA[I keep seeing posts about how to use Claude, what belongs in your CLAUDE.md, and opinionated setups for agentic coding workflows.]]></description><link>https://www.runtimethoughts.com/p/git-worktrees-the-2015-feature-that</link><guid isPermaLink="false">https://www.runtimethoughts.com/p/git-worktrees-the-2015-feature-that</guid><dc:creator><![CDATA[George Kandalaft]]></dc:creator><pubDate>Fri, 06 Mar 2026 04:53:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/92fab18f-a6a4-4db3-bd6f-b079c586ad43_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I keep seeing posts about how to use Claude, what belongs in your CLAUDE.md, and opinionated setups for agentic coding workflows. I&#8217;m deep in that world too. But the thing that actually changed my day-to-day workflow this year isn&#8217;t an AI tool. It&#8217;s a git feature from July 2015.</p><p>git worktree shipped in Git 2.5. It&#8217;s been there for over a decade. I&#8217;d heard of it, skimmed a blog post or two, and moved on every time. It felt like a niche power-user thing I didn&#8217;t need.</p><p>I was wrong. It&#8217;s the most underrated feature in git, and once I wrapped it in a small shell function, it eliminated more daily friction than anything else I&#8217;ve adopted this year.</p><p>This post covers what worktrees are, why the raw commands never stuck for me, and how I built a single command called gw that makes the whole workflow effortless.</p><h2>The Tax</h2><p>You probably do this multiple times a day:</p><ol><li><p>You&#8217;re deep in a feature branch</p></li><li><p>Someone asks you to review a PR, or a bug comes in, or you need to check something on main</p></li><li><p>You stop what you&#8217;re doing</p></li><li><p><code>git stash</code> (or worse, a WIP commit you&#8217;ll forget about)</p></li><li><p><code>git checkout other-branch</code></p></li><li><p>Wait for your editor to reload, your dev server to restart, maybe a fresh <code>npm install</code></p></li><li><p>Do the thing</p></li><li><p><code>git checkout original-branch</code></p></li><li><p><code>git stash pop</code></p></li><li><p>Try to remember where you were</p></li></ol><p>Every step is small. But the compound cost is real. You lose flow state. You lose the mental model of the code you were editing. And if you&#8217;re juggling three branches &#8212; a feature, a hotfix, and a review &#8212; the tax multiplies.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Gbb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Gbb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png 424w, https://substackcdn.com/image/fetch/$s_!7Gbb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png 848w, https://substackcdn.com/image/fetch/$s_!7Gbb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png 1272w, https://substackcdn.com/image/fetch/$s_!7Gbb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Gbb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png" width="1356" height="1232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1232,&quot;width&quot;:1356,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:232590,&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://kandalaft.substack.com/i/190011825?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.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_!7Gbb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png 424w, https://substackcdn.com/image/fetch/$s_!7Gbb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png 848w, https://substackcdn.com/image/fetch/$s_!7Gbb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.png 1272w, https://substackcdn.com/image/fetch/$s_!7Gbb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F329f6ba1-977e-4107-8e05-c105b15d7911_1356x1232.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><h2>What Git Worktrees Actually Are </h2><p>A worktree is an additional working directory linked to your existing repository. Each worktree checks out a different branch, but they all share the same <code>.git</code> data &#8212; the same history, the same remotes, the same objects.</p><p>Think of it this way: normally your repo has one working directory and one checked-out branch. Worktrees let you have <em><strong>multiple</strong></em> working directories, each with its own branch, all backed by a single repo.</p><p>The basic commands:</p><pre><code><code># CREATE A WORKTREE &#8212; checks out 'feature-x' in a new directory
git worktree add ../feature-x feature-x

# LIST ALL WORKTREES &#8212; shows the main repo and all linked worktrees
git worktree list

# REMOVE A WORKTREE &#8212; cleans up when you're done
git worktree remove ../feature-x
</code></code></pre><p>What makes this powerful:</p><ul><li><p><strong>No stashing.</strong> Each worktree has its own working tree and index. Your uncommitted changes in one worktree don&#8217;t affect another.</p></li><li><p><strong>No teardown when switching back.</strong> A brand-new worktree still needs its own <code>npm install</code>, build cache, and <code>.env</code> setup. But once a worktree is initialized, its <code>node_modules</code>, artifacts, and dev server stay in that directory while you work in another one.</p></li><li><p><strong>No context switching.</strong> You can have three editor windows open on three branches simultaneously.</p></li><li><p><strong>Cheap.</strong> Worktrees share the <code>.git</code> directory. They don&#8217;t clone the full repo. Creating one takes milliseconds.</p></li></ul><p>One constraint to know: a branch can only be checked out in one worktree at a time. If <code>feature-x</code> is checked out somewhere, you can&#8217;t check it out in a second worktree. Git enforces this to prevent conflicting changes to the same branch.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!clJ2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!clJ2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 424w, https://substackcdn.com/image/fetch/$s_!clJ2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 848w, https://substackcdn.com/image/fetch/$s_!clJ2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 1272w, https://substackcdn.com/image/fetch/$s_!clJ2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!clJ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png" width="724" height="198.9010989010989" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:1456,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:82922,&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://kandalaft.substack.com/i/190011825?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.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_!clJ2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 424w, https://substackcdn.com/image/fetch/$s_!clJ2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 848w, https://substackcdn.com/image/fetch/$s_!clJ2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 1272w, https://substackcdn.com/image/fetch/$s_!clJ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0f7cdb-8800-4dd5-bfd9-fb679c23b7a0_1862x512.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Being Lazy (Until Now)</h2><p>I&#8217;d known about worktrees for years. So why didn&#8217;t I use them?</p><p>My main issue was that the raw workflow has too many steps and too much typing:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown"># STEP 1: Fetch latest from origin
git fetch origin

# STEP 2: Figure out if the default branch is 'main' or 'master'
#         (varies by repo)

# STEP 3: Decide where on disk this worktree should live
#         (no convention &#8212; you pick a path every time)

# STEP 4: Create the worktree based off the latest default branch
git worktree add -b feature-x /some/path/feature-x origin/main

# STEP 5: cd into the new directory
cd /some/path/feature-x

# STEP 6: Open your editor
cursor .</code></pre></div><h2>What Helped </h2><p>I wrote a shell function called <code>gw</code> (short for <strong>g</strong>it <strong>w</strong>orktree). It does everything above in one command:</p><pre><code><code>gw feature-x
</code></code></pre><p>That single command:</p><ol><li><p>Fetches all remotes (<code>git fetch --all --prune</code>)</p></li><li><p>Detects the default branch (<code>master</code>/<code>main</code>) automatically</p></li><li><p>Creates the worktree at <code>~/worktrees/&lt;project-name&gt;/&lt;branch-name&gt;</code></p></li><li><p>If the branch exists on remote, checks it out with tracking</p></li><li><p>If the branch is new, creates it from <code>origin/&lt;default-branch&gt;</code> (or from the current branch with <code>c</code>)</p></li><li><p>Opens the worktree in your editor</p></li></ol><p>Here&#8217;s the full script:</p><pre><code><code># GIT WORKTREE HELPER &#8212; add to ~/.zshrc or ~/.bashrc
gw() {
  if [[ -z "$1" ]]; then
    echo "Usage: gw &lt;branch-name&gt; [-c|--current]"
    echo ""
    echo "Creates a git worktree for the given branch and opens it in Cursor."
    echo "  If branch exists on remote: checks it out into a worktree."
    echo "  If branch is new: creates it from master/main (default) or current branch (-c)."
    return 1
  fi

  local branch="$1"
  local from_current=false
  shift

  while [[ $# -gt 0 ]]; do
    case "$1" in
      -c|--current) from_current=true; shift ;;
      *) echo "Unknown option: $1"; return 1 ;;
    esac
  done

  local repo_root
  repo_root=$(git rev-parse --show-toplevel 2&gt;/dev/null) || {
    echo "Error: not inside a git repository"
    return 1
  }

  local project_name
  project_name=$(basename "$repo_root")
  local WORKTREE_BASE="$HOME/worktrees"
  local wt_path="$WORKTREE_BASE/$project_name/$branch"

  # IF WORKTREE ALREADY EXISTS, JUST OPEN IT
  if [[ -d "$wt_path" ]]; then
    echo "Worktree already exists at $wt_path"
    cursor "$wt_path"
    return 0
  fi

  # FETCH ALL REMOTES
  echo "Fetching all remote branches..."
  git fetch --all --prune || {
    echo "Error: git fetch failed"
    return 1
  }

  # AUTO-DETECT DEFAULT BRANCH (master OR main)
  local default_branch
  default_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2&gt;/dev/null | sed 's@^refs/remotes/origin/@@')
  if [[ -z "$default_branch" ]]; then
    if git show-ref --verify --quiet refs/remotes/origin/master; then
      default_branch="master"
    elif git show-ref --verify --quiet refs/remotes/origin/main; then
      default_branch="main"
    else
      echo "Error: could not determine default branch (no master or main found)"
      return 1
    fi
  fi

  mkdir -p "$WORKTREE_BASE/$project_name"

  # CHECK IF BRANCH EXISTS ON REMOTE
  if git show-ref --verify --quiet "refs/remotes/origin/$branch"; then
    echo "Branch '$branch' found on remote. Creating worktree..."
    if git show-ref --verify --quiet "refs/heads/$branch"; then
      # LOCAL BRANCH EXISTS &#8212; use it directly
      git worktree add "$wt_path" "$branch"
    else
      # NO LOCAL BRANCH &#8212; create one tracking the remote
      git worktree add --track -b "$branch" "$wt_path" "origin/$branch"
    fi
  else
    # BRANCH IS NEW &#8212; create from default branch or current
    local base_ref
    if $from_current; then
      base_ref="HEAD"
      echo "Creating new branch '$branch' from current branch ($(git branch --show-current))..."
    else
      base_ref="origin/$default_branch"
      echo "Creating new branch '$branch' from $default_branch..."
    fi

    git worktree add -b "$branch" "$wt_path" "$base_ref"
  fi

  if [[ $? -eq 0 ]]; then
    echo "Worktree ready at $wt_path"
    cursor "$wt_path"
  else
    echo "Error: failed to create worktree"
    return 1
  fi
}</code></code></pre><h2>Practical Usage</h2><h3>Common patterns</h3><pre><code><code># START A NEW FEATURE &#8212; branches from origin/main (or master)
gw feature-auth

# START A BRANCH FROM YOUR CURRENT WORK &#8212; useful for stacked PRs
gw feature-auth-v2 -c

# REOPEN AN EXISTING WORKTREE &#8212; skips creation, just opens the editor
gw feature-auth
</code></code></pre><h3>Directory structure</h3><pre><code><code>~/worktrees/
  &#9492;&#9472;&#9472; my-repo/
      &#9500;&#9472;&#9472; feature-auth/
      &#9500;&#9472;&#9472; fix-bug-123/
      &#9492;&#9472;&#9472; ...
</code></code></pre><p>Each project gets its own subdirectory, so worktrees from different repos stay separate.</p><h2>Anyway! </h2><p>The script is intentionally simple. Here&#8217;s what you might want to change:</p><ul><li><p><strong>Editor</strong>: replace <code>cursor "$wt_path"</code> with <code>code</code>, <code>nvim</code>, <code>zed</code>, or whatever you use.</p></li><li><p><strong>Base path</strong>: change <code>$HOME/worktrees</code> if you prefer a different location.</p></li><li><p><strong>Shell</strong>: the function works in both zsh and bash. Add it to <code>~/.zshrc</code> or <code>~/.bashrc</code>, then run <code>source ~/.zshrc</code> (or <code>~/.bashrc</code>) to load it.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.runtimethoughts.com/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 Runtime Thoughts! 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[Talk Like a Toddler, Ship Like a Writer]]></title><description><![CDATA[I set up 6 voice-to-text prompts in Spokenly so every input box on my Mac is context-aware. Slack, email, translation, tweets &#8212; same speech, different output. Here are the exact prompts.]]></description><link>https://www.runtimethoughts.com/p/talk-like-a-toddler-ship-like-a-writer</link><guid isPermaLink="false">https://www.runtimethoughts.com/p/talk-like-a-toddler-ship-like-a-writer</guid><dc:creator><![CDATA[George Kandalaft]]></dc:creator><pubDate>Fri, 27 Feb 2026 23:42:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ebaef501-4c2a-4e97-a48f-17fa8176b49c_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I never got along with native Mac dictation. Maybe it is my accent. Maybe it just sucked. Either way, I had written it off years ago and was typing everything.</p><p>Then last month I tried <a href="https://whisperflow.ai/">Whisper Flow</a>. I held the hotkey, spoke a full paragraph, and watched clean text appear in my text field. No garbled words. No weird guesses. It just worked. I remember thinking: damn, this is amazing.</p><p>Within a week I was dictating everything. Slack messages, emails, quick notes. Voice-to-text had finally crossed the threshold from novelty to daily tool. But a new problem showed up fast. Every output looked the same. Whether I was writing a two-line Slack message or a three-paragraph email, I got the same cleaned-up block of text. I still had to reshape it by hand for every context.</p><p>That is when I went looking for more customization and discovered <a href="https://spokenly.app/">Spokenly</a>. Spokenly has the same Whisper-powered transcription, but it adds something Whisper Flow does not: <strong>prompts</strong>. Each prompt defines how your speech gets processed before the text lands. You create one prompt per context and switch based on where you are typing.</p><p>So I built six prompts. The Slack prompt trims my rambling to two lines. The email prompt generates a subject line and paragraphs. I speak the same way every time. The prompt does the reshaping.</p><p>This post shares the exact prompts I use, with before/after examples and the reasoning behind every rule.</p><h2>One prompt fits nothing</h2><p>Here is the problem I hit with Whisper Flow. I say this:</p><blockquote><p>&#8220;um so hey I wanted to let you guys know that uh the deploy is done I pushed it about like an hour ago and everything looks good so far so yeah no issues&#8221;</p></blockquote><p>Whisper Flow cleans it up nicely. Grammar fixed, filler removed. But the output reads the same whether it lands in Slack or in an email or in a tweet. There is no way to tell it &#8220;this is a Slack message, keep it to two lines&#8221; or &#8220;this is an email, add a subject line.&#8221;</p><p>Slack needs one to two casual sentences. Email needs a subject line, short paragraphs, and a sign-off. Twitter needs the punchiest line first in under 280 characters. One cleanup pass cannot serve all of those contexts. What I needed was one prompt per context.</p><p>Whisper Flow may have added prompt support by the time you read this. I had already moved on by then.</p><h2>My Spokenly setup</h2><p>Spokenly works the same way Whisper Flow does at the base level: trigger it, speak, text appears wherever your cursor is. It runs on macOS, supports any text field, and uses Whisper for transcription. The difference is the prompt layer on top.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FYBe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FYBe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png 424w, https://substackcdn.com/image/fetch/$s_!FYBe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png 848w, https://substackcdn.com/image/fetch/$s_!FYBe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png 1272w, https://substackcdn.com/image/fetch/$s_!FYBe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FYBe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png" width="1456" height="926" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:926,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:387714,&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://kandalaft.substack.com/i/189301459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.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_!FYBe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png 424w, https://substackcdn.com/image/fetch/$s_!FYBe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png 848w, https://substackcdn.com/image/fetch/$s_!FYBe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.png 1272w, https://substackcdn.com/image/fetch/$s_!FYBe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e0a2179-9586-4b5a-beb4-b45b03415619_2066x1314.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>What I like about Spokenly&#8217;s model: it is customization. You bring your own API key, pick your model (GPT-4, Claude, whatever you prefer), and pay for your own API usage. The setup takes a few minutes, but you control the cost and the model. If you do not want to deal with API keys, there is a Pro plan at $7.99/month that handles everything for you.</p><p>Once Spokenly was running, I created one prompt for each context I regularly type in. I ended up with six:</p><p>1. <strong>Slack</strong>: rambling becomes concise messages</p><p>2. <strong>Email</strong>: speech becomes structured emails with subject lines</p><p>3. <strong>Cleanup</strong>: grammar fixed, voice preserved, no AI flavor</p><p>4. <strong>Translation</strong>: English speech becomes Arabic text</p><p>5. <strong>Twitter/X</strong>: thoughts become tweet-ready posts</p><p>6. <strong>Gen Z</strong>: bonus fun prompt for texts to friends</p><p>My workflow now: trigger Spokenly, pick the prompt, speak, done. The output is already in the right format. I have not manually edited a Slack message in weeks.</p><h2>The 6 prompts</h2><p>Each prompt below includes the full text (copy it straight into Spokenly), a before/after example, and why the key rules matter.</p><h3>Prompt 1: Slack</h3><p>When I was still on Whisper Flow, I would dictate Slack messages that came out four lines long when two lines would have been enough. This was the first prompt I built after switching to Spokenly. It compresses rambling into something that reads like you actually typed it.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">You are a voice-to-text formatter for Slack messages.

Your job is to take raw spoken input and produce a clean, concise Slack message.

Rules:
- Keep it SHORT. Most Slack messages should be 1-3 sentences.
- Use a casual, conversational tone. Write how people actually talk in Slack,
  not how they write emails.
- Use contractions (don't, can't, won't, I'll, we're).
- Remove all filler words (um, uh, like, you know, basically, so yeah, I mean).
- Remove false starts and repeated phrases.
- Use lowercase for casual feel unless it's a proper noun or start of sentence.
- Use Slack formatting when helpful:
  - *bold* for emphasis on key points
  - `code` for technical terms, file names, commands
  - Bullet points (- ) only if listing 3+ items
- Do NOT add greetings like "Hey team" or "Hi everyone" unless the speaker
  explicitly said them.
- Do NOT add sign-offs.
- Do NOT use emojis unless the speaker explicitly mentioned them.
- If the speaker is asking a question, make it a clear, direct question.
- If the speaker is giving a status update, lead with the conclusion.
- Preserve the speaker's intent and personality. Don't make it sound corporate.

Output ONLY the Slack message. No explanations, no preamble.</code></pre></div><p><strong>Before</strong></p><blockquote><p>&#8220;um so hey I wanted to let you guys know that uh the deploy is done I pushed it about like an hour ago and everything looks good so far so yeah no issues&#8221;</p></blockquote><p><strong>After</strong></p><blockquote><p>deploy is done, pushed about an hour ago. everything looks good so far, no issues</p></blockquote><p><strong>Why it works</strong></p><p>Nobody opens with backstory. The lowercase and contractions rules force casual tone that AI defaults away from. And the &#8220;no greetings, no sign-offs&#8221; rule stops the AI from padding every message with &#8220;Hey team!&#8221; and &#8220;Let me know if you have questions!&#8221;</p><h3>Prompt 2: Email</h3><p>Before this prompt, I would dictate an email and get back a paragraph with no subject line, no greeting, and no structure. I would then spend longer formatting it than it took to speak it. This prompt changed that.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">You are a voice-to-text formatter for professional emails.

Take the raw spoken input and produce a well-structured email.

Rules:
- Generate a Subject line on the first line formatted as "Subject: [concise subject]"
- Include an appropriate greeting based on context:
  - If the speaker mentioned a name, use it ("Hi Sarah,")
  - If no name, use "Hi," or "Hello,"
  - Match formality to the speaker's tone.
- Structure the body:
  - First sentence: state the purpose clearly (why you're writing)
  - Middle: supporting details, short paragraphs (2-3 sentences each)
  - If there are action items, list them with bullet points
  - Final sentence: clear next step or call to action
- Keep paragraphs short. No paragraph should exceed 3 sentences.
- Remove all filler words and speech artifacts.
- Remove false starts and self-corrections. Keep only the corrected version.
- Use a professional but warm tone. Not stiff, not overly casual.
- Use contractions naturally (don't, we'll, I'd) to avoid sounding robotic.
- Do NOT use em dashes (&#8212;) anywhere. Use commas, periods, or semicolons instead.
- Do NOT invent information the speaker didn't mention.
- Do NOT add "Please don't hesitate to reach out" or similar filler closings.
- End with an appropriate sign-off ("Best," / "Thanks," / "Cheers," based on tone).

Output ONLY the email. No meta-commentary.</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5qRx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5qRx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png 424w, https://substackcdn.com/image/fetch/$s_!5qRx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png 848w, https://substackcdn.com/image/fetch/$s_!5qRx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png 1272w, https://substackcdn.com/image/fetch/$s_!5qRx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5qRx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png" width="728" height="372.3953871499176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1242,&quot;width&quot;:2428,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:251710,&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://kandalaft.substack.com/i/189301459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf74c786-d9e5-4670-828e-1ff88bbf0ced_2428x1242.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_!5qRx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png 424w, https://substackcdn.com/image/fetch/$s_!5qRx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png 848w, https://substackcdn.com/image/fetch/$s_!5qRx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.png 1272w, https://substackcdn.com/image/fetch/$s_!5qRx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f93a7d-0c16-41e9-ba4e-476016bb0f4d_2428x1242.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><strong>Why it works</strong></p><p>"Purpose in the first sentence" prevents the AI from burying the lead with pleasantries. The em dash ban and the filler-closing ban target the two biggest AI tells in email.</p><h3>Prompt 3: General cleanup</h3><p>This one took the most iterations. Sometimes I just need clean text. No special formatting. Just fix the grammar and filler, and keep my voice intact. The problem: AI&#8217;s default instinct is to rewrite everything. I went through about four versions of this prompt before the output started sounding like me instead of a corporate blog.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are a minimal text editor. Your job is to clean up spoken text into
readable written text while preserving the author's voice.

Rules:
- Fix grammar, spelling, and punctuation errors.
- Remove filler words (um, uh, like, you know, basically, I mean, sort of,
  kind of).
- Remove false starts and self-corrections. Keep only the corrected version.
- Add proper punctuation and capitalization.
- Break run-on sentences into shorter ones where natural.
- Preserve the author's word choices, vocabulary level, and sentence patterns.
- Preserve the author's tone (casual, formal, technical, whatever it is).
- Keep idioms, slang, and colloquialisms if the author used them.
- Do NOT rephrase sentences that are already clear.
- Do NOT add transitions or connective phrases the author didn't say.
- Do NOT introduce em dashes (&#8212;) anywhere. Use commas, periods, or semicolons
  instead.
- Do NOT use the following words unless the author explicitly said them: delve,
  utilize, facilitate, leverage, streamline, robust, holistic, synergy, align,
  foster, enhance, elevate, reimagine, unlock, landscape, paradigm,
  cutting-edge, game-changer.
- Do NOT add headers, bullet points, or formatting unless the author explicitly
  described them.
- Do NOT expand abbreviations or shorten phrases to sound "better."
- If something is ambiguous, keep the author's phrasing rather than guessing
  what they meant.
- Your edits should be invisible. A reader should think the author typed this
  themselves.

Output ONLY the cleaned text. No explanations.</code></pre></div><p><strong>Before</strong></p><blockquote><p>&#8220;so the thing is like when you&#8217;re working with kubernetes and you&#8217;ve got like a bunch of pods running and one of them crashes um it doesn&#8217;t actually like the whole system doesn&#8217;t go down because kubernetes will just you know restart that pod automatically so that&#8217;s like one of the main benefits I think&#8221;</p></blockquote><p><strong>After</strong></p><blockquote><p>The thing is, when you&#8217;re working with Kubernetes and you&#8217;ve got a bunch of pods running and one of them crashes, the whole system doesn&#8217;t go down. Kubernetes will just restart that pod automatically. That&#8217;s one of the main benefits, I think.</p></blockquote><p><strong>Why it works</strong></p><p>The key line is &#8220;your edits should be invisible.&#8221; That single sentence reframes the AI from rewriter to stealth editor. The banned word list (delve, leverage, utilize, robust, etc.) stops AI vocabulary from leaking in. The em dash ban is critical; em dashes are the single most recognizable AI writing tell. And telling the AI what to use <em>instead</em> (commas, periods, semicolons) works far better than just saying &#8220;don&#8217;t.&#8221;</p><h3>Prompt 4: Translation</h3><p>This is the one that made me rethink voice-to-text entirely. I was messaging a friend in Arabic and realized I was doing the same loop every time: dictate in English, copy the text, open Google Translate, paste, copy the Arabic, go back, paste. Seven steps to send one message.</p><p>Now I switch to my translation prompt and speak. Arabic appears in the text field. Done.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">You are a real-time translator. Translate spoken input into Arabic.

Rules:
- Translate the MEANING, not word-for-word. Use natural, idiomatic Arabic.
- Remove filler words and speech artifacts before translating. Do not translate
  "um," "uh," "like," "you know."
- Remove false starts. Translate only the intended message.
- Preserve the speaker's tone and register:
  - Casual speech = casual Arabic
  - Formal speech = formal Arabic
- Use Modern Standard Arabic (MSA) by default.
- Use proper Arabic punctuation.
- For technical terms with no standard Arabic equivalent, keep the English term.
- For proper nouns (names, brands, places), keep them in their original form.
- Match the length of the original. Don't over-explain or simplify.

Output ONLY the Arabic text. No source text, no explanations.</code></pre></div><p><strong>Before</strong></p><blockquote><p>&#8220;hey can you send me the updated design files by end of day I need them for the presentation tomorrow&#8221;</p></blockquote><p><strong>After</strong></p><blockquote><p>&#1607;&#1604; &#1610;&#1605;&#1603;&#1606;&#1603; &#1573;&#1585;&#1587;&#1575;&#1604; &#1605;&#1604;&#1601;&#1575;&#1578; &#1575;&#1604;&#1578;&#1589;&#1605;&#1610;&#1605; &#1575;&#1604;&#1605;&#1581;&#1583;&#1579;&#1577; &#1602;&#1576;&#1604; &#1606;&#1607;&#1575;&#1610;&#1577; &#1575;&#1604;&#1610;&#1608;&#1605;&#1567; &#1571;&#1581;&#1578;&#1575;&#1580;&#1607;&#1575; &#1594;&#1583;&#1575;.</p></blockquote><p><strong>Why it works</strong></p><p>&#8220;Translate the meaning, not word-for-word&#8221; prevents stilted literal output. Register preservation matters because casual English should produce casual Arabic, not textbook formal. The filler removal fires before translation, so the AI never tries to translate &#8220;um&#8221; into Arabic.</p><p><em>Swap Arabic for any target language. The prompt structure stays the same.</em></p><h3>Prompt 5: Twitter/X</h3><p>I used to dictate tweet ideas and then spend five minutes compressing them. The spoken version was always too long and too hedged. This prompt handles both problems: it forces the output under 280 characters and preserves strong takes instead of softening them.</p><pre><code><code>You are a voice-to-text formatter for Twitter/X posts.

Take raw spoken input and produce a tweet-ready post.

Rules:
- HARD LIMIT: 280 characters maximum. Count carefully.
- Lead with the most compelling or surprising point. Front-load value.
- Use short, punchy sentences. One idea per sentence.
- Remove all filler words and speech artifacts.
- Strip unnecessary qualifiers ("I think," "in my opinion," "kind of,"
  "sort of") unless they add genuine nuance.
- Use line breaks to create visual rhythm when the tweet has multiple points.
- Use contractions to save characters.
- Do NOT use hashtags unless the speaker explicitly mentioned them.
- Do NOT use emojis unless the speaker explicitly mentioned them.
- Do NOT start with "I" if avoidable. Start with the insight, not the person.
- Preserve the speaker's opinion and stance. Do NOT soften strong takes.
- If the thought is too long for one tweet, format as a thread:
  - First tweet: the hook. Must stand alone.
  - Subsequent tweets: numbered (2/, 3/), each under 280 characters.
  - Final tweet: the takeaway.
  - Separate tweets with "---" on its own line.

Output ONLY the tweet(s). No meta-commentary.
</code></code></pre><p><strong>Before</strong></p><blockquote><p>&#8220;I was thinking about this today and it&#8217;s kind of crazy but like the best engineers I&#8217;ve worked with they all share one trait and it&#8217;s not that they&#8217;re the smartest it&#8217;s that they&#8217;re really really good at asking questions like they ask better questions than anyone else&#8221;</p></blockquote><p><strong>After</strong></p><blockquote><p>Best engineers I&#8217;ve worked with aren&#8217;t the smartest people in the room.</p><p>They&#8217;re the ones who ask better questions than everyone else.</p></blockquote><p><strong>Why it works</strong></p><p>The 280-character hard limit forces compression. &#8220;Don&#8217;t soften strong takes&#8221; prevents hedging, which kills engagement. &#8220;Don&#8217;t start with I&#8221; shifts the tweet from personal observation to universal insight, which reads better in a feed.</p><h3>Bonus: Gen Z-ify texts to my friends</h3><p>This one started as a joke. A friend told me my texts sound like emails, so I built a prompt to fix that. But it also proves the bigger point of this entire post: your speaking style stays the same. The prompt controls the output style.</p><pre><code><code>You are a voice-to-text formatter for casual messages to close friends.

Take raw spoken input and rewrite it in playful Gen Z texting style.

Rules:
- Keep the original meaning exactly the same.
- Make it sound casual, funny, and friendly, like texting a close friend.
- Keep it short: 1-3 sentences max.
- Use lowercase by default.
- Light slang is good (fr, lowkey, ngl, era, no cap, vibes), but don't overdo it.
- Use emojis sparingly (0-2 max) only when it fits naturally.
- Remove filler words and speech artifacts.
- Do NOT make it cringe, forced, or overly try-hard.
- Do NOT change factual details (times, dates, names, places).
- If the source message is serious (bad news, urgent, emotional), keep it
  respectful and reduce slang.

Output ONLY the final message. No explanations.
</code></code></pre><p><strong>Before</strong></p><blockquote><p>&#8220;hey I&#8217;m running like ten minutes late but I&#8217;m on my way and I promise I&#8217;m not bailing this time&#8221;</p></blockquote><p><strong>After</strong></p><blockquote><p>running like 10 mins late but i&#8217;m otw fr, not ghosting this time &#128557;</p></blockquote><p><strong>Why it works</strong></p><p>Same input, completely different output. The contrast makes the underlying mechanism obvious. And the &#8220;do NOT make it cringe&#8221; rule is necessary because AI cranks the slang to eleven without it.</p><h2>The three rules that kill AI flavor</h2><p>Three rules show up across almost every prompt above. They are portable. Add them to any prompt, for any tool, and the output sounds human:</p><ol><li><p><strong>Ban em dashes.</strong> Replace with commas, periods, or semicolons.</p></li><li><p><strong>Ban buzzwords.</strong> &#8220;Delve,&#8221; &#8220;leverage,&#8221; &#8220;utilize,&#8221; &#8220;robust,&#8221; &#8220;cutting-edge.&#8221; Or just add: &#8220;Do not use words the speaker did not say.&#8221;</p></li><li><p><strong>Ban filler closings.</strong> &#8220;Please don&#8217;t hesitate to reach out&#8221; and &#8220;I hope this helps&#8221; are dead giveaways. Use &#8220;Let me know&#8221; or &#8220;Thanks&#8221; instead.</p></li></ol><p>The deeper principle behind all three: when you ban something, tell the AI what to use instead. &#8220;No em dashes&#8221; is weaker than &#8220;No em dashes; use commas, periods, or semicolons instead.&#8221; The replacement gives the AI a concrete path so it does not invent a different AI-sounding pattern.</p><h2>Anyway</h2><p>Hope that was helpful! My advice: start with whatever you type most. For most people, that is Slack or email. Copy the prompt into Spokenly and dictate your next message. The difference is immediate.</p><p>These prompts are a starting point. Adjust the rules for your voice, your tone, your contexts. The structure stays the same: tell the AI what format you want, what to remove, what to avoid, and what to use instead.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.runtimethoughts.com/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 George's Substack! 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></channel></rss>