<?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[Sudo Synthesis]]></title><description><![CDATA[Sudo Synthesis by Daniel Kirschner distills cutting-edge AI breakthroughs into crystal-clear code recipes and explorations. No jargon, just pure insights for developers and tinkerers of every skill level.]]></description><link>https://www.sudosynthesis.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!RkZo!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d1745c-9b74-4a8f-9e27-32aef12f4795_1169x1169.png</url><title>Sudo Synthesis</title><link>https://www.sudosynthesis.dev</link></image><generator>Substack</generator><lastBuildDate>Sun, 12 Apr 2026 20:32:56 GMT</lastBuildDate><atom:link href="https://www.sudosynthesis.dev/feed" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><webMaster><![CDATA[hello@sudosynthesis.com]]></webMaster><itunes:owner><itunes:email><![CDATA[hello@sudosynthesis.com]]></itunes:email><itunes:name><![CDATA[Daniel Kirschner]]></itunes:name></itunes:owner><itunes:author><![CDATA[Daniel Kirschner]]></itunes:author><googleplay:owner><![CDATA[hello@sudosynthesis.com]]></googleplay:owner><googleplay:email><![CDATA[hello@sudosynthesis.com]]></googleplay:email><googleplay:author><![CDATA[Daniel Kirschner]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Proof of Life]]></title><description><![CDATA[On writing, AI, and what gets lost when everything sounds perfect.]]></description><link>https://www.sudosynthesis.dev/p/proof-of-life</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/proof-of-life</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Tue, 14 Oct 2025 14:15:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O3dF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O3dF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O3dF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!O3dF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!O3dF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!O3dF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O3dF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2532691,&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.sudosynthesis.dev/i/176093397?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O3dF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!O3dF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!O3dF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!O3dF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89282e95-0077-4092-9094-373fb0beb56e_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Polish too much, and you lose what matters.</figcaption></figure></div><p>For writers, tools like ChatGPT hold a special place in hell. </p><p>They&#8217;re just so damn effective. They make your writing glossy, synthetic, shiny. Impossible not to use.</p><p>But then you read someone else&#8217;s post, another LinkedIn update, a new Substack piece, and you can&#8217;t tell them apart.</p><p>They all use the same perfectly impactful prose and workshopped line lengths.</p><p>It&#8217;s so&#8230; over-produced. Frictionless. Perfectly optimized for a target audience of nobody. </p><p>And thats the irony: for something called Generative AI, it should help us generate something living! But somehow everything it touches takes on a plasticky sheen. Every sentence reads like an old-timey <a href="https://www.youtube.com/watch?v=BLT-SQUBRDw">Transatlantic Hollywood narrator</a>: polished, pleasant, and perfectly neutral. The kind of tone that erases the person behind it.</p><p>We tell ourselves we use these tools to write better, but really we want to sound more likable, more marketable, more perfect. The problem is that none of that makes us interesting. Chasing perfection leaves us with nothing.</p><blockquote><p>I&#8217;d like to say I caught myself before falling into that trap. I didn&#8217;t.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/proof-of-life?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/proof-of-life?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><p>In the back of my head I&#8217;ve always thought that there was a &#8220;better&#8221; version of my writing: a version with smoother prose and bigger, cleverer words.. But after working with ChatGPT I realize now that a lot of what I find interesting about my writing are these individualistic quirks. I tell too many stupid pop-culture jokes to be a serious technical publication. I mix philosophy and personal productivity with random Python code that no one will ever run. (If you ever meet me in real life I promise I do the same thing.)</p><p>When I hand my drafts to ChatGPT, it does what it does best: sands every edge down to a Substack appropriate sheen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VjJO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VjJO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 424w, https://substackcdn.com/image/fetch/$s_!VjJO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 848w, https://substackcdn.com/image/fetch/$s_!VjJO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 1272w, https://substackcdn.com/image/fetch/$s_!VjJO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VjJO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png" width="518" height="243" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:243,&quot;width&quot;:518,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31968,&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.sudosynthesis.dev/i/176093397?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.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_!VjJO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 424w, https://substackcdn.com/image/fetch/$s_!VjJO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 848w, https://substackcdn.com/image/fetch/$s_!VjJO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 1272w, https://substackcdn.com/image/fetch/$s_!VjJO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb170c05c-d6d0-4e78-a1d1-0ddd316b4c38_518x243.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An initial first draft of this post</figcaption></figure></div><p>Only later did I realize the rough edges, the tangents, the jokes, the weird tone shifts, were me. The thing I was sanding down was my own fingerprint.</p><p>And this isn&#8217;t just a writing problem. It&#8217;s a human problem. Every time we smooth over our rough edges, in writing, in work, in interviews, we lose the very thing that makes us authentic. It&#8217;s the same impulse that makes us rewrite a Slack message five times so it sounds &#8220;friendly but professional.&#8221; We think we&#8217;re improving, but really we&#8217;re erasing the parts that allow people to relate with us.</p><p>The polish makes us easier to work with.</p><div><hr></div><p>Nowhere did I feel this tension more than when prepping for behavioral interviews. We can argue about details, but at least the typical LeetCode and System Design interviews have a right or wrong answer, right? You shouldn&#8217;t write backend servers in JavaScript, no matter what flavor you use. There. I said it.</p><p>But behavioral interviews test a different, interpersonal skill set. They test how well you understand the constraints that you&#8217;re actually working under. The nitty gritty of the team itself, not just the work. Sure, everybody has a story about that one porcupine product manager, or the five alarm fire only we knew how to defuse. But in a stressful environment like an interview, it can be difficult to get all of the details out. Given the big help that ChatGPT gave me when prepping for LeetCode and System Design interviews, I was expecting similar results. And, just like the Genie from Aladdin, it delivered. Just not in the way I expected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hcpy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hcpy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 424w, https://substackcdn.com/image/fetch/$s_!hcpy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 848w, https://substackcdn.com/image/fetch/$s_!hcpy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 1272w, https://substackcdn.com/image/fetch/$s_!hcpy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hcpy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp" width="433" height="530.204081632653" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be069f21-9917-4179-931f-a5eab69c08dc_245x300.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:245,&quot;resizeWidth&quot;:433,&quot;bytes&quot;:142644,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.sudosynthesis.dev/i/176093397?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hcpy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 424w, https://substackcdn.com/image/fetch/$s_!hcpy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 848w, https://substackcdn.com/image/fetch/$s_!hcpy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 1272w, https://substackcdn.com/image/fetch/$s_!hcpy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe069f21-9917-4179-931f-a5eab69c08dc_245x300.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One by one, I shotgunned personal stories from an earlier dev team into ChatGPT. All the late night on-call issues, the heated discussions with other devs, the little wins that made me proud. (And would you believe that I can talk for a long time about software?) Then I asked it to help me reformat everything into the STAR method for storytelling in these interviews.</p><p>What came back for one of those stories was&#8230; perfect.</p><p>Four neat lines that could have described any software developer.</p><p>Two months of my life, the early morning meetings, the late night debugging sessions, the weekend migrations, all compressed into four short lines of text. It was the perfect behavioral answer: structured, safe, and completely lifeless.</p><p>All that passion and joy and stress and emotion had been polished until the grain vanished. ChatGPT left behind the structure of what happened but removed the why and how it felt. What remained felt more like sand-boarding over dunes than digging through archaeological ruins.</p><p>It was unsettling, not because ChatGPT had done anything wrong, but because it had done everything right. Like the Genie from Aladdin, it gave me exactly what I asked for: a perfect, structured version of my story. And that&#8217;s what unsettled me most, because it hadn&#8217;t misunderstood me; it had mirrored me. The AI was only doing what I already do: sanding down the tangents, the awkward moments, the messy truths that make the story real. We all do this. We all polish our stories until they shine, even if that means rubbing away the parts that prove we were really there.</p><p>The sanitized story doesn&#8217;t leave room for doubt in the original design, or for the help you got from another engineer at the last moment, the parts of the story that made it worth telling.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p>The same tool that polished my words too smooth also showed me what was hiding underneath the shine.</p><p>AI can help you write a better answer. But it can&#8217;t help you earn it.</p><p>Because the truth is, the moments that shaped you &#8212; the conflicts, the tension, the times you got it wrong &#8212; that&#8217;s the part that makes your story unique. The main character of the last blockbuster doesn&#8217;t become interesting because he beats the bad guy; he becomes interesting because he bleeds. The damage makes the difficulty meaningful.</p><p>ChatGPT can find the themes and polish the phrasing, but it can&#8217;t remember the hesitation before you admit something hard, or the weight in your stomach when the pager goes off. Those moments live in you, not in the text.</p><p>The older I get, the more I realize interviews aren&#8217;t about being impressive. Everyone&#8217;s built something hard, or worked on a team that did. What matters isn&#8217;t how polished the story sounds. It&#8217;s whether you can still recognize yourself in it.</p><p>Funny enough, it was ChatGPT, the thing that made my stories too smooth, that reminded me of that. It&#8217;s easy to think polish is progress, but sometimes the scuffs and scratches are the proof of life. The rough edges are the parts that remind you: you were there.</p><p>You earn those rough edges the way a craftsman earns scars: proof that you&#8217;ve shaped something real with your own hands.</p>]]></content:encoded></item><item><title><![CDATA[Boxes, Arrows, and Ambiguity]]></title><description><![CDATA[Inside the quiet panic of system design interviews, and how to make sense of it.]]></description><link>https://www.sudosynthesis.dev/p/boxes-arrows-and-ambiguity</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/boxes-arrows-and-ambiguity</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Fri, 10 Oct 2025 23:00:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Nt-w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nt-w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nt-w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Nt-w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Nt-w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Nt-w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nt-w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1414039,&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.sudosynthesis.dev/i/175829456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nt-w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Nt-w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Nt-w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Nt-w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc161b764-63c4-4738-a580-f072f543ffcd_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">my whiteboard designs flailing into dust</figcaption></figure></div><p>You&#8217;ve redrawn the same shaky boxes four times. Each arrow gets labeled with even more precise naming. Anything to fill the silence.</p><p>On the other side of the Zoom call, your interviewer hasn&#8217;t moved his mustache in twenty minutes. The only thing he&#8217;s done is paste four lines of text describing the system you&#8217;re supposed to design.</p><p>You keep glancing for a cue, a nod, a raised eyebrow, a facial twitch of approval, but there&#8217;s nothing.</p><p>So you start talking faster. Buzzwords fire off like flare guns: redis cache, load balancer, randomly distribute your keyspace by&#8230; The silence swallows each thought whole and somehow grows larger.</p><p>What do you focus on next?</p><p>I used to fight the silence by erasing and redrawing boxes, as if that small act of control could make up for all the verbal flailing. System design interviews are open ended by nature. There is no clear goal or endpoint. You might talk about database sharding, session load balancing, or Redis partitioning. Then the meta questions begin. Why Redis? Why a read cache at all? Why even a read endpoint? Do customers really need this data that badly?</p><p>These days, I understand more what these interviews look for because it is the same skill you use every day as an engineer: learning how to move forward when things are unclear.</p><p>How do you know you&#8217;re on the right track when the world refuses to tell you?</p><p>Every system design interview begins in that vacuum. There is no feedback, no validation, and no guardrails. Somehow, you still have to make progress.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/boxes-arrows-and-ambiguity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/boxes-arrows-and-ambiguity?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2>System Design is just Engineering</h2><p>Turns out I actually like System Design interviews a lot more than LeetCode once I figured out a couple of things.</p><h3>Real work is ambiguous:</h3><p>Here&#8217;s a question I got all the time at my last job: &#8216;<em>Could we scale that Kafka topic 10x tomorrow?</em>&#8217;</p><p>It is an ambiguous question, one I had no idea how to answer at first. But if I step back, I can list all the things that should make me nervous.</p><ul><li><p>Is this 10x my peak volume? or steady state?</p></li><li><p>Is this one time event data load, or the new baseline?</p></li><li><p>Is the data evenly distributed, or could there be hot spots?</p></li><li><p>Does quick math show I have capacity in my fleet to scale this hard?</p></li></ul><p>In the end, those answers decide whether the system holds or collapses. It takes experience to know what should worry you, and even more to know how to fix it. But most of all, it takes curiosity and the instinct to stop and ask the right questions.</p><h3>Feedback is delayed:</h3><p>How do you know your last project was going to work before it launched? You wrote the requirements, shipped the code, deployed the artifact. Were you confident it would hold up? Why?</p><p>Software is one of the cruelest worlds to work in. The freedom is boundless, but boundless freedom is easy to get lost in. Every choice is a tradeoff, some subtle and some sneaky, and you only learn to spot them through experience. It is hard to tell the difference between <em>made the right call</em> and <em>made something that worked for now.</em></p><p>Code is easy, right? Write some tests, get the green check, move on. But software is bigger than a green checkmark. It is your job to build the feedback loop that tells you whether the whole thing works, not just the parts.</p><p>The silence in a system design interview is not a trap. It is a mirror. It reflects what engineering often feels like: no dashboards, no post-mortems, no logs. Just uncertainty. The best engineers learn to build their own feedback loops and trust them.</p><div><hr></div><h2>Build your feedback loop:</h2><p><strong>A feedback loop is how you stay confident you&#8217;re building the right thing.</strong> It should be flexible enough to adapt, but rigid enough to keep you moving.</p><p>One of my favorite feedback loops for system design problems is the FNCAHA framework. I&#8217;m sure the folks over at <a href="https://www.hellointerview.com/">HelloInterview</a>, who I borrowed (cough: stole) this from, have a catchier name for it. I use it in every interview because it gives me six trail markers that guide me toward a working design. They don&#8217;t give you the answer, but they help you find the right questions to ask. Even dim trail markers keep you calm and moving forward.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JT2j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JT2j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 424w, https://substackcdn.com/image/fetch/$s_!JT2j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 848w, https://substackcdn.com/image/fetch/$s_!JT2j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 1272w, https://substackcdn.com/image/fetch/$s_!JT2j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JT2j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png" width="1326" height="1406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1406,&quot;width&quot;:1326,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:284523,&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.sudosynthesis.dev/i/175829456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.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_!JT2j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 424w, https://substackcdn.com/image/fetch/$s_!JT2j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 848w, https://substackcdn.com/image/fetch/$s_!JT2j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 1272w, https://substackcdn.com/image/fetch/$s_!JT2j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20d44e4-71e2-4956-897a-db61515e5b17_1326x1406.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s a design I built for a NewsFeed service like Facebook. The first section shows the first four parts of the FNCAHA system. Each part builds on the one before it. Together, they form your contract with the interviewer. If it&#8217;s on this list, it goes into the system. If it isn&#8217;t, or if it&#8217;s explicitly marked &#8220;below the line,&#8221; we leave it out. No boxes, no data specs, no wasted time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zN0c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zN0c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png 424w, https://substackcdn.com/image/fetch/$s_!zN0c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png 848w, https://substackcdn.com/image/fetch/$s_!zN0c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png 1272w, https://substackcdn.com/image/fetch/$s_!zN0c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zN0c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png" width="1112" height="1394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1394,&quot;width&quot;:1112,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:155083,&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.sudosynthesis.dev/i/175829456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.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_!zN0c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png 424w, https://substackcdn.com/image/fetch/$s_!zN0c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png 848w, https://substackcdn.com/image/fetch/$s_!zN0c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.png 1272w, https://substackcdn.com/image/fetch/$s_!zN0c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3e186f4-a63c-4ad9-a2d0-f0fe06a27ad0_1112x1394.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>See how the functional requirements and APIs translate directly into the services and systems I built. One for one. Like magic. The design works because it matches exactly what we agreed to build earlier.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!caij!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!caij!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 424w, https://substackcdn.com/image/fetch/$s_!caij!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 848w, https://substackcdn.com/image/fetch/$s_!caij!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!caij!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!caij!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png" width="1456" height="691" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:691,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:570849,&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.sudosynthesis.dev/i/175829456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.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_!caij!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 424w, https://substackcdn.com/image/fetch/$s_!caij!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 848w, https://substackcdn.com/image/fetch/$s_!caij!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!caij!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8be0197d-a6f9-4479-9398-6271e242af36_2452x1164.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now let&#8217;s revisit our non-functional requirements and look for a few wrinkles to smooth out.</p><h3>A note about Wrinkles</h3><p>A wrinkle is the thing that makes a problem hard or interesting.</p><p>Imagine you run a small online forum for a niche community that suddenly goes viral. Unfortunately this has also brought a lot of spam and invalid posts. Do you:</p><ul><li><p>allow anyone to post anything they like, and remove bad content later</p></li></ul><ul><li><p>put every new post into a moderator queue and manually approve them before publishing?</p></li></ul><p>You can argue either way, but you need to choose and explain why.</p><p>For the Facebook design above, one of the non-functional requirements was that the system would take heavy read traffic compared to write traffic. The design as it stands cannot handle that load. Let&#8217;s look at why.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3EVn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3EVn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png 424w, https://substackcdn.com/image/fetch/$s_!3EVn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png 848w, https://substackcdn.com/image/fetch/$s_!3EVn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png 1272w, https://substackcdn.com/image/fetch/$s_!3EVn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3EVn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png" width="1456" height="867" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3743f11-f857-424e-8891-9db05db23586_1964x1170.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:491134,&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.sudosynthesis.dev/i/175829456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.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_!3EVn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png 424w, https://substackcdn.com/image/fetch/$s_!3EVn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png 848w, https://substackcdn.com/image/fetch/$s_!3EVn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.png 1272w, https://substackcdn.com/image/fetch/$s_!3EVn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3743f11-f857-424e-8891-9db05db23586_1964x1170.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>Oops. My caching strategy doesn&#8217;t actually work the way I thought. Time to rethink it. (Spoiler: the fix is pre-computation.)</p><p>This caching issue wasn&#8217;t something the interviewer planned to discuss, but it&#8217;s a real-world problem that would surface as the system scales. The only reason we caught it was because the our guide posts pointed us back to the trail. Are we still solving the problem we set out to solve?</p><p>That is the real signal. Not perfect boxes, but a process that keeps thinking inside the silence.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>Speed up your feedback loop</h2><p>Like most things I talk about these days, the answer is simple: use more AI. Take a screenshot of your design, drop it into ChatGPT, and ask for feedback at the level you&#8217;re aiming for.</p><ul><li><p>Mid-level engineers can get critiques on service boundaries or database choices.</p></li><li><p>Seniors can stress-test scaling assumptions or schema tradeoffs.</p></li><li><p>Staff-level folks can get pressed on business metrics, IAM policies, and all the gritty details that usually show up in production reviews.</p></li></ul><p>It&#8217;s like having a virtual staff engineer who&#8217;s patient, fast, and endlessly curious.</p><p>Here are two ways I&#8217;ve found it most useful.</p><h3>Get feedback on your design</h3><p>Explain why you made a choice and what constraints you were working under. The model will surface missed requirements, highlight weak assumptions, and suggest alternatives you might not have considered. It is not just &#8220;Is this right?&#8221; or &#8220;Would this work?&#8221; It is a way to pressure test your design across multiple scenarios before the interviewer ever asks.</p><p>After showing chatGPT an early version of my high-level design, here is the top-line response it gave me:</p><blockquote><p>At small scale, this pull-based feed design is simple and correct, but I&#8217;d evolve it to a fan-out-on-write model backed by a cache and async queue to handle high read volume and celebrity posts efficiently.</p></blockquote><p>That insight came directly from thinking through the non-functional requirements and how they would impact the system.</p><h3>Explore tradeoffs in real time</h3><p>Ever wonder why you chose MySQL instead of DynamoDB? Not just &#8220;because it is relational,&#8221; but the real use cases where one fits better than the other. Or when Redis might actually make more sense.</p><p>Before, the only way to get good answers was to sift through blog posts and half-relevant docs until you stumbled on a decent comparison. Now you can just ask the model.</p><ul><li><p>&#8220;What kind of data would make DynamoDB a better fit?&#8221;</p></li><li><p>&#8220;How does geo-hashing actually work under the hood?&#8221;</p></li><li><p>&#8220;What would have to change for my choice to also change?&#8221;</p></li></ul><h3>Faster loops</h3><p>You get clear, contextual explanations at exactly the level you need. For me, that has been transformative. I am no longer guessing which keywords to Google or waiting for a senior engineer to have time. The tight cycle between <strong>question, feedback, </strong>and<strong> insight</strong> scales the practice far beyond a single interview.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/boxes-arrows-and-ambiguity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Sudo Synthesis! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/boxes-arrows-and-ambiguity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/boxes-arrows-and-ambiguity?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><p>There aren&#8217;t many silences in my interviews anymore. Partly because I&#8217;ve practiced sounding human again: talking about the weather, pretending latency is just normal small talk. But mostly because the FNCAHA framework gives me something to hold onto. Clear guideposts that help me move forward when no one is telling me what&#8217;s right.</p><p>That same structure makes AI tools even more powerful. I can drop a design into ChatGPT, ask for feedback at the level I care about, and get reflection in seconds instead of waiting days for a review. It is all about shrinking the distance between an idea and understanding.</p><p>The best engineers I have worked with share the same instinct: shorten the loop, ask questions sooner, surface tradeoffs earlier, and learn faster.</p><p>AI just makes that instinct visible. It is a mirror that rewards curiosity instead of perfection.</p>]]></content:encoded></item><item><title><![CDATA[LeetCode vs. Reality: Why Coding Interviews Are Stuck in 2010]]></title><description><![CDATA[AI has rewritten how engineers work, but somehow, not how we get hired. Here&#8217;s why the old rituals persist, and how to prepare for the new ones.]]></description><link>https://www.sudosynthesis.dev/p/leetcode-vs-reality-why-coding-interviews</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/leetcode-vs-reality-why-coding-interviews</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Wed, 08 Oct 2025 14:31:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Bh3q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bh3q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bh3q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Bh3q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Bh3q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Bh3q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bh3q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1632111,&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.sudosynthesis.dev/i/175583009?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bh3q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Bh3q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Bh3q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Bh3q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2758cb-8df2-402d-8bf5-2627c7fa2826_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;ve been around long enough to see a few full cycles of how engineers get interviewed.</p><p>We had the in-person whiteboard rounds, where matching semicolon indentations with squeaky dry-erase markers felt like half the battle. Then came the &#8220;modern practical&#8221; phase where everybody got to interview on a loaner laptop running Eclipse. The first time this happened to me, I remember thinking, &#8220;Wait, I have to write real tests now!&#8221; Eventually everything moved online with HackerRank, CoderPad, and take-home assignments in GitHub.</p><p>But now we&#8217;re in the age of AI, where the IDE itself can vibe its way through an application, and somehow interviews haven&#8217;t changed at all.</p><blockquote><p>We&#8217;re piloting drones through the Mars atmosphere, and being interviewed for parallel parking skills.</p></blockquote><p>That&#8217;s what fascinates me: t<em>he work is clearly evolving, but the rituals around hiring haven&#8217;t.</em></p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/leetcode-vs-reality-why-coding-interviews?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Sudo Synthesis! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/leetcode-vs-reality-why-coding-interviews?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/leetcode-vs-reality-why-coding-interviews?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2>Why LeetCode anyway?</h2><p>LeetCode-style interviews are one of the most ubiquitous technical screens out there. Which, on its face, is kind of silly. I&#8217;ve been in this industry for fifteen years. You don&#8217;t think I can code? I once rewrote a legacy monolith myself. In the snow. Twice.</p><p>Still, let&#8217;s be fair for a second. Think about the constraints companies face when designing interviews. The problems they use have to:</p><ul><li><p>Engage weaker candidates without losing them</p></li><li><p>Challenge stronger candidates enough to see them think</p></li><li><p>Fit everything into thirty minutes with time for questions afterwards</p></li><li><p>Require coding skills</p></li><li><p>Be judged consistently across teams and levels</p></li></ul><p>If we&#8217;re honest, these interviews don&#8217;t exist because they&#8217;re realistic; they exist because they&#8217;re <em>scalable.</em> When you&#8217;re trying to evaluate thousands of engineers across dozens of teams, you need something consistent and gradable. </p><p>Sure, you can make a great chicken sandwich. But McDonald&#8217;s can make ten thousand identical ones in a second split across six continents. Thats what hiring processes are emulating: repeatability over realism.</p><p>The problem is that what they measure no longer maps to what the job actually is.</p><p>They reward engineers who can stay calm under artificial pressure, recall syntax from memory, and pattern-match problems they&#8217;ve seen before. But the skills that matter in today&#8217;s workplace: reasoning about systems, communicating trade-offs, and guiding AI tools, don&#8217;t show up in a timed puzzle.</p><p>Software has already shifted away from raw code toward systems, trade-offs, and collaboration. Yet we&#8217;re still testing candidates as if success depends on how fast they can remember syntax.</p><p>The problem isn&#8217;t that LeetCode interviews are unfair. It&#8217;s that they&#8217;re measuring a version of engineering that doesn&#8217;t exist anymore.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fRhK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fRhK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png 424w, https://substackcdn.com/image/fetch/$s_!fRhK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png 848w, https://substackcdn.com/image/fetch/$s_!fRhK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png 1272w, https://substackcdn.com/image/fetch/$s_!fRhK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fRhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png" width="1282" height="902" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:902,&quot;width&quot;:1282,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201284,&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.sudosynthesis.dev/i/175583009?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.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_!fRhK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png 424w, https://substackcdn.com/image/fetch/$s_!fRhK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png 848w, https://substackcdn.com/image/fetch/$s_!fRhK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.png 1272w, https://substackcdn.com/image/fetch/$s_!fRhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1d2ec-154e-4113-bb81-ee67f1601ac4_1282x902.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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/leetcode-vs-reality-why-coding-interviews?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/leetcode-vs-reality-why-coding-interviews?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>Playing the old game with new tools</h2><p>If the game&#8217;s outdated, fine. We can adapt. Here&#8217;s how I turned AI from a distraction into my best weapon.</p><h3>Step 1: Have a specific plan</h3><p>LeetCode, like most of software, is more about pattern recognition than anyone likes to admit.</p><p>The fastest way to get better is to start with a naive solution, figure out where it&#8217;s slow, and then match the right data structure or algorithmic trick to make it faster. Need to query a key quickly? Use a Map. Need to find unique values? That&#8217;s a Set.</p><p>And yes, the only way to get better at this is to practice. (<em>What did you think I was going to say?</em>) </p><p>Start with LeetCode&#8217;s Top 150 to get a good baseline. For big tech companies the general rule is that you should be able to handle any Medium problem, and some Hard problems. The smaller the company usually the lower the bar on this.</p><h3>Step 2: Use AI to move faster</h3><p>One thing I always forget between interview seasons is just how much <strong>repetitive setup</strong> these problems require.</p><p>I use my own IDE, so my workflow looks like this:</p><ul><li><p>Create a new solution file</p></li><li><p>Set up a template class with the right args</p></li><li><p>Write a main method to execute</p></li><li><p>Add a few sample tests and just enough prints to verify they run</p></li></ul><p>Only then do we reach the interesting part: actually solving the problem.</p><p>Those first four steps are a lot of clicking and typing for almost no learning value. Thinking up test cases is useful; but writing the for loops to run them isn&#8217;t. It&#8217;s busywork. It doesn&#8217;t teach you anything new.</p><p>So let the model handle it! </p><p>Paste the problem context, ask it to generate the file, and give it a short, consistent recipe for test cases. Why are we still typing boilerplate in 2025?</p><blockquote><p>The skill you want to practice is <em>how you think through a problem</em>. The rest is a waste.</p></blockquote><p>I even wrote a small <a href="https://github.com/dpkirschner/leetcode-prep-mcp">MCP server that hooks into LeetCode&#8217;s public GraphQL API</a> to automate this. My Claude Code agent connects through that server, finds problems by number or title, and generates <a href="https://gist.github.com/dpkirschner/0b9b5624582d17939d3e7c42c559cbd4">ready-to-run files</a> in whatever language I&#8217;m practicing. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p3O1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p3O1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 424w, https://substackcdn.com/image/fetch/$s_!p3O1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 848w, https://substackcdn.com/image/fetch/$s_!p3O1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 1272w, https://substackcdn.com/image/fetch/$s_!p3O1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p3O1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png" width="970" height="648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:648,&quot;width&quot;:970,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102508,&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.sudosynthesis.dev/i/175583009?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.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_!p3O1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 424w, https://substackcdn.com/image/fetch/$s_!p3O1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 848w, https://substackcdn.com/image/fetch/$s_!p3O1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 1272w, https://substackcdn.com/image/fetch/$s_!p3O1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3ed3586-7023-43e3-ab0d-9126aca06d78_970x648.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude adds a python problem to my workspace with tests pre-loaded</figcaption></figure></div><p>It&#8217;s simple, but it saves a surprising amount of time and keeps me focused on the thinking, not the typing.</p><h3>Step 3: AI as tutor, not answer key</h3><p>When I get stuck, it&#8217;s tempting to peek at the solution for that quick flash of insight.</p><p>But that&#8217;s the fastest way to short-circuit learning. Resist the spoiler.</p><p>Instead, treat the model like a tutor. I explain in plain English how I&#8217;m approaching the problem, where I think it&#8217;s breaking down, and then ask it to nudge me using the Socratic method.</p><blockquote><p>Pro-tip: always add the line <strong>no code samples</strong> <strong>unless asked</strong> or the model will be extra helpful and finish the problem for you.</p></blockquote><p>This is the number one technique that has improved my ability to do these problems. It&#8217;s easy to lull yourself into thinking you understand the solution when you&#8217;ve already seen the working code. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IfDM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IfDM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 424w, https://substackcdn.com/image/fetch/$s_!IfDM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 848w, https://substackcdn.com/image/fetch/$s_!IfDM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 1272w, https://substackcdn.com/image/fetch/$s_!IfDM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IfDM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png" width="1306" height="543" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:543,&quot;width&quot;:1306,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103665,&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.sudosynthesis.dev/i/175583009?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.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_!IfDM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 424w, https://substackcdn.com/image/fetch/$s_!IfDM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 848w, https://substackcdn.com/image/fetch/$s_!IfDM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 1272w, https://substackcdn.com/image/fetch/$s_!IfDM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9bbb83f-a873-47ba-ba67-32b8601493cc_1306x543.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude teaches me what &#8220;level-by-level&#8221; means in the context of traversals.</figcaption></figure></div><p>It&#8217;s much harder to fool yourself when the model is asking you specific questions about your assumptions.</p><p>Guided discovery sticks better than reading a finished solution. Senior devs can prompt for &#8220;vague hints&#8221;; juniors might need more structure. Either way, store your preferences so the model remembers your learning style across sessions.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Don&#8217;t sweat the syntax</h2><p>AI is changing the abstractions we work in as engineers.<br>Yesterday, we focused on for-loops and OOP singleton patterns.<br>Tomorrow, it&#8217;ll be natural language and automated test results.</p><p>If I could tell my younger self one thing during those nerve-wracking whiteboard interviews, it&#8217;d be this: <em>stop sweating the syntax.</em></p><p>We&#8217;ve entered a world where fluency means understanding abstractions, debugging with the right tools, and guiding models to produce correct code for our exact use case.</p><p>Yet LeetCode interviews still reward the opposite: syntax recall across multiple languages and the ability to type fast under pressure.</p><p>I don&#8217;t expect interviews to change overnight.</p><p>But by adapting how we prepare, we can use the same tools transforming engineering itself to challenge how we prove we&#8217;re &#8220;qualified.&#8221;</p><p>Someday, interviews might finally mirror how we actually work: messy, collaborative, context-driven, and yes, assisted by AI.</p><p>Until then, we can at least prepare like it&#8217;s 2025, not 2010.</p><div><hr></div><p>Next post, I&#8217;ll dive into why System Design interviews are quickly becoming the most relevant part of the process &#8212; and why AI makes them more fun (and useful) than ever.</p><blockquote><p>Boxes and arrows will probably outlive us all. But the coding rounds? They&#8217;re starting to feel like a relic.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[Trust Comes from the Sherpa]]></title><description><![CDATA[From Code Monkey to Context Sherpa: how AI is reshaping the role of the software engineer from solo climber to group tour guide.]]></description><link>https://www.sudosynthesis.dev/p/trust-comes-from-the-sherpa</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/trust-comes-from-the-sherpa</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Fri, 27 Jun 2025 15:08:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lqg0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lqg0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lqg0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!lqg0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!lqg0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!lqg0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lqg0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2565084,&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.sudosynthesis.dev/i/166863005?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lqg0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!lqg0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!lqg0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!lqg0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F561151d6-37fd-4b2b-a4dd-ba9a896f036f_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Context Sherpa prepares another Cursor generated PR for deployment</figcaption></figure></div><p>Most days, I don&#8217;t feel like I write code anymore.<br>I guide something bigger up the mountain.</p><p>These models are powerful, no question. It can spin up scaffolds, refactor code, generate endpoints in seconds. But only if I chart the path.</p><p>My job? Feed it just enough context to take the next step. Anticipate what it's missing. Nudge it back on track when it drifts. When I&#8217;m on it, when I stay ahead of its blind spots, we race to the summit together. It&#8217;s like climbing with the world&#8217;s fastest intern: never tired, never blocked, occasionally full of nonsense.</p><p>But when I misjudge and provide it too much task context, not enough instruction, the wrong focus? The whole climb becomes a slog through mud. I burn an hour investigating a package dependency that should&#8217;ve never been added, missed in an avalanche of colorful git diffs.</p><p>I used to think of myself as a builder: the one shaping plans, pouring the foundation, laying down structure.</p><blockquote><p>Now I feel like the <strong>Context Sherpa</strong>. </p></blockquote><p>The one holding the ladder on the way up, belaying the rope on the way down. The one watching every snow drift and ice shelf, just to shepherd another group of overconfident tourists who think <em>black ice</em> is a cocktail at base camp.</p><p>And that shift? It&#8217;s subtle.<br>But it&#8217;s the beginning of something much bigger.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/trust-comes-from-the-sherpa?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/trust-comes-from-the-sherpa?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2>Trust Is Built On Specifics</h2><p>Code at tech companies never dies.</p><p>It decays. </p><p>Version by version. Patch by patch. Held together by duct tape, tribal knowledge, and that one person who remembers why a cron restarts the logging service every Thursday at 2am.<br><br>Sometimes that mess slows you down. Other times it&#8217;s the only reason you&#8217;re still shipping.</p><p>These new AI tools know how to scaffold a backend service, explain what GraphQL is, and write clean, generic OAuth flows. They&#8217;ve seen 10,000 Next.js blogs and a thousand Stripe integrations. What they haven&#8217;t seen is the handwritten CSS your CTO swears keeps load times fast.</p><p>Your codebase didn&#8217;t spring into being fully formed. It grew as a layering of context, constraints, and chaos; some of it intentional, some of it ancient, and all of it invisible to a model trained on vibes. You don&#8217;t need help &#8220;integrating Stripe&#8221;. You need help debugging why your checkout form fails, but only on Safari, when Chinese characters show up in the billing name, and the user clicked &#8220;back&#8221; twice.</p><p>(re focus this on what the role of a sherpa is here? the human needs to provide context into how everything fits together)</p><p>Productive software isn&#8217;t built on &#8220;best practices&#8221;. It&#8217;s built on specifics.</p><p>And when the model gets those specifics wrong? The Sherpa doesn&#8217;t get to shrug. They patch the commit, fix the broken code, re-deploy the services. Because AI tools don&#8217;t understand how your systems actually fit together. They don&#8217;t know which assumptions are safe to make and which ones can take prod down at 2am.</p><blockquote><p>The <strong>Context Sherpa</strong> exists because someone has to translate between <em>what the model knows</em> and <em>how your system actually works</em>.</p></blockquote><p>Someone has to know what the real goal is, and whether that sudden pop means a branch snapping on-shore or ice giving way. Not just to help the tools succeed, but to keep the whole team from going over the edge.</p><p>That&#8217;s the job now: not writing every line, but making sure every line still fits.</p><div><hr></div><h2>The Human Bottleneck</h2><p>This is where the trust gap lives &#8212; not just in the model&#8217;s misunderstanding, but the <strong>invisible scaffolding that assumes a human will always there to catch the fall</strong>.</p><p>Software wasn&#8217;t built for machines. It&#8217;s built for humans fluent in ambiguity. Who else but Mark could know why one feature is gated by a flag, and another is gated by a comment that just says: </p><blockquote><p>DO NOT REMOVE. ask mark.</p></blockquote><p>Our current code is written by humans, for other humans. The moment you pull the human out of the loop, or ask them to guide instead of write, the system starts to wobble.</p><p>Take documentation. If it exists at all, it was probably written by developers for developers. We speak fluent vibes. I&#8217;ve written run-books that say things like:</p><blockquote><p>SSH to prod cmh1, find a host from the kube cluster and tail the logs</p></blockquote><p>It looks like a clear set of instructions, and it is, but only if you already know:</p><ul><li><p>What &#8220;cmh1&#8221; is</p></li><li><p>Which kube cluster this service is hosted on</p></li><li><p>What logs to tail&#8230; and why</p></li></ul><p>That blend of concrete steps and unspoken assumptions is perfect for human developers. Terrible for coding agents to understand. Now imagine a set of docs that instead had:</p><ul><li><p>Precise, declarative instructions</p></li><li><p>CLI-first workflows</p></li><li><p>Structured, inspectable state</p></li></ul><p>That&#8217;s not just better documentation, thats a resource that lets your agentic tooling handle more mundane tasks.</p><p>That&#8217;s a handrail on the mountainside, the kind that lets the Sherpa breathe, look up, and plan the next move.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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">If you&#8217;re navigating how AI is changing the way we build, <strong>Sudo Synthesis</strong> is for you. Subscribe for sharp, hands-on insights about working with LLMs, building trust with tools, and staying one step ahead on the climb.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>Guiding the Climb</h2><p>I&#8217;ve worked with a lot of interns over the years. Some soared. Some flailed. And the difference was almost never talent &#8212; it was structure.</p><p>The ones who struggled usually weren&#8217;t lazy or incapable. They just didn&#8217;t have the right support. No scaffolding. No clarity. No one breaking the work into pieces they could act on. They were thrown into a sea of complexities and deadlines and expected to swim.</p><p>Working with today&#8217;s coding tools feels the same. They&#8217;re interns &#8212; fast, eager, and wildly inconsistent unless you give them structure.</p><p>And like any good mentor, I spend a lot my day to day clearing the trail for them:</p><ul><li><p>Stitching together missing context</p></li><li><p>Rephrasing task to get better results</p></li><li><p>Splitting work into clean, self-contained chunks</p></li><li><p>Catching hallucinations before they hit prod</p></li><li><p>Bridging assumptions the model never knew it was making</p></li></ul><p>I now act as a <strong>Context Sherpa</strong> &#8212; an engineer whose job isn&#8217;t to write the code, but to make the code possible. To synthesize chaos from every corner of the org: ancient tickets, Slack threads, vague product notes, broken Swagger docs. To shape that mess into something usable and feed it to the model at just the right moment.</p><blockquote><p>The best engineers don&#8217;t just &#8220;prompt better&#8221;, they orchestrate better.</p></blockquote><p>They know how to set the models up for success. When letting them run the tests is going to pinpoint an error, or waste a thousand tokens. They know when to retry a task, when to zoom out, or when to change tactics entirely. They move fast, not because they trust the model blindly, but because they&#8217;ve learned how to steer it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1S_Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1S_Z!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 424w, https://substackcdn.com/image/fetch/$s_!1S_Z!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 848w, https://substackcdn.com/image/fetch/$s_!1S_Z!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 1272w, https://substackcdn.com/image/fetch/$s_!1S_Z!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1S_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif" width="533" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:533,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6855940,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1S_Z!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 424w, https://substackcdn.com/image/fetch/$s_!1S_Z!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 848w, https://substackcdn.com/image/fetch/$s_!1S_Z!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 1272w, https://substackcdn.com/image/fetch/$s_!1S_Z!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833d7ccb-fbcc-4144-9f41-1ac03a3be6e1_533x300.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s easy to see that models write fantastic code. And projects like <a href="https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking">SequentialThinking</a>, <a href="https://context7.com/">Context7</a>, and MCP servers are giving agents real capabilities &#8212; memory, error handling, terminal access, planning logic.</p><p>But for everything else &#8212; the vague specs, the brittle edge cases, the undocumented behaviors?</p><p>There&#8217;s still a Sherpa on the trail.</p><p>A human engineer.</p><p>Guiding the model. Reading the weather. Choosing the path that doesn&#8217;t end in an avalanche.</p><div><hr></div><h2>From Collaboration to Succession</h2><p>Let&#8217;s rewind:</p><p>In <a href="https://sudosynthesis.substack.com/p/not-quite-software">Part 1</a>, I argued that LLMs aren&#8217;t valuable because they&#8217;re smart &#8212; they&#8217;re valuable because they <em>feel</em> trustworthy.</p><p>In <a href="https://sudosynthesis.substack.com/p/the-real-ux-behind-every-ai-tool">Part 2</a>, we explored how good tools build that trust through a slider &#8212; from assist to autopilot &#8212; letting users gradually hand off control.</p><p>Now, in Part 3, we&#8217;re seeing the deeper truth: The current development ecosystem wasn&#8217;t built for agents.  </p><blockquote><p>It was built for <em>you</em>.</p></blockquote><p>That&#8217;s the real shift underway.</p><p>Because the <strong>Context Sherpa</strong> isn&#8217;t just about climbing to the summit. Now they&#8217;re the critical infrastructure that keeps the project moving.</p><p>The one who knows where the trail gets narrow.<br>The one who keeps the rope slack, but safe.<br>The one who gets there early so someone else can make it to the top.</p><p>Working with LLMs is becoming about scouting terrain. Breaking down workstreams. Learning what the model understands and where it crumbles. Not solving every problem directly, but running one step ahead to clear them before</p><p>You&#8217;re not just the engineer anymore. You&#8217;re the reason the whole system works.</p><p>The more capable these tools become &#8212; the more they remember, plan, and act &#8212; the more they rely on the thing they still can&#8217;t hold: context.</p><p>And that&#8217;s where you come in. </p><p><strong>Trust doesn&#8217;t come from the model. Trust comes from the Sherpa.</strong></p>]]></content:encoded></item><item><title><![CDATA[The Real UX Behind Every AI Tool Isn’t Intelligence - It's Trust]]></title><description><![CDATA[From Assistance to Autopilot: Why AI Products Rise or Fall on Trust]]></description><link>https://www.sudosynthesis.dev/p/the-real-ux-behind-every-ai-tool</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/the-real-ux-behind-every-ai-tool</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Thu, 26 Jun 2025 15:05:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!16UT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!16UT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!16UT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!16UT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!16UT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!16UT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!16UT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5404727,&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.sudosynthesis.dev/i/166352282?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.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_!16UT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!16UT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!16UT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!16UT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa465f162-8ffa-4bdb-ba7e-2920d3fa33c0_2048x2048.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>When I was 14, I dragged my bike to the top of a curvy highway in Avon, wished myself luck, and full-sent it towards the bottom.</p><p>Four-lane roads in a town with money mean licorice-slick pavement: smooth as butter, irresistible, and absolutely not part of a balanced lifestyle. It&#8217;s 80 degrees. I&#8217;m in cutoffs, shirt tucked into my waistband, CD player strapped to my hip, blasting punk rock straight into my brain. No helmet. No hands.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I am invincible.</p><p>Every lean into a corner is effortless. Every sewer cap and honking car becomes a chance to express myself in motion. The wind slices through me like I&#8217;m barely real. I am <em>free</em>.</p><p>I close my eyes.</p><p>Just for a second.</p><p>Adrenaline. Euphoria. Then a wobble. Then pain.</p><p>I wasn&#8217;t smart at 14 (who is?). But in that moment, I trusted the bike. I thought we were synced up. One fluid motion machine. Closing my eyes felt like control. Like confidence. Like flow.</p><p>Then it hit a rock.</p><p>That&#8217;s the line every AI product is walking right now. It&#8217;s not about what the model <em>can</em> do at the best of times &#8212; it&#8217;s about what you trust it to do <em>without checking every move</em>.</p><blockquote><p>Will your users trust you enough to close their eyes?</p></blockquote><div><hr></div><h2>Designing for Trust</h2><p>There are two types of trust that are required for good software.</p><h4>Procedural Trust &#8212; "I know what it&#8217;s going to do.&#8221;</h4><p>This is what traditional software offers. Click the &#8220;equals&#8221; button on a calculator, get a number back. It&#8217;s stable, repeatable, testable. Run it in CI or on the moon and you&#8217;ll get the same result.</p><h4>Emotional Trust &#8212; "I like what it does. I feel like it gets me."</h4><p>This is when a product nails the use case. Streaming to friends in Discord? One click. Buying something on Amazon? One click. Even WinRAR gives you the free download button you&#8217;re really looking for. These tools feel like they just <strong>get it</strong> and they&#8217;re optimized to do that one thing perfectly.</p><h3>What do AI products offer? </h3><p>Now compare that to your average AI product built around LLMs.</p><ul><li><p>Insane recall, but also wild hallucinations</p><ul><li><p>(They&#8217;ll cite a real study from a journal that doesn&#8217;t exist.)</p></li></ul></li><li><p>Genius moments, but confident nonsense</p><ul><li><p>(They&#8217;ll write a sorting algorithm in assembler, then tell you 9.11 is bigger than 9.9.)</p></li></ul></li><li><p>Infinite patience, but goldfish memory</p><ul><li><p>(They&#8217;ll debug with you for hours, then forget your project even exists.)</p></li></ul></li></ul><p>LLM-powered products are biased toward <strong>emotional trust</strong>. They feel like they understand your problem. They surprise you. They dazzle in demos. They offer the sizzle trailer for your exact use case. And wow do they look cool.</p><p>But they fall short on <strong>procedural trust</strong>. No reliable memory. No consistency. No guarantees. These are areas the software community is working to improve&#8230;  but nothing that gives you the contract that traditional software does.</p><p>And that&#8217;s the problem.</p><blockquote><p><strong>Emotional trust</strong> gets people excited.<br><strong>Procedural trust</strong> gets them to rely on you.</p></blockquote><p>Strong AI products don&#8217;t ignore this. They flip it on its head and invoke the ancient ritual of &#8220;features, not bugs&#8221;. And when you design around that, you get something new: A product that adapts to the user&#8217;s trust, not the other way around.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/the-real-ux-behind-every-ai-tool?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/the-real-ux-behind-every-ai-tool?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h1>Autopilot or Assistance</h1><p>Great AI products understand a simple truth: trust is fragile.</p><p>A few impressive demos, and teams start reworking their workflows to lean on the tool more. One high-profile mistake, and everything snaps back to manual. Adoption doesn&#8217;t build in a straight line: it flinches.</p><p>That&#8217;s because the level of control we&#8217;re willing to hand over shifts constantly, from task to task, moment to moment. Self-driving cars nailed this dynamic a decade ago. You could take a ride in one back in 2013. You might have even trusted it in a well-lit parking lot with no traffic. But a rainy night, unprotected left turn, construction zone up ahead? Not a chance.</p><p>That&#8217;s the product challenge: trust isn&#8217;t binary. It lives on a slider &#8212; from <strong>assist</strong> to <strong>autopilot</strong> &#8212; and great products meet users wherever they are on it.</p><h4>Assistance &#8212; &#8220;Help me take this action.&#8221;</h4><p>These are small, well-defined tasks. The user knows what they want &#8212; they just want help doing it faster. Rename this file A &#8594; Z. Find every reference to &#8220;abc.py&#8221;. Reword this sentence with fewer passive verbs.</p><p>The tool isn&#8217;t deciding. It&#8217;s executing.</p><h4>Autopilot &#8212; &#8220;Help me accomplish this goal.&#8221;</h4><p>These are fuzzier. More room for interpretation. Write unit tests for this new module. Summarize this paper. Get me home. Now the tool is drawing context, making assumptions, and choosing the path. These tasks don&#8217;t just save time. They save <em>thinking</em>.</p><p>You can see this slider in action across a huge range of products. Here are a few that I use daily:</p><ul><li><p>In <strong>Cursor</strong>, it&#8217;s the difference between fixing a line (Tab), rewriting the feature (Cmd + I), or building something new (Cmd + K).</p></li><li><p>In <strong>Perplexity</strong>, it&#8217;s choosing between a quick answer, a semi-directed query, or running a full research synthesis.</p></li><li><p>In <strong>Tesla</strong>, it&#8217;s going from lane assist, to self-driving, to taking a nap in the back seat.</p></li></ul><p>At every moment, in every decision, these products are asking the same question.</p><blockquote><p>Do you trust us enough to close your eyes?</p></blockquote><div><hr></div><h2><strong>Building Trust</strong></h2><p>Every time a user asks an AI product to do something meaningful, they&#8217;re running the same loop:</p><ul><li><p><strong>Generate</strong> &#8212; the model makes a thing</p></li><li><p><strong>Verify</strong> &#8212; the user it, gut-checks it against their expectations</p></li><li><p><strong>Regenerate</strong> &#8212; tweak the input, try again, steer the output</p></li></ul><p>Trust is built incrementally, one loop through this cycle at a time. As a developer, I live this every day. How much context do I need to give the model to get something useful back? Can I trust it to write a full test suite? What about just a single test file with these exact constraints?</p><p>Each pass through that loop teaches me something about what the tool can handle and where I need to be in control.</p><p>If the original generation is slow, you lose momentum.<br>If the output verification is hard, you lose <strong>procedural trust</strong>.<br>If the regeneration is clunky, you lose <strong>emotional</strong> <strong>trust</strong>.</p><p>This loop is the engine of user trust. Tighten it, and users move faster and trust more. Break it, and the whole product falters.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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"><strong>Sudo Synthesis</strong> is where builders explore the line between control and autonomy. Subscribe to get new essays on product design, decision-making, and the strange new minds we&#8217;re building.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2><strong>Trust Is the Product</strong></h2><p>You&#8217;re not selling magic.<br>You&#8217;re not selling automation.<br>You&#8217;re not even selling intelligence.</p><p>You&#8217;re selling <strong>trust</strong>.<br><br>Trust is earned one generation at a time, and is always at risk. </p><p>The best AI products don&#8217;t rush that process. They respect it.</p><p>They:</p><ul><li><p>Make the <strong>generate &#8594; verify</strong> loop fast, cheap, and safe</p></li><li><p>Let users control the <strong>autonomy slider</strong>, instead of forcing a leap</p></li></ul><p>Not every user is ready to make the leap to full autonomy, but plenty are willing to consider it.</p><p>Some want full control.</p><p>Others want to hand over the wheel.</p><p><strong>Great products support both.</strong></p><p>Because in the end, every UX choice, every shortcut, every abstraction is really asking the same thing:</p><blockquote><p>Will your users trust you enough to close their eyes?</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! 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[Not Quite Software]]></title><description><![CDATA[LLMs aren&#8217;t apps, APIs, or assistants - and the metaphors we use to talk about software are breaking down]]></description><link>https://www.sudosynthesis.dev/p/not-quite-software</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/not-quite-software</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Thu, 19 Jun 2025 15:03:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wabX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wabX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wabX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wabX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wabX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wabX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wabX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2046858,&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.sudosynthesis.dev/i/166282726?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wabX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wabX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wabX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wabX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57651df0-e1a5-4272-95a8-90eba70c0639_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>By far the most impactful $20 I spend every month is my ChatGPT subscription, and it&#8217;s not even remotely close. Two years ago, this product didn&#8217;t exist. Now I ask it about everything: best steak cooking temps, how to politely thank annoying relatives, what food travels well for boat parties, and which ramen shops are open in Tokyo at 2am. (Answer: a lot).</p><p>The weird part about it? I can&#8217;t even tell you what category this thing fits in.</p><p>Most mainstream tech solves a clear problem. WhatsApp is for chatting with your sister. Google helps you find websites. Instagram is for feeling bad about your life.</p><p>But what&#8217;s ChatGPT <em>for</em>?</p><p>Sometimes it&#8217;s a personal assistant. Sometimes it&#8217;s a search engine. And sometimes, when you ask it to describe you, it&#8217;s like running <strong>whoami</strong> on your soul. And the output is disturbingly accurate. (Pro tip: do not try this with friends in the room unless they&#8217;re also your therapist.)</p><p>But here&#8217;s the catch: those are all roles it plays because I asked it to. They don&#8217;t describe what it actually is. LLMs are unlike any software we&#8217;ve ever used, mostly because we don&#8217;t know what they are, and we definitely don&#8217;t know what they&#8217;re for.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/not-quite-software?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/not-quite-software?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h1><strong>The Metaphor Gap</strong></h1><p>Most of my friends &#8212; like yours if you are reading this SubStack &#8212; live in a tech bubble. We&#8217;ve heard of Sam Altman. We know what an API is (even if we don&#8217;t want to write yours). I can use the generic word &#8220;model&#8221; and you&#8217;ll understand what I mean.</p><p>But try actually defining what an LLM is &#8212; like, out loud, to a normal person &#8212; and you&#8217;ll feel the edges of insanity starting to creep in.</p><blockquote><p>It&#8217;s like an app? But there&#8217;s no clear task it&#8217;s designed to do.</p><p>It&#8217;s like a search engine. But you don&#8217;t get links&#8230; just a weirdly confident, potentially hallucinatory, essay.</p><p>It&#8217;s like talking to a person. But it forgets everything you&#8217;ve ever said to it, instantly.</p></blockquote><p>LLMs are just&#8230; something smart that shows up when you ask. Kind of like rentable intelligence that shows up via Wifi. Which, to be clear, is definitely Cool&#8482;.</p><p>But also a little unnerving because everything we&#8217;ve said so far describes what LLMs aren&#8217;t<em>.</em></p><p>So how <em>should</em> we think about them?</p><p>Here&#8217;s a few metaphors I&#8217;ve heard recently. All of these work, right up until the point they don&#8217;t. </p><h2>Like Power, but Smarter (read: Weirder)</h2><p>The way I think about LLMs most of the time is pretty simple: they&#8217;re like public utilities, but for intelligence.</p><p>We expect utilities like water and electricity to be reliable. Always on, always there when we need them. They&#8217;re expensive to build, but once they&#8217;re running, they scale easily. The more you use, the more you pay. And no one really cares <em>which</em> power company is behind the outlet &#8212; they just want the lights to turn on.</p><p>That&#8217;s how I treat models like Gemini, ChatGPT, or Claude. My toaster doesn&#8217;t care if the power came from coal, wind, or solar. It just wants electricity. Same with my prompts most days. I&#8217;m not looking for magic. I just want a straight answer.</p><blockquote><p><strong>LLMs feel like that&#8230; until you flip the switch and get an apology letter to your landlord instead.</strong></p></blockquote><p>The type and quality of electricity doesn&#8217;t change based on how politely you ask for it. LLMs do. </p><p>Unlike utilities, end users can&#8217;t always expect the same output from the same input. Sometimes you get water. Sometimes you get poetry. Sometimes you get confidently incorrect math.</p><p>(That&#8217;s why I put together a whole breakdown on the six building blocks of strong AI prompts &#8212; because getting back useless answers got old real fast)</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:165171886,&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks&quot;,&quot;publication_id&quot;:1164773,&quot;publication_name&quot;:&quot;Sudo Synthesis&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d1745c-9b74-4a8f-9e27-32aef12f4795_1169x1169.png&quot;,&quot;title&quot;:&quot;Build Better AI Prompts: The 6 Blocks Every Engineer Should Know&quot;,&quot;truncated_body_text&quot;:&quot;Watch enough 80s action movies and you start to see the blueprint. A brooding ex-mercenary with too many muscles and not enough therapy tries to walk away from a fight, until an unbreakable personal commitment pulls him back in. Sure, the details change from movie to movie, but the formula becomes impossible to unsee once you notice it.&quot;,&quot;date&quot;:&quot;2025-06-09T15:30:48.505Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:106874423,&quot;name&quot;:&quot;Daniel Kirschner&quot;,&quot;handle&quot;:&quot;danielkirschner&quot;,&quot;previous_name&quot;:&quot;Dank&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b40dcd56-4dcf-4957-b9cb-79be716af38a_4284x4284.jpeg&quot;,&quot;bio&quot;:&quot;Storyteller. Software Developer. Exploring AI feels like decoding a tricky character&#8212;testing theories until your &#8220;I&#8217;ve seen things you people wouldn&#8217;t believe&#8221; line lands authentically. What story will you write?&quot;,&quot;profile_set_up_at&quot;:&quot;2022-10-28T02:07:31.071Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-10-28T02:06:25.463Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1117479,&quot;user_id&quot;:106874423,&quot;publication_id&quot;:1164773,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1164773,&quot;name&quot;:&quot;Sudo Synthesis&quot;,&quot;subdomain&quot;:&quot;sudosynthesis&quot;,&quot;custom_domain&quot;:&quot;www.sudosynthesis.dev&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Sudo Synthesis by Daniel Kirschner distills cutting-edge AI breakthroughs into crystal-clear code recipes and explorations&#8212;no jargon, just pure insights for developers and tinkerers of every skill level.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69d1745c-9b74-4a8f-9e27-32aef12f4795_1169x1169.png&quot;,&quot;author_id&quot;:106874423,&quot;primary_user_id&quot;:106874423,&quot;theme_var_background_pop&quot;:&quot;#A33ACB&quot;,&quot;created_at&quot;:&quot;2022-10-29T20:37:10.719Z&quot;,&quot;email_from_name&quot;:&quot;> sudo synthesis;&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!RkZo!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d1745c-9b74-4a8f-9e27-32aef12f4795_1169x1169.png" loading="lazy"><span class="embedded-post-publication-name">Sudo Synthesis</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Build Better AI Prompts: The 6 Blocks Every Engineer Should Know</div></div><div class="embedded-post-body">Watch enough 80s action movies and you start to see the blueprint. A brooding ex-mercenary with too many muscles and not enough therapy tries to walk away from a fight, until an unbreakable personal commitment pulls him back in. Sure, the details change from movie to movie, but the formula becomes impossible to unsee once you notice it&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">10 months ago &#183; 2 likes &#183; Daniel Kirschner</div></a></div><h2>Like MacOS With Stronger Opinions</h2><p>Another way I think about LLMs is like operating systems &#8212; not because they run hardware, but because they stitch everything else together.</p><p>Windows, Mac, and Linux are the glue that makes computers work. They connect your apps, manage memory, handle storage and networking. You don&#8217;t usually think about them unless something breaks, but they&#8217;re always working behind the scenes to make everything feel seamless.</p><p>LLMs, especially with the advent of autonomous systems, or MCP servers, are starting to feel the same way. They can talk to other tools, remember short-term context, route tasks between systems, even translate between APIs or file formats. They&#8217;re not the app, and they&#8217;re not the output. They&#8217;re the goopy layer in between that holds everything together and makes it work.</p><p>And just like operating systems, there are only a handful of major players: OpenAI, Google, Anthropic, Meta, xAI.</p><p>Some models are locked-down and corporate. Others are open and re-mixable. You can fine-tune them, distill them, even run them on your own hardware if you&#8217;re brave (or bored). It&#8217;s not quite Linux-for-your-brain, but it&#8217;s starting to get close.</p><blockquote><p><strong>LLMs feel like that&#8230; until your function call returns a haiku instead of structured JSON.</strong></p></blockquote><p>Above all else, operating systems are consistent. They give you APIs, permissions, error codes. When you call a function, you know what it&#8217;s going to do.</p><p>LLMs don&#8217;t come with technical support or a manual. No guaranteed output. No clean abstraction between &#8220;what it can do&#8221; and &#8220;what it might decide to do this time.&#8221;</p><h2><strong>Smart Tools with Strange Behaviors</strong></h2><p>As a creator, LLMs seem like a Web 2.0 version of a power tool from Home Depot. You give them a task &#8212; draft this email, summarize that article &#8212; and they do it. Fast, clean, and without complaints about &#8220;paid time off&#8221; or &#8220;lunch breaks&#8221;.</p><p>But sometimes you ask for a blog title, and it gives you an outline. Then a first draft. Then a tagline. Suddenly it&#8217;s pitching follow-up content, branding ideas, and a three-tier marketing funnel. And you&#8217;re just sitting there, watching the cursor blink as it sprints off ahead of you.</p><blockquote><p><strong>LLMs feel like picking up a drill and watching it redesign your living room.</strong></p></blockquote><p>These aren&#8217;t passive tools waiting for instructions. They <em>extrapolate </em>to<em> generate</em>. They take your starting point and run with it. You wanted to hang a picture frame; they&#8217;re halfway through building a shed.</p><p>The question we need to ask isn&#8217;t &#8220;can this help me?&#8221; but &#8220;how much should I let it run?&#8221;</p><p>And I don&#8217;t know about you, but I&#8217;ve never used a power tool that had such strong opinions before.</p><h2>Where the Metaphors Break</h2><p>So, yeah &#8212; LLMs are <em>kind of</em> like public utilities. <em>Kind of</em> like operating systems. <em>Kind of</em> like power tools.</p><p>But really, they&#8217;re none of those. They live in this weird conceptual limbo, not quite tool, not quite platform, not quite infrastructure.</p><p>And for me, as an engineer, that limbo poses a practical question. How do you build tools on top of something that might behave differently every time you call it? I&#8217;m used to working with systems that have rules, contracts, guarantees. LLMs don&#8217;t. And how do you build on top of something you can&#8217;t rely on?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h1><strong>In Search of a Use Case</strong></h1><p>A lot of this metaphor chaos comes down to one big thing: <strong>LLMs are software in search of a problem.</strong></p><p>Like crypto and blockchains before it, the tech is mind-blowing. Genuinely new. But nobody knows what to actually do with it. </p><blockquote><p>Immutable, traceable ledgers sound cool. But I can&#8217;t buy a cheeseburger with them. Guess I&#8217;ll just stare at the line go up and pretend it matters.</p></blockquote><p>Most major tech shifts happen in the opposite direction. Someone has a real-world problem &#8594; builds a solution &#8594; that solution scales to make money. Every founder pitch deck and startup playbook is built from this foundation.</p><ul><li><p><strong>Amazon</strong>: Bezos wanted to buy books online. Now they sell half the internet, and lease compute time to the other half.</p></li><li><p><strong>Facebook</strong>: Zuckerberg wanted to know who else was single in his dorm. Now they destabilize democracies world-wide through political ad targeting.</p></li><li><p><strong>Spotify</strong>: No one wanted to wait for their six-CD changer to cycle. Now we have access to every song every recorded, and a few that shouldn&#8217;t have been.</p></li></ul><blockquote><p>Problem &#8594; Solution &#8594; Scale</p></blockquote><p>So&#8230; what big problem do LLMs solve? Nobody really knows. <em>(Except at Meta, where the endgame is a <a href="https://en.wikipedia.org/wiki/Dead_Internet_theory">dead internet</a> &#8212; just bots generating content for other bots, while making sure you stay engaged enough to keep scrolling.)</em></p><p>This lack of a clear problem is why we can&#8217;t describe LLMs, or decide what to build with them. No shared vocabulary. No constraints. No common frame of reference.</p><p>We don&#8217;t know what this software is. We don&#8217;t know what it&#8217;s for.</p><p>And yet&#8230; it&#8217;s so damn interesting we keep building with it anyway.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p>In Part 2, I&#8217;ll look at how the best AI tools don&#8217;t try to solve problems. They help users <strong>manage control</strong>. Because the real shift isn&#8217;t in what LLMs do &#8212; it&#8217;s in how much we trust them to do it for us.</p>]]></content:encoded></item><item><title><![CDATA[Shifting the Blocks: How AI is Changing Developer Abstractions]]></title><description><![CDATA[From tab-completion tweaks to entire features: four practical ways AI reshapes software engineering today.]]></description><link>https://www.sudosynthesis.dev/p/shifting-the-blocks-how-ai-is-changing</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/shifting-the-blocks-how-ai-is-changing</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Mon, 16 Jun 2025 15:07:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/BGgsoIgbT_Y" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Everyone&#8217;s talking about how AI speeds up coding. But that misses the bigger shift: the way we <em>build</em> software is changing.</p><p>A recent video from Cursor and Anthropic brought this into focus: the abstractions are moving up. This isn&#8217;t about what programming language you use or what kind of SaaS product you&#8217;re building. The &#8220;lego blocks&#8221; developers build with are growing in size. Instead of writing code line by line, we&#8217;re now dropping in entire functions or features at a time.</p><p>This isn&#8217;t just a faster way to type. It&#8217;s a fundamental retooling of how development happens.</p><p>Here are four ways AI is already changing developer workflows, and one place it still falls short.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/shifting-the-blocks-how-ai-is-changing?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/shifting-the-blocks-how-ai-is-changing?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h1>The Model Layer</h1><h3>Line-level Assist</h3><p>Developers spend a lot of time making what I think of as <em>bonsai edits</em>&#8212;small, precise tweaks that gradually shape the code into something cleaner and more intentional. Maybe you&#8217;re renaming tests to better reflect their purpose, or rewriting comments to match updated behavior. AI tab completions are surprisingly good at understanding your intent in these moments. They don&#8217;t always get it right, but when they do, it&#8217;s a quick snip-snip and the code keeps growing in the right direction. </p><p>Bonsai edits are still the smallest building blocks, just a line or two at a time. But AI helps speed them up so you can stay focused on the bigger picture.</p><h3>Function-Level Handoff</h3><p>AI tools are especially useful when you know what you want to build, but the implementation is gnarly. Maybe there are too many edge cases, messy config combinations, or obscure API quirks. The models can handle the grunt work&#8212;building test cases, filling in boilerplate, and translating your design into real code. They handle the details so you can stay focused on validation instead of getting lost in the weeds. Instead of writing every line yourself, you can hand off an entire block of logic. The abstraction shifts from code-as-instruction to code-as-intent.</p><p>And then there&#8217;s legacy code. Every team has a file or two from &#8220;the last guy&#8221; who vanished mid-project. Not always bad, just weird, dense, or a little too clever for its own good. Normally, you&#8217;d ask a longer tenured engineer for some outside context or help unpacking&#8230; <em>why?</em> </p><p>But AI tools can fill that role surprisingly well. They can parse the tests, the structure of the code, and other scattered clues in comments and doc-strings. You don&#8217;t need to decode &#8220;the last guy&#8217;s&#8221; thought process. You just need to understand the shape of what they built. And AI is pretty good at that.</p><p></p><h3><strong>System-Level Understanding</strong></h3><p>Even experienced developers get dropped into unfamiliar systems. Maybe it&#8217;s a service you&#8217;ve never touched, or a repo with sparse docs and cryptic naming. You didn&#8217;t even know it existed ten minutes ago when your boss sent a frantic Slack message. Now there&#8217;s a meeting on your calendar named <strong>&#8220;Quick Sync &#8211; Updates?&#8221;</strong></p><p>AI tools shine in this situation. They can quickly surface high-level summaries, explain what a block of code is doing, or map out how data flows through the system. It might not tell you how to fix the problem, but it&#8217;s usually enough to get you unstuck.</p><p>Even without full context, the model helps you operate at a higher level. You&#8217;re not reading every line: you&#8217;re scanning for intent. </p><p>And while the model&#8217;s generating context, you&#8217;ve got just enough time to decline that meeting invite.</p><h3>Project-Level Generation</h3><p>Every new repo comes with a certain baseline amount of boilerplate just to make it run. Maybe it&#8217;s build YAML files, Spring XML configs, or a set of Gradle plugins that need to be configured just right to work.</p><p>AI models are great at generating this kind of scaffolding, tailored to your specific use case. Not just a blank starting point, but something that already understands what you&#8217;re building and how you expect to package it up.</p><p>This is where the building blocks get even larger. We can spin up whole projects from just a few cues.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h1>The Human Layer </h1><h3>Taste &amp; Context at Scale</h3><p>A lot of the current value in these AI tools comes from offloading mental overhead. You can hand off the mechanical parts of coding and spend more time thinking about <em>what</em> to build instead of <em>how</em> to type it. </p><p>But that&#8217;s also where the tools still fall short. </p><blockquote><p>Generating code isn&#8217;t the goal. Solving the <em>right</em> problem is.</p></blockquote><p>What counts as &#8220;good software&#8221; depends on a hundred subtle factors. Maybe it&#8217;s your company&#8217;s architecture strategy. Maybe it&#8217;s the latest buzzword your CTO brought back from a conference. Maybe it&#8217;s just the size and structure of your team.</p><p>What works in one repo might be a mistake in another&#8212;even within the same company. Tools like <strong>.cursor/rules</strong> can help enforce engineering patterns, but they can&#8217;t encode product strategy. And they definitely can&#8217;t define your team&#8217;s taste&#8212;the shared sense of what &#8220;good code&#8221; looks like, shaped over time through culture, PR reviews, and unspoken norms.</p><p>Think about the feedback on your last design doc. Or the conversation with your manager at lunch. Strategic goals, edge-case constraints, and product&#8217;s shifting priorities all  live outside the code. But they shape what &#8220;good&#8221; looks like just as much as naming conventions or abstraction levels.</p><div><hr></div><h1>Where the Real Leverage Lives</h1><p>The abstractions we work with are changing. Line-by-line edits are giving way to blocks, features, and systems that arrive already half-built. The job of the developer isn&#8217;t shrinking&#8212;it&#8217;s shifting. From typing to deciding. From building to directing.</p><p>That shift raises the bar on judgment. And for now, that&#8217;s still the part the machines can&#8217;t do for us.</p><h1>Cursor x Anthropic</h1><p>The original video that sparked this post is worth a watch!</p><div id="youtube2-BGgsoIgbT_Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;BGgsoIgbT_Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/BGgsoIgbT_Y?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div>]]></content:encoded></item><item><title><![CDATA[Build Better AI Prompts: The 6 Blocks Every Engineer Should Know]]></title><description><![CDATA[Simple blocks, repeatable structure, and feedback from the AI peanut gallery.]]></description><link>https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Mon, 09 Jun 2025 15:30:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!C9mu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C9mu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C9mu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!C9mu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!C9mu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!C9mu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C9mu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3802818,&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.sudosynthesis.dev/i/165171886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C9mu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!C9mu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!C9mu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!C9mu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff15dcdcd-45ae-4386-9fa9-abcd6b085d36_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Watch enough 80s action movies and you start to see the blueprint. A brooding ex-mercenary with too many muscles and not enough therapy tries to walk away from a fight, until an unbreakable personal commitment pulls him back in. Sure, the details change from movie to movie, but the formula becomes impossible to unsee once you notice it.</p><p>Prompting AI models works much the same way. Whether you realize it or not, you&#8217;re probably following a familiar structure: setting context, providing background, and asking a clear question. I recently came across <a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview">Anthropic&#8217;s guide to writing strong prompts</a>. It&#8217;s designed for Claude, but the patterns it outlines show up across every major model. They reflect a shared internal grammar that most LLMs seem to recognize.</p><p>In this post, we&#8217;ll break that structure down into a reusable prompt template you can apply across models and tasks. To see how well it holds up, I asked the Big Four&#8212;Claude, GPT, Gemini, and Grok&#8212;for feedback on what <em>they</em> would change. The core framework passed the test, but each model had strong opinions about what really matters.</p><h2>The 6 Core Blocks of a Strong Prompt</h2><p>All structures are built from a solid foundation, whether thats a blanket fort or the Taj Mahal. Each piece builds on the next in sequence, and missing any of them can result in unexpected destruction. While the ordering of these pieces isn't critical for all prompts, using them in this order helps the model understand clearly what we're asking it to do. As always you'll need to test with your specific use case to see the results! </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p>Here&#8217;s the 7 building blocks used to create a personal shopping prompt.</p><h2>1. Broad Role / Persona / Tone / Task</h2><p>Every prompt starts with setting the scene. You&#8217;re telling the model what kind of role it&#8217;s stepping into, who it&#8217;s speaking to, and what kind of outcome you&#8217;re aiming for. Without this framing, responses can drift in tone or miss the point entirely. You don&#8217;t need a full character backstory, just enough clarity to lock in the right context.</p><pre><code>You are a personal shopping assistant who specializes in answering users questions based on previous customer reviews of their purchase.</code></pre><h2>2. Input Data</h2><p>Once the model knows what role it&#8217;s playing, it needs something to work with. This is your source material&#8212;the raw context the model will draw from when answering. The more input you include, the earlier in the prompt it should appear. That way the model processes the data first instead of jumping straight to the question and backtracking.</p><pre><code>Here are a selection of customer reviews for the chosen product:

&lt;product_reviews&gt;
- &#11088;&#11088;&#11088;&#11088; &#8220;Great sound quality and battery life. Case feels a little cheap though.&#8221; &nbsp;
- &#11088;&#11088;&#11088; &#8220;Fit is okay, but they fall out when I run.&#8221; &nbsp;
- &#11088;&#11088;&#11088;&#11088;&#11088; &#8220;Excellent for the price. Noise cancellation works surprisingly well.&#8221; &nbsp;
- &#11088;&#11088; &#8220;Connection drops often, especially when paired with a laptop.&#8221; 
- &#11088;&#11088;&#11088;&#11088; &#8220;Solid fit and amazing sound, but case is bulky.&#8221; 
- &#11088;&#11088;&#11088;&#11088;&#11088; &#8220;Love these. Super reliable and good mic quality for calls.&#8221; 
&lt;/product_reviews&gt;</code></pre><p>Note the (optional) use of XML tags to explicitly mark sections of content we want the model to pay attention to. This can be extremely helpful when re-using template prompts where the input data isn&#8217;t known ahead of time.</p><h2>3. Examples of correct responses</h2><p>Examples help calibrate the response, especially when you&#8217;re dealing with nuance. Without them, you&#8217;re leaving it up to the model to guess what you mean by words like &#8220;helpful,&#8221; &#8220;brief,&#8221; or &#8220;clear.&#8221;</p><p>Even one or two well-chosen examples can anchor the task.</p><pre><code>&lt;example&gt;

&lt;question&gt;
Are these headphones good for running?
&lt;/question&gt;

&lt;answer&gt; &nbsp;
**Short Answer**: Not ideal for running. &nbsp;
**Why**: One reviewer said they fall out while running, and no other reviews mention good fit during exercise. &nbsp;
**Quote**: &#8220;Fit is okay, but they fall out when I run.&#8221; &nbsp;
&lt;/answer&gt;

&lt;/example&gt;</code></pre><h2>4. Detailed Task or Question</h2><p>Now that the model knows who it is, what data to use, and what a good answer looks like, it&#8217;s time to get specific. This is where you ask the actual question or define the task. Like with any type of question, the more clearly you explain yourself, the better the results. Vague prompts produce vague answers.</p><pre><code>Write a clear, concise answer to this question:

&lt;question&gt;
Are these headphones good for travel?
&lt;/question&gt;</code></pre><h2>5. Output Formatting Instructions</h2><p>Don&#8217;t leave formatting up to chance. If you want the output in a specific structure, say with XML tags or bullet points, spell it out. This helps ensure the response is consistent, scannable, and easier to parse, especially if you&#8217;re feeding it into another computer system for further processing. It&#8217;s also a good place to define what the model should do if it&#8217;s unsure. Pro-tip: double check this format matches with the examples you used previously!</p><pre><code>Respond using only this format:

&lt;answer&gt; &nbsp;
**Short Answer**: [consise answer] &nbsp;
**Why**: [1&#8211;2 sentence explanation] &nbsp;
**Quote**: [Relevant quotes]
&lt;/answer&gt;

If there is not sufficient information in the compiled research to produce such an answer, you may demur and write "Sorry, I do not have sufficient information at hand to answer this question."</code></pre><h2>6. Precognition or thinking instructions</h2><p>This block is optional, but powerful. Use it when you want the model to follow a specific reasoning path before answering. Good examples are extracting quotes from the input data, weighing pros and cons, or scanning for patterns. Think of it as prompting the model to &#8220;think out loud&#8221; before giving you its final answer.</p><p>It&#8217;s especially useful when accuracy matters or when you&#8217;re working with dense input data. If you only need the answer to have the right <em>vibe</em>, you likely don&#8217;t need it. But if you want grounded reasoning, sourced output, or better consistency across responses, this step makes a big difference.</p><pre><code>Before you answer, pull out the most relevant reviews from the data into &lt;relevant_reviews&gt; tags. Then answer the question.</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q-Wp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png 424w, https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png 848w, https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png 1272w, https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png" width="500" height="672" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:672,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:402990,&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.sudosynthesis.dev/i/165171886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.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_!Q-Wp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png 424w, https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png 848w, https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.png 1272w, https://substackcdn.com/image/fetch/$s_!Q-Wp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a545a3a-cdff-4f49-9ca9-3f3f90fdee3b_500x672.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><h1>Putting it all together</h1><p>Here&#8217;s that same prompt put together neatly so that you can give it a quick copy+paste in your next prompting session.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/subscribe?"><span>Subscribe now</span></a></p><pre><code>You are a personal shopping assistant who specializes in answering users questions based on previous customer reviews of their purchase.

Here are a selection of customer reviews for the chosen product:
&lt;product_reviews&gt;
- &#11088;&#11088;&#11088;&#11088; &#8220;Great sound quality and battery life. Case feels a little cheap though.&#8221; &nbsp;
- &#11088;&#11088;&#11088; &#8220;Fit is okay, but they fall out when I run.&#8221; &nbsp;
- &#11088;&#11088;&#11088;&#11088;&#11088; &#8220;Excellent for the price. Noise cancellation works surprisingly well.&#8221; &nbsp;
- &#11088;&#11088; &#8220;Connection drops often, especially when paired with a laptop.&#8221; 
- &#11088;&#11088;&#11088;&#11088; &#8220;Solid fit and amazing sound, but case is bulky.&#8221; 
- &#11088;&#11088;&#11088;&#11088;&#11088; &#8220;Love these. Super reliable and good mic quality for calls.&#8221; 
&lt;/product_reviews&gt;

&lt;example&gt;
&lt;question&gt;
Are these headphones good for running?
&lt;/question&gt;
&lt;answer&gt; &nbsp;
**Short Answer**: Not ideal for running. &nbsp;
**Why**: One reviewer said they fall out while running, and no other reviews mention good fit during exercise. &nbsp;
**Quote**: &#8220;Fit is okay, but they fall out when I run.&#8221; &nbsp;
&lt;/answer&gt;

Write a clear, concise answer to this question:
&lt;question&gt;
Are these headphones good for travel?
&lt;/question&gt;

Respond using this format:
&lt;answer&gt; &nbsp;
**Short Answer**: [consise answer] &nbsp;
**Why**: [1&#8211;2 sentence explanation] &nbsp;
**Quote**: [Relevant quotes]
&lt;/answer&gt;

If there is not sufficient information in the compiled research to produce such an answer, you may demur and write ""Sorry, I do not have sufficient information at hand to answer this question."".

Before you answer, pull out the most relevant reviews from the data in &lt;relevant_reviews&gt; tags. Then answer the question.</code></pre><h1><strong>What the Models Said</strong></h1><p>I asked Claude, GPT-4o, Gemini, and Grok to review this intentionally minimal prompt and offer feedback on what worked and what could be improved. Unsurprisingly, all of them agreed it was a solid starting point. But interestingly, each one had a different idea of what could make it stronger. To make sense of those differences, I assigned each model an archetype that reflects how it seemed to approach the problem.</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/Eca7Y/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4351d309-36e6-4482-89df-850f856ca72d_1260x660.png&quot;,&quot;thumbnail_url_full&quot;:&quot;&quot;,&quot;height&quot;:400,&quot;title&quot;:&quot;Model Feedback on Prompt Template&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/Eca7Y/1/" width="730" height="400" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>Across the board, the models praised the prompt&#8217;s structure and clarity. Most emphasized the need for more explicit instructions to interpret and synthesize the input, rather than just rephrasing it. That lines up with what these models do best: processing large amounts of context and delivering grounded, helpful answers.</p><p>What surprised me was that each of the models had a different focus area for improvements. Some responded with direct, tactical edits I could immediately use. Others offered broader conceptual suggestions. A few focused on ambiguity and edge cases, proposing ways to handle incomplete or unclear input more gracefully.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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">Enjoy this post? Subscribe to Sudo Synthesis for more experiments, prompt patterns, and model behavior breakdowns.</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><h1><strong>Four AI Coworkers Walk Into a Prompt&#8230;</strong></h1><p>Each model brought a distinct personality to the table. It felt less like testing software and more like running a design review with four very opinionated coworkers. One sees prompts as architecture. Another flags ambiguous requirements. One rewrites your design for clarity while you&#8217;re still explaining it. The last one challenges your core assumptions just to see if they still hold up.</p><blockquote><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote><p>And yet, despite their differences, they all agreed on one thing: strong prompts aren&#8217;t accidents. They&#8217;re built.</p><p>This exercise showed that well-structured prompts&#8212;like well-structured code&#8212;are modular, readable, and reusable. These six building blocks won&#8217;t guarantee the perfect response every time, but they give you a blueprint that works across tools, use cases, and model temperaments.</p><p>In the next posts, we&#8217;ll dig deeper into each model&#8217;s feedback and explore what it reveals about their internal logic and design assumptions. Think of it as personality typing for LLMs: practical, a little nerdy, but surprisingly useful.</p><p>Until then, try the prompt. Tweak the blocks. Break them. Rebuild them. That&#8217;s how you go from guessing to engineering.</p>]]></content:encoded></item><item><title><![CDATA[ChatGPT: the Pragmatic Editor]]></title><description><![CDATA[Will rewrite your design spec for clarity before you've finished explaining it.]]></description><link>https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Fri, 06 Jun 2025 07:46:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lCLj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lCLj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lCLj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 424w, https://substackcdn.com/image/fetch/$s_!lCLj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 848w, https://substackcdn.com/image/fetch/$s_!lCLj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 1272w, https://substackcdn.com/image/fetch/$s_!lCLj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lCLj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp" width="1456" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17908,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.sudosynthesis.dev/i/165236484?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lCLj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 424w, https://substackcdn.com/image/fetch/$s_!lCLj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 848w, https://substackcdn.com/image/fetch/$s_!lCLj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 1272w, https://substackcdn.com/image/fetch/$s_!lCLj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38fba9f3-88ec-4a59-8b5b-329aa1c5ba02_1573x562.webp 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><blockquote><p>&#128075; This post is part of the <strong>AI Prompt Blueprint</strong> series.</p><p>In the main post, I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><p>You can keep reading for ChatGPT&#8217;s feedback or jump to your favorite model&#8217;s feedback below:</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote><p>ChatGPT approached this prompt like a professional editor reviewing a work document before it goes to production. It wasn&#8217;t trying to reinvent the format or question the premise. Instead, it focused on <strong>polishing the language</strong>, <strong>generalizing the use case</strong>, and <strong>tightening ambiguity</strong> so that the final result would be clearer, more robust, and easier to reuse.</p><p>While the other models we got feedback from spent time looking for gaps in the blueprint, ChatGPT used it&#8217;s tactical editing skills to make the copy sharper, the roles more specific, and the instructions more foolproof.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h3><strong>Tactical Edits, Not Reinventions</strong></h3><p>ChatGPT stepped in like a seasoned editor, scanning for subtle misalignments between what I said and what I meant, looking for ways to make everything clearer, more consistent, and easier to reuse.</p><p>Like the other models, ChatGPT quickly flagged two common prompt pitfalls: unclear roles and weak synthesis instructions. It suggested shifting the assistant&#8217;s title from &#8220;personal shopping assistant&#8221; to &#8220;product expert&#8221; to avoid persuasive framing, and added a line reminding the model to &#8220;synthesize relevant insights&#8221; rather than just echo reviews. Small changes, but they help the prompt do its job more reliably.</p><p>Then it flagged the <strong>&lt;relevant_reviews&gt;</strong> section of the answer. Was this for internal use or part of the visible output? ChatGPT surfaced the ambiguity and offered two clear paths: make it part of the answer or label it explicitly as a reasoning step. This kind of clarification is what helps prompts scale across different tools and use cases.</p><blockquote><p>&#128161; ChatGPT was the only model to suggest adding a second example that showed the model how to respond when it didn&#8217;t have enough information.</p></blockquote><p>Not just a fallback line of instruction, but an actual demo of when and how to use it. That detail reflects ChatGPT&#8217;s core strength of turning fuzzy instructions into teachable behavior.</p><p>None of this feedback was flashy. But that&#8217;s the point. ChatGPT behaves like a pragmatic editor. It&#8217;s focused on polish, generalization, and instructional precision. It won&#8217;t rewrite your idea, but it will make sure your prompt is clear, durable, and ready for production.</p><div><hr></div><h3>ChatGPT&#8217;s <strong>Strategic Priorities</strong></h3><p>Given ChatGPT&#8217;s &#8220;Pragmatic Editor&#8221; archetype, it&#8217;s no surprise this is the model I reach for when I just need to get something done. It&#8217;s friendly, practical, and doesn&#8217;t overcomplicate things. When I ask a question, it jumps straight in to help. While the other models helped me think about how to write a better prompt, ChatGPT was the only one that rewrote it for me in an easy to copy+paste section.</p><p>That reflects OpenAI&#8217;s broader philosophy: build practical AGI through broad access and rapid iteration.</p><p>Where the other models discuss blueprints, ChatGPT builds a working prototype. Its feedback is grounded in usability: Will this prompt work across teams? Can it be reused? Is it clear enough to hand off? That mindset mirrors OpenAI&#8217;s focus on real-world adoption from plugin support to workflow integrations to becoming the default AI for millions of users.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h3><strong>Takeaways for Builders</strong></h3><p>If you need a prompt that works reliably under pressure, ChatGPT is your go-to. The Pragmatic Editor isn&#8217;t here to philosophize. It&#8217;s here to ship. It focuses on clarity, structure, and making sure your prompt won&#8217;t break when reused, edited, or handed off.</p><p>Use this approach when:</p><ul><li><p><strong>You&#8217;re building a prompt template</strong> to use across multiple tools or workflows. ChatGPT&#8217;s suggestions help generalize without losing focus.</p></li><li><p><strong>You need consistent output formatting</strong>, even when the inputs vary. Its edits tighten ambiguity and enforce structure.</p></li><li><p><strong>You&#8217;re handing the prompt off</strong> to a teammate, stakeholder, or production system. It rewrites with clarity and error-proofing in mind.</p></li></ul><p>When in doubt, write the prompt like someone else will have to use it. ChatGPT will make sure they can.</p><p></p><blockquote><p>&#128075; I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote>]]></content:encoded></item><item><title><![CDATA[Gemini: the Cognitive Scientist]]></title><description><![CDATA[Thinks in flowcharts, cites its sources, and silently judges your search history.]]></description><link>https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Fri, 06 Jun 2025 07:44:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f424c6a7-b867-428c-8e6b-dbc9c4891672_344x127.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4xrp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4xrp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 424w, https://substackcdn.com/image/fetch/$s_!4xrp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 848w, https://substackcdn.com/image/fetch/$s_!4xrp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 1272w, https://substackcdn.com/image/fetch/$s_!4xrp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4xrp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png" width="344" height="127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11614,&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.sudosynthesis.dev/i/165236587?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.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_!4xrp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 424w, https://substackcdn.com/image/fetch/$s_!4xrp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 848w, https://substackcdn.com/image/fetch/$s_!4xrp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 1272w, https://substackcdn.com/image/fetch/$s_!4xrp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff944a4-e7e1-455b-bfa9-c8590cf67936_344x127.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><blockquote><p>&#128075; I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><p>Keep reading for Gemini&#8217;s feedback, or jump to your favorite model&#8217;s feedback below:</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote><p>Gemini approached this prompt like a cognitive psychologist evaluating a training program. It wasn&#8217;t just asking, &#8220;Does this make sense?&#8221; It was asking, &#8220;Does this teach the model how to think?&#8221;</p><p>It praised the foundation: clear roles, grounded data, and a well-structured example. But what caught Gemini&#8217;s interest wasn&#8217;t the structure itself so much as the <em>learning behavior</em> the prompt encouraged. Does the format support logical inference? Can it handle ambiguity? Does it teach synthesis across multiple inputs?</p><p>In Gemini&#8217;s view, this was already a strong prompt. But it believed a few key additions could turn a good prompt into a reliably <em>smart</em> one.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h3>Notes from the Cognitive Coach</h3><p>Gemini liked the structure overall: clean, bounded inputs that reduce guessing and keep the model grounded in evidence. Its favorite part? The example. Beyond showing the output format in action, it modeled how to think: move from question, to reasoning, to a quote-backed answer. For Gemini, that&#8217;s not formatting, that&#8217;s pedagogy.</p><p>It also praised the use of &lt;relevant_reviews&gt; as a cognitive nudge. By prompting the model to reflect on the data first, the prompt encouraged chain-of-thought reasoning&#8212;especially useful when answers require judgment.</p><p>But it saw room to improve the prompt&#8217;s teaching strategy.</p><p>First, Gemini flagged the lack of support for contradiction. If reviews disagree, the model needs a way to surface both views without picking sides or ignoring tension. Gemini wanted an example that shows how to handle conflicting data transparently.</p><p>Second, it wanted stronger guidance around synthesis. The current prompt only uses one quote, but real questions often need a broader pattern. Gemini recommended renaming <strong>Quote</strong> to <strong>Relevant Quotes</strong>, and including multiple sources when needed.</p><blockquote><p>&#128161; Gemini was the only model to distinguish between <strong>explicit</strong> and <strong>implicit</strong> answers such as when a product&#8217;s long battery life implies suitability for long flights.</p></blockquote><p>It didn&#8217;t just want the model to make that leap, instead asking the prompt to train for it. Its core suggestion: allow these type of inferences by the model, but clearly state the logic behind them in the &#8220;Why&#8221; section of the output.</p><p>Gemini didn&#8217;t ask for new capabilities. It asked for better instruction so the model can reason clearly, even when the data isn&#8217;t obvious.</p><div><hr></div><h3>Gemini&#8217;s Strategic Priorities</h3><p>Gemini&#8217;s feedback reflects Google&#8217;s deep roots in information science. Answering the question as posed isn&#8217;t all that makes a smart system. Instead it wanted it to <em>reason transparently</em>, like a good research assistant. The focus wasn&#8217;t on style or speed, but on structured thought: identifying patterns, weighing evidence, and showing your work.</p><p>That tracks with Google&#8217;s philosophy. Gemini is built to integrate into information workflows, such as search, docs, or code, where accuracy and clarity matter more than personality. It&#8217;s not trying to be clever. It&#8217;s trying to be trustworthy.</p><p>Where some models chase engagement or speed, Gemini wants reliability at scale. Its feedback was about teaching the model how to think out loud, not just get the right answer. Because when AI is part of your infrastructure, guesswork isn&#8217;t good enough.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h3><strong>Takeaways for Prompt Writers</strong></h3><p>Gemini shines when you treat the model like a reasoning partner&#8212;not just a word machine. If your prompts rely on judgment, ambiguity, or synthesis, follow its lead:</p><ul><li><p><strong>Show how to think</strong>, not just what to output&#8212;use examples that model reasoning, not just formatting.</p></li><li><p><strong>Allow for inference</strong>, but require models to explain their logic clearly.</p></li><li><p><strong>Prepare for edge cases</strong>&#8212;teach the model how to handle disagreement, vagueness, and conflicting evidence.</p></li></ul><p>When your task calls for subtlety or smart tradeoffs, the Cognitive Scientist archetype is the one to build with.</p><p></p><blockquote><p>&#128075; I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote>]]></content:encoded></item><item><title><![CDATA[Grok: the Exhaustive Technician]]></title><description><![CDATA[Finds edge cases you didn&#8217;t test, fixes them with duct tape, and calls your design &#8220;mid.&#8221;]]></description><link>https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Fri, 06 Jun 2025 07:41:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f39e5d88-2d7c-451b-ab79-6592b4837bb6_549x213.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H5y9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H5y9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 424w, https://substackcdn.com/image/fetch/$s_!H5y9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 848w, https://substackcdn.com/image/fetch/$s_!H5y9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 1272w, https://substackcdn.com/image/fetch/$s_!H5y9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H5y9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png" width="549" height="213" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:213,&quot;width&quot;:549,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9201,&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.sudosynthesis.dev/i/165236634?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.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_!H5y9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 424w, https://substackcdn.com/image/fetch/$s_!H5y9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 848w, https://substackcdn.com/image/fetch/$s_!H5y9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 1272w, https://substackcdn.com/image/fetch/$s_!H5y9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ed64638-2290-4f1f-a36f-0319b51c9a52_549x213.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><blockquote><p>&#128075; I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><p>Keep reading for Grok&#8217;s feedback, or jump to your favorite model&#8217;s feedback below:</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote><p><a href="https://grok.com/">Grok</a>, the snarky and sometimes intentionally offensive model released by xAI, didn&#8217;t show up to review my prompt with a clipboard and a theory. It showed up with a wrench and started smacking the prompt with it until weak spots rattled loose. This was field testing, not finesse. The kind of inspection where duct tape counts as a solution and the goal is &#8220;still works after a car crash.&#8221;</p><p>Where other models worried about tone or polish, Grok asked the hard questions:</p><p>What happens when the reviews are vague? What happens when the model can&#8217;t figure out what the user is asking for?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h3><strong>The Technician&#8217;s Field Report</strong></h3><p>Grok respected the frame of the prompt. The role was clear, the structure made sense, and the fallback for missing data showed foresight. It especially appreciated the working example and the &lt;relevant_reviews&gt; step as a way to anchor reasoning. From Grok&#8217;s perspective, this looked like a prompt designed for real-world use.</p><p>But it wasn&#8217;t about to let it off easy.</p><p>First, it flagged that looking for &#8220;relevant reviews&#8221; was a mess of ambiguity waiting to happen. What makes a review count? Direct mention of the use case? Star rating? Specificity? Without criteria, models will assume&#8230; and everyone knows what that means.</p><p>Second, the output format&#8212;<strong>Short Answer / Why / Quote</strong>&#8212;was solid for simple cases but brittle under pressure. What if reviews contradict each other? What if the answer needs nuance or multiple quotes? Grok didn&#8217;t want to toss the format entirely, just loosen the constraints: allow pros/cons, multiple citations, or slight structural shifts when needed.</p><blockquote><p>&#128161; Grok was the only model to call out the lack of a shared product context.</p></blockquote><p>The prompt assumes the model and the user share a similar understanding of what the product is. That might work for common items like Bluetooth headphones, but probably not your great aunt&#8217;s 1968 dishwasher or that weird green turtle sandbox we all played in during the &#8216;90s. Grok recommended adding more general product context or a &lt;product_type&gt; field to help the model disambiguate.</p><p>And it kept going. Vague user questions like &#8220;Is this product good?&#8221; had no handling logic. Contradictory reviews? No plan. Grok flagged these as failure points that could lead to hallucination or muddled output. Its fix: add fallback behavior for ambiguity, define the target audience, and guide tone explicitly. These need to be explicitly engineered or risk failure in production.</p><p>Grok didn&#8217;t try to redesign the prompt. It tried to break it. And that&#8217;s what makes its feedback valuable. It wasn&#8217;t looking for elegance. It was checking the welds.</p><div><hr></div><h3><strong>Grok&#8217;s Strategic Priorities</strong></h3><p>Grok might have a reputation for attitude, but under the hood it&#8217;s all systems thinking. That matches xAI&#8217;s philosophy well. This isn&#8217;t a model built to follow norms or soften edges. It&#8217;s designed to engage, push back, and question assumptions.</p><p>That same energy shows up in how it reviews prompts. Grok doesn&#8217;t aim for elegance or consensus. It looks for holes, edge cases, and weak spots in your logic. Not to be difficult, but to make sure the system won&#8217;t break when reality shows up.</p><p>This mirrors xAI&#8217;s broader approach: focus on clarity, allow for complexity, and don&#8217;t filter out the messiness of real use. Grok&#8217;s not trying to give the safest answer. It&#8217;s trying to give the most resilient one. That makes it a surprisingly valuable prompt reviewer, especially when you&#8217;re building for unpredictable users in the wild.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h3><strong>Takeaways from the Technician</strong></h3><p>Some reviewers look for polish. Grok looks for failure modes.</p><p>If you want to build prompts that hold up in the real world, follow its lead:</p><ul><li><p><strong>Spell out what &#8220;relevant&#8221; means</strong>: e.g. &#8220;A review is relevant if it mentions the product&#8217;s use case, includes specific details, or matches the user&#8217;s question.&#8221;</p></li><li><p><strong>Handle vague input explicitly</strong>: e.g. &#8220;If the question is unclear, focus on the most frequently mentioned traits in reviews.&#8221;</p></li><li><p><strong>Plan for conflict</strong>: e.g. &#8220;If reviews contradict each other, explain both sides and note the lack of consensus.&#8221;</p></li><li><p><strong>Add product context</strong>: e.g. &#8220;The product is a pair of wireless earbuds used for travel and workouts.&#8221;</p></li><li><p><strong>Make output flexible when needed</strong>: e.g. &#8220;Use pros and cons or multiple quotes when a single summary isn&#8217;t enough.&#8221;</p></li></ul><p>Grok&#8217;s advice is perfect for developers building prompts at scale or integrating LLMs into end-user tools. It&#8217;s less about elegance, more about durability.</p><p></p><blockquote><p>&#128075; I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote>]]></content:encoded></item><item><title><![CDATA[Claude: The Strategic Analyst]]></title><description><![CDATA[Leaves 42 comments on your prompt design, all correct, all politely phrased, none skippable.]]></description><link>https://www.sudosynthesis.dev/p/claude-the-strategic-analyst</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/claude-the-strategic-analyst</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Fri, 06 Jun 2025 07:41:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0dJt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0dJt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0dJt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0dJt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0dJt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0dJt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0dJt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg" width="700" height="368" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:368,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51365,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.sudosynthesis.dev/i/165235981?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.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_!0dJt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0dJt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0dJt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0dJt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548ef6dd-be03-49fd-ad37-2364689bf137_700x368.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>&#128075; I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><p>Keep reading for Claude&#8217;s feedback, or jump to your favorite model&#8217;s feedback below:</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote><p><a href="https://www.anthropic.com/claude">Claude</a>, the flagship model from Anthropic, approached the prompt like a staff engineer reviewing code. It wasn&#8217;t interested in formatting tweaks or specific word choices. Instead, it focused on where the prompt might break down, pointing out failure modes, edge cases, and long-term ambiguity. Where ChatGPT might say &#8220;this works for your use case,&#8221; Claude says &#8220;this is where it stops working at scale.&#8221;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/claude-the-strategic-analyst?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h3><strong>Analyst Mode Activated</strong></h3><p>Claude immediately locked onto the clear structure and solid fallback logic. But what stood out were the gaps, the edge cases and unspoken assumptions I hadn&#8217;t fully addressed.</p><p>Take the assistant&#8217;s role: I described it as a &#8220;personal shopping assistant,&#8221; but Claude pushed for more specificity. Are we helping the user make a purchase? Or offering an unbiased summary of the reviews? That distinction affects tone, trust, and phrasing.</p><p>The quote section in the answer also worked on paper, but Claude flagged its limitations. What if multiple reviews apply? What if none are conclusive? Without clear guidance, the model could default to inconsistent behavior.</p><blockquote><p>&#128161; Claude was the only model to critique the quality of the review data provided.</p></blockquote><p>It argued that the sample reviews didn&#8217;t actually support the type of nuanced synthesis the prompt was aiming for. That&#8217;s a valuable insight, and one that looks beyond prompt structure to question the raw materials feeding the model.</p><p>Claude&#8217;s suggestions aren&#8217;t simple tweaks to existing syntax. These are design limitation for the system, and highlight practical ways this prompt would fail in production.</p><div><hr></div><h3><strong>Claude&#8217;s Strategic Priorities</strong></h3><p>Claude doesn&#8217;t just follow a prompt. It evaluates the system behind it, scanning for ambiguity, failure modes, and missing logic. Its feedback aims to improve resilience and reduce risk, not just polish the surface.</p><p>That mindset reflects more than model tuning. It echoes Anthropic&#8217;s mission: to build aligned, interpretable AI that behaves safely and predictably. Claude&#8217;s feedback style mirrors the company&#8217;s enterprise-first focus, where clarity and control matter more than charm.</p><p>Claude&#8217;s perspective is strategic because Anthropic&#8217;s mission demands it. In risk-sensitive settings, vague instructions and inconsistent behavior are unacceptable. This is a model built to catch problems before they happen.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h3><strong>Takeaways for Builders</strong></h3><p>Claude is the kind of model you want reviewing your <em>system</em> prompts, not just one-off completions. It sees prompts as contracts between the user, the model, and the data. And it expects those contracts to hold under stress.</p><p>Here&#8217;s how to apply its feedback:</p><ul><li><p><strong>Match your prompt to your data</strong></p><p>If users ask about travel and your reviews don&#8217;t mention it, instruct the model to acknowledge the gap instead of guessing.</p></li><li><p><strong>Push for synthesis, not summary</strong></p><p>Add guidance like: &#8220;Identify patterns or shared opinions across reviews, not just single quotes.&#8221;</p></li><li><p><strong>Plan for disagreement</strong></p><p>Include fallback logic like: &#8220;If reviews conflict, present both views and explain the uncertainty.&#8221;</p></li><li><p><strong>Define the assistant&#8217;s stance</strong></p><p>Be explicit: &#8220;Should the assistant recommend a product, remain neutral, or just report what others said?&#8221;</p></li></ul><p></p><blockquote><p>&#128075; I shared a prompt template built using the <strong><a href="https://www.sudosynthesis.dev/p/build-better-ai-prompts-the-6-blocks">six building blocks of effective prompt design</a></strong>, then asked four top AI models to provide feedback. Each one had strong (and different) opinions.</p><ul><li><p><a href="https://www.sudosynthesis.dev/p/claude-the-strategic-analyst">Claude: The Systems Thinker</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/chatgpt-the-pragmatic-editor">ChatGPT: The Pragmatic Editor</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/grok-the-exhaustive-technician">Grok: The Exhaustive Technician</a></p></li><li><p><a href="https://www.sudosynthesis.dev/p/gemini-the-cognitive-scientist">Gemini: The Cognitive Scientist</a></p></li></ul></blockquote>]]></content:encoded></item><item><title><![CDATA[Structured Tools, Chaotic Kitchen]]></title><description><![CDATA[Giving Claude access to my system was easy. Making sure he didn&#8217;t fry the filesystem took more work.]]></description><link>https://www.sudosynthesis.dev/p/structured-tools-chaotic-kitchen</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/structured-tools-chaotic-kitchen</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Thu, 29 May 2025 15:03:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!w_w4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w_w4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w_w4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!w_w4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!w_w4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!w_w4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w_w4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2926682,&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.sudosynthesis.dev/i/164701544?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w_w4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!w_w4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!w_w4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!w_w4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffc66a2-2d01-4603-8498-e82943e5d594_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude tries to set water on fire</figcaption></figure></div><p></p><p>Just a few years ago, writing code felt like being a line cook at an understaffed diner. You prepped every ingredient, grilled every burger, plated every dish, and hoped no one noticed when you burned the toast. Starting a new project in a different language? That was like swapping your spatula for a sushi knife. Same idea, entirely different muscle memory.</p><p>These days, I&#8217;m not the cook. I&#8217;m the chef. Maybe even the restaurant owner. The models are doing the chopping and stirring. I&#8217;m deciding what&#8217;s on the menu, how it should be plated, and what kind of decor the restaurant should have.</p><p>In an earlier post, I compared <a href="https://www.sudosynthesis.dev/p/i-just-wanted-a-menu">tool access to giving models a menu</a>. That still holds true. But even the best menu doesn&#8217;t help if the chef doesn&#8217;t understand what kind of restaurant they&#8217;re running. What I&#8217;m realizing now is that clarity of purpose matters just as much as capability. Tools are only powerful when they are helping you progress in the right direction.</p><p>Now I&#8217;m not working the grill. I&#8217;m running the kitchen, thinking about what kind of experience I want to deliver while the models handle the food prep.</p><p><strong>This post is about what it takes to run that kitchen well. How I&#8217;ve started to design systems, workflows, and expectations that make working with these models feel more like collaboration and less like cleanup.</strong></p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/structured-tools-chaotic-kitchen?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Share this with a friend who&#8217;s figuring out how to cook with AI, too.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/structured-tools-chaotic-kitchen?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/structured-tools-chaotic-kitchen?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2>He Can Chop, But Can He Plate?</h2><p>These tools are incredible at wiring things up: infra, tests, helper functions, even error-handling boilerplate. With <a href="https://windsurf.com/">Windsurf</a>, I went from &#8220;here&#8217;s a basic Python MCP server&#8221; to &#8220;this is production-ready&#8221; in about an hour. Code generation models are great at the <em>how</em>. They struggle with the <em>what</em>.</p><p>Fundamentally, good software comes from a consistent series of decisions that all point toward a goal. Some of those decisions happen deep in the code, like whether a method should require an authenticated user. But they ripple up into bigger product questions. Should free users have access to this feature at all? Should a server error kill the entire request, or log and continue?</p><p>These aren&#8217;t technical choices. They&#8217;re product choices. And the models don&#8217;t have the context to make them well. Developers who click &#8220;accept all&#8221; too quickly end up with a system full of quiet contradictions and accidental edge cases.</p><p>Even something as basic as file access can go sideways. In my MCP project, the model set up a sandboxed directory structure, and it mostly worked, until I realized it was letting users create their own symbolic links. A user could drop a symlink in their allowed folder that pointed straight to private files, and the model would helpfully load them. Just like that, a supposedly restricted environment had access to system-level config files. The model did exactly what I asked, but it had no sense of the broader boundaries.</p><p>One way to reduce this risk is by giving the model smaller, more focused tasks. But that only helps you catch the mistakes you&#8217;re already looking for.</p><p>The best developers don&#8217;t just write code. They shape the decisions behind it. That hasn&#8217;t changed, even when a model is doing the typing.</p><h2>No, Claude, We Don&#8217;t Serve That Here</h2><p>The real limit here isn&#8217;t just context size. It&#8217;s that the model doesn&#8217;t share the same kitchen rules. I have a mental model for how my service works, what patterns I expect, what tradeoffs I&#8217;ve already made, what assumptions are non-negotiable. But the model only sees a slice of the recipe at a time. It&#8217;s doing its best with what it&#8217;s given, but it doesn&#8217;t know why I made that design choice three features ago or what constraint it was meant to solve.</p><p>So I&#8217;ll fix a bug in one place, then run into a nearly identical bug somewhere else, only to realize the model forgot how we solved it the first time. Worse, it makes a whole new set of assumptions. Now I&#8217;ve got conflicting patterns, and &#8220;accept all&#8221; doesn&#8217;t give you enough context to catch it.</p><p>Windsurf and <a href="https://www.cursor.com/ja">Cursor</a> both let you tag specific files and say, &#8220;Write tests for @main.py using the async style from @test_service.py.&#8221; That nudges the model in the right direction.</p><p>What I really want is something deeper. Not just formatting, but institutional knowledge. How should tests behave? What counts as a proper permission check? What makes a comment useful or extraneous? I want the model to carry that worldview forward and treat it as canon, not suggestions.</p><h2>Building the Kitchen Around the Tools</h2><p>Whether it&#8217;s debugging or tequila, the truth remains the same:</p><blockquote><p>One shot is never enough.</p></blockquote><p>Working with these models has made that even clearer. The more time I spend pairing with them instead of coding solo, the more I realize I need a real workflow&#8212;something that lets me move quickly without losing track of the details.</p><p>The <a href="https://www.sudosynthesis.dev/p/claude-meet-my-filesystem">MCP filesystem example from the previous post</a> gave me a clean foundation to explore how these models perform across a real system. In that post, I talked about giving the models a structured menu of tools. This workflow is the next step. It turns out, the tools alone aren&#8217;t enough if there isn&#8217;t a process for turning decisions into consistent results. What I needed was a system that didn&#8217;t just expose capabilities but also shaped how those capabilities are used across the entire project.</p><p>Here&#8217;s the four-step framework I&#8217;ve landed on so far. I&#8217;m still adjusting things as I go, learning what works, and changing how I work with each model as they evolve and add capabilities.</p><h3><strong>From Prompt to Plate</strong></h3><h4><strong>Shape the product</strong></h4><p>For the first pass I use <strong>ChatGTP o3</strong> and <strong>Gemini 2.5 Pro</strong>. They&#8217;re both strong at exploring product goals, clarifying vague ideas, and identifying edge cases early. I use a prompt template to frame the problem and see what assumptions fall out. When one model raises a question, I&#8217;ll ask the other what it thinks. It&#8217;s like pair programming with two interns who love to argue.</p><h4><strong>Break it into features</strong></h4><p>Once I understand the problem space, I work with the same models to turn my big idea into discrete, shippable units. Think of this like breaking JIRA epics into manageable chunks of work. Pro-tip: explicitly ask the models about any implicit assumptions or dependencies being built into these tasks.</p><h4><strong>Build each feature and its tests</strong></h4><p><strong>Claude 3.7</strong> or <strong>SWE-1</strong> (via Windsurf) handles the first pass directly in the IDE. Once the feature is done, I&#8217;ll have it also generate the tests for what it just built. That&#8217;s an easy way to surface any quiet assumptions it made along the way.</p><h4><strong>Pressure test the results</strong></h4><p>After the code is working, I&#8217;ll bring in a second model, usually <strong>Claude</strong> or <strong>Gemini</strong>, to review or refactor any quirky bits. Each model has its own opinion about what &#8220;good&#8221; looks like, and they don&#8217;t always agree. When one complains about the other&#8217;s code, that&#8217;s usually where something interesting is hiding.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to get future posts straight from the kitchen to your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Call It a Soft Opening</strong></h2><p>Every time I write about AI dev tools, I end up circling the same three ideas:</p><ul><li><p>Don&#8217;t trust them</p></li><li><p>But wow, look what they can do</p></li><li><p>Seriously, don&#8217;t trust them</p></li></ul><p>All of that is still true. But here&#8217;s what&#8217;s also true: I haven&#8217;t felt this creatively energized as a developer in years.</p><p>In my first post, I wrote about giving models access to real tools. What happens when you hand them a proper menu? In the second, I showed how I wired up Claude to my filesystem to start testing that idea in the wild. This post is about what&#8217;s happened since then, and how I&#8217;ve started building systems around the tools instead of just tossing prompts into them.</p><p>They don&#8217;t replace judgment. They don&#8217;t remember why a decision made sense three features ago. But they remove just enough friction to help you stop thinking like a technician and start thinking like a builder.</p><p>This isn&#8217;t a polished process. I&#8217;m still figuring it out, one messy commit at a time. But each project makes the next one easier. And with every mistake, I get a little closer to the kind of system I want to run, and the kind of chef I want to become.</p>]]></content:encoded></item><item><title><![CDATA[Claude, Meet My Filesystem]]></title><description><![CDATA[How I broke the copy+paste cycle]]></description><link>https://www.sudosynthesis.dev/p/claude-meet-my-filesystem</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/claude-meet-my-filesystem</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Tue, 27 May 2025 15:02:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fOxd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fOxd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fOxd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fOxd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fOxd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fOxd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fOxd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:233482,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.sudosynthesis.dev/i/164195041?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.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_!fOxd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fOxd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fOxd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fOxd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8f9b65-3033-4ade-a14a-51e3561c235d_1024x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Modern white-collar work is shifting away from knowing things to conjuring them. We&#8217;re part scribe, part sorcerer. We don&#8217;t just <em>write</em> code anymore; we summon it into existence, shaping it to fit whatever spell (or requirements spec) we&#8217;re under.</p><p>Models like Claude and ChatGPT have become essential to my daily workflow: brainstorming ideas, tightening drafts, even finding open taco spots at 12:30 a.m.</p><p>But for all their power, I still spend too much time ferrying information back and forth. Every Substack post I write gets bounced between different models&#8212;for grammar, for structure, for code. I scaffold ideas with outlines, upload reference files, and re-explain the same context again and again.</p><blockquote><p>&#8984;C. &#8984;V. Repeat.</p></blockquote><p>The unlock? Surprisingly simple: I gave Claude access to my <strong>local files</strong>. No uploads. No summaries. Just a shared workspace. And with that, I found a new way to work&#8212;one that might be useful even if you&#8217;ve never written a line of code.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Why Use Claude?</h2><p><a href="https://www.anthropic.com/news/model-context-protocol">Anthropic introduced the Model Context Protocol (MCP) in November 2024</a>: a standardized way for language models to call external tools safely and predictably. If you <a href="https://www.sudosynthesis.dev/p/i-just-wanted-a-menu">read my previous post</a> (yes, the one with the confused fish order in Croatia), you know MCP is all about giving models structured menus instead of making them guess at every step.</p><p>Claude supports this natively, which makes it the easiest way to start experimenting&#8212;especially compared to ChatGPT, which still relies on a more closed, plugin-based system. That&#8217;s why for this demo, I&#8217;m using Claude: it&#8217;s not just capable, it&#8217;s aligned with the standard that&#8217;s actually making tool use practical.</p><h2>Getting Started</h2><p>The details of how MCP servers work under the hood are fascinating (and surprisingly simple), but for now we&#8217;re going to stay high-level and practical.</p><p>Here&#8217;s what we&#8217;ll do:</p><ul><li><p>Use <strong>UV</strong>, a Python package manager, to install a filesystem MCP server</p></li><li><p>Wire <strong>Claude</strong> up to talk to it</p></li><li><p>Run simple, powerful file operations via natural language</p></li></ul><p>First lets get UV set up. Run this in a terminal window.</p><pre><code>pip install uv</code></pre><p>Next, lets update Claude by opening the config file.</p><pre><code>open -e ~/Library/"Application Support"/Claude/claude_desktop_config.json</code></pre><p>and adding this as the entire file contents:</p><pre><code>{
  "mcpServers": {
    "mcp-python-filesystem": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/dpkirschner/mcp-python-filesystem@main",
        "filesystem-server-start",
        "/opt/claude" // &lt;--- change this line
      ]
    }
  }
}</code></pre><p>This tells Claude to use <strong>UV</strong> to pull down and run the filesystem MCP server automatically at startup.</p><blockquote><p>&#128274; <strong>A note on the last line</strong>: This defines which directories Claude has access to. I gave it a specific external drive at <em>/opt/claude</em>, just to keep things tidy, but this can be any directory.</p></blockquote><h2>What Can Claude Do In 30 seconds?</h2><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c3f69e25-40cc-4ecb-afb6-869edc427b84&quot;,&quot;duration&quot;:null}"></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/subscribe?"><span>Subscribe now</span></a></p><h2>Big Picture Why This Matters</h2><p>It&#8217;s easy to dream up fun ways to use AI. You could write a screenplay, build a startup, or simulate a drunken pirate debate on nuclear fission. These are novel, entertaining, and undeniably clever.</p><p>But they&#8217;re also isolated. Little demo moments. One-offs.</p><p>What I&#8217;ve been searching for, and what MCP starts to deliver, is continuity. A way to do interesting things <em>productively</em>. To build tools that fit into my life and workflows, instead of sitting beside them like a party trick I can never find the right moment to pull out.</p><p>That&#8217;s what&#8217;s so powerful about the <strong>Model Context Protocol</strong>. It gives language models a structured interface to the tools I already rely on. And because it&#8217;s modular, I can wire up new capabilities in minutes&#8212;often with nothing more than a config change.</p><p>I shared a broader list in <a href="#">my last post</a>, but here&#8217;s a quick sampler of the types of products you can connect to Claude:</p><h4><strong>For Developers</strong></h4><ul><li><p><strong>AWS / Azure / GCP</strong> &#8211; Query and manage your cloud infra, storage, and databases via natural language.</p></li><li><p><strong>Postgres / Redis / ClickHouse</strong> &#8211; Perform queries and updates on popular databases, fast.</p></li></ul><h4><strong>For AI Builders</strong></h4><ul><li><p><strong>Needle</strong> &#8211; Ready-to-use RAG pipeline for structured document QA.</p></li><li><p><strong>Unstructured</strong> &#8211; Parse messy PDFs, HTML, and more into clean model-ready input.</p></li></ul><h4><strong>For Knowledge Work</strong></h4><ul><li><p><strong>Notion / Linear</strong> &#8211; Search, update, and automate your team&#8217;s favorite tools.</p></li><li><p><strong>Zapier</strong> &#8211; Instantly plug into 8,000+ apps using natural-language flows.</p></li></ul><h4><strong>For Browser &amp; Web Automation</strong></h4><ul><li><p><strong>Browserbase</strong> &#8211; Automate browsing, scraping, and data entry tasks.</p></li><li><p><strong>Apify</strong> &#8211; Tap into 3,000+ prebuilt web data extraction tools.</p><p></p></li></ul><p>Want to wire any of these up?</p><p>You already saw the pattern&#8212;just point to a different MCP server in your config and restart Claude.</p><p><strong>You could have this running in under 30 seconds.</strong> No joke.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/claude-meet-my-filesystem?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/claude-meet-my-filesystem?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>What&#8217;s Next?</h2><p>The <a href="https://github.com/dpkirschner/mcp-python-filesystem">filesystem MCP server</a> I used in this demo? I built it myself using <strong><a href="https://github.com/windsurf-ai/windsurf">Windsurf</a></strong> and their <a href="https://windsurf.com/blog/windsurf-wave-9-swe-1">new frontier </a><strong><a href="https://windsurf.com/blog/windsurf-wave-9-swe-1">SWE-1</a></strong><a href="https://windsurf.com/blog/windsurf-wave-9-swe-1"> model</a>. Claude, Gemini, and ChatGPT all chimed in, of course. It felt more like orchestrating a team of interns than writing software from scratch.</p><p>And the wild part? It worked. A lot more smoothly than I initially expected.</p><p>In the next post, I&#8217;ll walk you through exactly how I built it&#8212;step by step. If you&#8217;ve ever wanted to create your own LLM-powered toolchain, this is your invitation.</p><p>Until then, I&#8217;m curious:</p><p><strong>Have you given your chatbot assistant any real tools yet? Or is it still just answering questions?</strong></p>]]></content:encoded></item><item><title><![CDATA[I Just Wanted a Menu]]></title><description><![CDATA[Why MCP servers are the missing link between language models and real tools]]></description><link>https://www.sudosynthesis.dev/p/i-just-wanted-a-menu</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/i-just-wanted-a-menu</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Thu, 15 May 2025 16:45:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Phtu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Phtu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Phtu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Phtu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Phtu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Phtu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Phtu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2389859,&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.sudosynthesis.dev/i/163593445?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Phtu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Phtu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Phtu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Phtu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f6b9dd-3e8e-4130-9de6-3ec74e5d2148_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A few years ago, my wife and I stumbled into a little seafood place in Split, Croatia. One of those tiny spots tucked down a side street with outdoor tables, starched red and white tablecloths, and no tourists in sight. The restaurant had an empty dining room, which lead into a open kitchen where an older man leaned patiently against an aging stove. His face lit up when we walked in. He rushed around to greet us with glasses of sparkling water.</p><p>&#8220;What kind of fish would you like today?&#8221; he asked.</p><p>We&#8217;d spent biking through Split, and the afternoon on a cocktail tour. Now, staring up at this kind-eyed gentleman, I couldn&#8217;t remember what fish were in season&#8212;or, frankly, what fish even existed.</p><p>&#8220;Uhh&#8230; a steak? With frites? Medium rare.&#8221;</p><p>The waiter&#8217;s eyebrows furrowed behind thick glasses. He scribbled something down and walked away, muttering under his breath.</p><p>In that moment I would have given anything for a menu. A list of choices I could point to&#8212;something structured enough to help me decide, but flexible enough to feel personal.</p><p>That moment of confusion is exactly what LLMs felt like before MCP: full of potential, but frustratingly opaque.</p><h2>What is an MCP server?</h2><p>Model Context Protocol (MCP) servers give language models a structured way to interact with tools. Instead of guessing how to do something like a web search or file lookup, the model is presented with a menu of available operations and what information is required for each.</p><p>MCP Servers help change the confusion on the left, into the conversation on the right.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dQGE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dQGE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dQGE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dQGE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dQGE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dQGE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4992669,&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.sudosynthesis.dev/i/163593445?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.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_!dQGE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dQGE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dQGE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dQGE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8ad5a4-2dee-4513-8479-bb73c58b86b5_2048x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">left: a model struggles to order food; right: a model orders food confidently</figcaption></figure></div><h2>A Menu For Models</h2><p>In the past, if I wanted an LLM to help a user order food, I would have written a prompt like this:</p><pre><code>You are a helpful assistant that turns hunger pangs into food orders for our kitchen to prepare. When a user orders food, generate a JSON object with:

- fish_type: the type of fish to be cooked
- preparation: how it should be cooked (grilled, fried, raw)
- sauce: optional, any preferred sauces or sides</code></pre><p>Now if the user says:</p><blockquote><pre><code><code>&#8220;I want something light, maybe grilled, not too oily. I love lemon.&#8221;</code></code></pre></blockquote><p>We expect that the model returns JSON:</p><blockquote><pre><code><code>{
  "fish_type": "sea bass",
  "preparation": "grilled",
  "sauce": "lemon"
}</code></code></pre></blockquote><p>This works, but its fragile and relies on the model to juggle all the implicit constraints. Are fried sardines a valid fish option? Do we have Worcestershire sauce in the kitchen? What if the user wants fish sticks?</p><p>With an MCP server, the restaurant could expose a manifest like this:</p><pre><code>{
  "name": "order_fish",
  "description": "Place a seafood order at a local restaurant",
  "parameters": {
    "type": "object",
    "properties": {
      "fish_type": {
        "type": "string",
        "enum": ["branzino", "sardine", "sea bass", "octopus"]
      },
      "preparation": {
        "type": "string",
        "enum": ["grilled", "fried", "raw", "baked"]
      },
      "sauce": {
        "type": "string"
      }
    },
    "required": ["fish_type", "preparation"]
  }
}</code></pre><p>Now the model, and the restaurant, both have a common menu to work from.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Why Developers Love MCP Servers</h2><p>MCP servers remove friction from developers. They help make LLM-powered software feel like an actual product, not just another hack-a-thon project that will die in an abandoned github repo.</p><ul><li><p>Faster prototyping - register a tool once, and the model discovers the functionality automatically</p></li><li><p>Typed contracts - every interaction produces predictable JSON that can be validated in CI tooling</p></li><li><p>Swap-in tools - swap SQLite for Postgres or Snowflake without having to re-write your entire prompting layer</p></li><li><p>Safer execution - add rate limiting, authentication, and validation to the tool call</p></li><li><p>Simpler docs - JSON schemas are easy to parse for LLMs, and can be kept up to date automatically (unlike Confluence docs or README files)</p></li><li><p>Built-in automation - Chain tool calls together with an agentic LLM. The model orchestrates your business logic, instead of fighting with API syntax.</p></li></ul><p>In short: less guesswork, more structure. Developers get the flexibility of language models with the predictability of real software engineering.</p><h2>Why End Users Love MCP Servers (even if they don&#8217;t know what it is)</h2><p>Easier access to integrations for developers leads directly to better products for consumers. Here are just a few real-world examples you can play with today:</p><ul><li><p><a href="https://github.com/modelcontextprotocol/servers/tree/main/src/gdrive">Google Drive</a> - The model can browse, search, and open your files from a connected drive. Want it to find your Q4 goals or summarize a meeting note? </p></li><li><p><a href="https://github.com/modelcontextprotocol/servers/tree/main/src/slack">Slack</a> - Let the model summarize threads, schedule stand-ups, or draft posts in the right channels. It&#8217;s like giving your model a company badge.</p></li><li><p><a href="https://github.com/ZilongXue/claude-post">Email</a> - Triage inboxes, write responses, or flag urgent threads via standardized </p></li><li><p><a href="https://github.com/modelcontextprotocol/servers/tree/main/src/github">GitHub</a> - Open pull requests, summarize diffs, or review code comments. The model becomes part of the team, not just an advisor.</p></li><li><p><a href="https://github.com/varunneal/spotify-mcp">Spotify</a> - Queue songs, build playlists, or adjust the vibe using actual API calls instead of simulated guesses.</p></li></ul><p>One of my personal favorites goes beyond just tool access:</p><ul><li><p><a href="https://github.com/modelcontextprotocol/servers/tree/main/src/memory">Memory</a> - Build a persistent knowledge graph that grows as you work. It remembers details and decisions about your product without requiring constant manual context dumps.</p></li></ul><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/i-just-wanted-a-menu?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Sudo Synthesis! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/i-just-wanted-a-menu?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/i-just-wanted-a-menu?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2>What&#8217;s next?</h2><p>MCP is quickly becoming the de facto standard for connecting language models to real tools.</p><blockquote><p>If you&#8217;re building AI assistants or internal tooling, MCP makes your life easier. Full stop.</p></blockquote><p>Next time: I&#8217;ll show how I wired Claude to a local MCP server so I can manage files, write code, and even edit my upcoming Substack posts in a consistent tone and style, without re-explaining myself in every new chat.</p><p></p><p>Found any cool use cases for MCP servers? Drop them in the comments below! I&#8217;d love to see what you&#8217;re building.</p>]]></content:encoded></item><item><title><![CDATA[Vibe-Driven Development with Claude Code]]></title><description><![CDATA[The code works. The vibe is weird.]]></description><link>https://www.sudosynthesis.dev/p/vibe-driven-development-with-claude</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/vibe-driven-development-with-claude</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Tue, 13 May 2025 22:14:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!j0Et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j0Et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j0Et!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j0Et!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j0Et!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j0Et!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j0Et!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:348689,&quot;alt&quot;:&quot;enthusiastic helpers don't always help the most&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.sudosynthesis.dev/i/163433356?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="enthusiastic helpers don't always help the most" title="enthusiastic helpers don't always help the most" srcset="https://substackcdn.com/image/fetch/$s_!j0Et!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j0Et!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j0Et!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j0Et!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d16f42-662a-47b8-83d5-5e96dca9f250_1024x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2></h2><p>Using Claude Code feels like working with an overenthusiastic intern. Smart, fast, and full of ideas, if not always the right ones. I&#8217;ll ask for a simple function, and suddenly I&#8217;m reviewing a full utility library. &#8220;Want some summary statistics while we&#8217;re at it?&#8221; No, Claude. I really don&#8217;t.</p><p>It&#8217;s like mentoring someone who shows up Tuesday morning with a weekend&#8217;s worth of features no one asked for, built on a branch no one can merge. You admire the hustle, but now you&#8217;re burning time (and tokens) cleaning up the aftermath.</p><p>Still, there&#8217;s a lot to like.</p><div><hr></div><h3><strong>The Good</strong></h3><p>There&#8217;s something nostalgic about working with Claude in a terminal editor. Mainframe green screens gave way to bash prompts and blinking cursors. Claude fits right into that lineage. It&#8217;s a smooth collaborator, moving files around faster than I could.</p><p>I keep it open in a split screen with the terminal on one side and code on the other. We pair program like we&#8217;re sharing a split keyboard. Watching it work is surprisingly cool. The context-aware, auto-generated git commits feel like magic. It runs shell commands on its own. It even supports MCP servers, so you can plug in custom extensions or APIs. It&#8217;s a modern-day green screen with superpowers, and just enough spark to make you pause and think, <em>&#8220;Wait&#8230; this is actually kind of amazing.&#8221;</em></p><p>And sometimes it really delivers. Watching it debug why my tests weren&#8217;t running gave me the same weird, proud thrill I felt the time my intern won a company-wide award. You expect them to help, but not like that. Those little moments are magic.</p><p>Of course, magic doesn&#8217;t always land cleanly.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 Sudo Synthesis! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h3><strong>The Middle</strong></h3><p>Things got shakier in the &#8220;not quite code&#8221; zone. Claude is solid at writing functions and scripts, but tasks like prompt generation, light config files, or structured data work can get wobbly.</p><p>I had it generate a few prompts for a workflow. They looked great at first glance. Clean output, passed a quick sanity check, seemed ready to go. But a couple hours later, I realized there was a subtle inconsistency in the structure. Because I trusted it, I had already moved forward, which meant I had to regenerate the entire dataset from scratch.</p><p>Claude, in this context, felt like an intern trying to impress during a design review. The delivery was confident. The doc looked polished. But underneath, it relied on outdated API versions and a soon-to-be-deprecated service. Not malicious, not broken. Just eager, overconfident, and not quite ready to be left unsupervised.</p><div><hr></div><h3><strong>The Ugly</strong></h3><p>The code Claude generated technically worked. It went line by line, did what I asked, and returned something functional. But it lacked structure. No separation of concerns, no cleanup, no real sense of how the pieces fit together. When I asked Claude to clean it up, it added a new statistics module I hadn&#8217;t asked for.</p><p>Out of curiosity, I gave the same prompt to Gemini 2.5 Pro. The difference was immediate. Gemini refactored the code, improved the logging, and added exponential backoff retries to my request handler. These were practical, thoughtful changes that made the code better in ways that actually matter.</p><p>If Claude is the intern proposing extra stats, Gemini is the senior engineer quietly fixing brittle parts of the system without needing direction. Both can be useful at different times and in different contexts.</p><div><hr></div><h3><strong>The Cost (And the Vibe)</strong></h3><p>I didn&#8217;t expect to care about the cost metric, but I did. It turned into a mini-game. If something cost $1.39 to generate, my brain instantly went: Can I get this down to a buck?</p><p>It wasn&#8217;t about the money. It was about control. About getting better at prompting. More precise. More efficient. The number became a signal. It told me when I could tighten the loop, sharpen the tool, and improve how I used it.</p><p>This is one of those invisible skills that will start to separate people who build with AI from those who just use it. Just like there are better and worse ways to write code, there are better and worse ways to prompt. And the difference in output can be massive.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/vibe-driven-development-with-claude?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Sudo Synthesis! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/vibe-driven-development-with-claude?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/vibe-driven-development-with-claude?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h3><strong>Final Thoughts</strong></h3><p>This all still feels like a step forward. Maybe not a perfect one. Maybe not in a straight line. But forward nonetheless. The idea that your development tools can act more like collaborators than compilers feels right.</p><p>But I can&#8217;t help thinking about the early days of Uber. My wife and I used to take rides to the grocery store because they were so cheap it didn&#8217;t make sense to own a car. It felt like a life hack. Then Uber scaled. Investors wanted returns. Prices went up. The magic wore off.</p><p>Right now, AI coding tools still feel like they&#8217;re riding the performance and cost trend upward. Every month brings faster models, better results, and cheaper inference. But what happens when that curve levels out? When progress slows and the gains become marginal?</p><p>Do we end up locked into walled gardens, paying more and more for slightly better completions and slightly tighter IDE integrations?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/vibe-driven-development-with-claude/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/vibe-driven-development-with-claude/comments"><span>Leave a comment</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The $1.39 Bug Fix: How AI Is Transforming Developer Productivity]]></title><description><![CDATA[Discover how AI is creating a direct cost-to-feature correlation in software development, turning 5 point JIRA tasks into $1.39 fixes and transforming traditional workflows.]]></description><link>https://www.sudosynthesis.dev/p/how-ai-is-transforming-developer-productivity</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/how-ai-is-transforming-developer-productivity</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Tue, 29 Apr 2025 15:00:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NsJ_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NsJ_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NsJ_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NsJ_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NsJ_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NsJ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1694767,&quot;alt&quot;:&quot;a software developer mumbles into his headset during a late night debugging session.&quot;,&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://hightechlowlife.substack.com/i/162365029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a software developer mumbles into his headset during a late night debugging session." title="a software developer mumbles into his headset during a late night debugging session." srcset="https://substackcdn.com/image/fetch/$s_!NsJ_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NsJ_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NsJ_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NsJ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa10fced0-020e-4e64-8b99-459039e7e7b4_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Late night debugging sessions</figcaption></figure></div><h2>The New Developer Workflow: AI as Your Coding Partner</h2><p>Remember when pair programming meant two developers sharing a single screen? The stale coffee cups, those harsh cleaning chemical smells from the overzealous cleaners, whiteboards covered in diagrams, desks littered with half-eaten bags of chips? I had that same experience this afternoon, except it was with Claude Code. And hey, at least I didn't have to share my chips.</p><p>Unlike human coworkers, AI assistants tend to give solid hints and point you in the right direction&#8212;even if they sometimes miss the big-picture nuances. It's like hanging out with a hyper-bright intern from an Ivy league school: they'll go on about a niche sorting algorithm that shaves 1ms off tail-latency, but look at you blankly when you mention JIRA. Priceless.</p><p>That contrast between detailed technical smarts and cluelessness about the bigger stuff actually makes AI a great complement for senior developers. Sure, the nerd in me gets a kick out of seeing a tiny dip in latency metrics thanks to an automated refactor of some legacy code. But the crucial part? I get to spend less time touching old code, and more time drinking coffee.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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">Level up your coding with AI. Subscribe to High Tech - Low Life for free &#8211; get practical tips and strategic insights designed for professional developers.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>Real-World Example: The $1.39 Bug Fix</h2><p>My typical debugging routine involves juggling terminal windows and copy-pasting between my editor and chat interfaces. I'd send code snippets to Gemini, ChatGPT or Claude for tweaks or test generation&#8212;a process that works well for isolated tasks with clear inputs and outputs.</p><p>But recently, my Tailwind styles refused to load when deploying a React + TypeScript app via <a href="https://railway.com/">Railway</a>. As any dev knows, tracking down this kind of issue means following a trail through browser logs, application logs, build logs, and syntax issues&#8212;each requiring different debugging approaches.</p><p>Fed up with the copy-paste dance, I spun up Claude Code locally. After indexing my project, I simply asked:</p><p>"Why are my tailwind styles not showing up when deployed via Railway?"</p><p>Within seconds, my terminal displayed a set of git diff suggestions:</p><blockquote><p>Fix Tailwind import order</p><p>Adjust post-install script for CSS build</p><p>&#8230; and on and on</p></blockquote><p>A quick &#9989; later, styles appeared in my deployment.</p><p>Claude had analyzed my entire codebase, pieced together the mess from my previous debugging attempts, and provided a solution that touched multiple files&#8212;no more copy-paste one line file tweaks, just precise, contextual fixes.</p><h2>Cost-to-Feature Correlation: A New Development Economy</h2><p>On traditional teams, tickets like "Convert a static HTML application to React" might be 3-5 story points&#8212;a full day or more of work. Claude Code offers a different way to measure that effort:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y0uW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y0uW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 424w, https://substackcdn.com/image/fetch/$s_!y0uW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 848w, https://substackcdn.com/image/fetch/$s_!y0uW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 1272w, https://substackcdn.com/image/fetch/$s_!y0uW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y0uW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png" width="1456" height="470" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/648af869-7441-48dd-9418-28decb04c496_1586x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:470,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112944,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://hightechlowlife.substack.com/i/162365029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!y0uW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 424w, https://substackcdn.com/image/fetch/$s_!y0uW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 848w, https://substackcdn.com/image/fetch/$s_!y0uW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 1272w, https://substackcdn.com/image/fetch/$s_!y0uW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648af869-7441-48dd-9418-28decb04c496_1586x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I spent exactly $1.39 in API credits to get my deployment fixed (plus an extra buck for electricity since I left my laptop running overnight). Getting a few of these tasks done a day is right in line with what Anthropic estimates would be typical for a developer.</p><blockquote><p><strong>"The average cost of Claude Code is $6 per developer per day, with daily costs remaining below $12 for 90% of users."</strong></p></blockquote><p>What fascinates me is how this shifts my relationship with code changes. Instead of thinking in terms of time or JIRA points, I can think in terms of direct cost:</p><blockquote><p><strong>"Do I want to invest $X today to add that feature?"</strong></p></blockquote><p>For targeted, well-scoped tasks like "Add a button that calls this API," these tools deliver immediate value. In my experience, AI meets the code-review bar about 90% of the time for these focused changes, especially when it can reference other files for best practices.</p><h2>The Future of AI-Assisted Development</h2><p>There's a fascinating progression happening with AI tooling in software development that still hasn't reached its full potential. As someone who's used these tools daily, I've noticed three distinct tiers emerging:</p><ol><li><p><strong>Tier 1: Generic Chatbots</strong><br>Web-based assistants (ChatGPT, Claude on the browser). Great for quick one-off script generation, or design discussions, but there's friction between your IDE and the chat window.</p></li><li><p><strong>Tier 2: Project-Aware Plugins</strong><br>Editor or code-aware tools (Cursor, Claude Code, ChatGPT with tools). They understand your project structure and can fix bugs across code and config. Good at code generation and feature building.</p></li><li><p><strong>Tier 3: Deployment-Aware Agents</strong><br>Future tooling tied into your CI/CD and monitoring: automatic config updates, runtime log analysis, health-check integration. An error pop up in your application logs? Here's a PR with the root cause analysis for human approval. Why are these requests slower than expected? Logging shows DB connections to this read replica are slower than average. Let's shift traffic and scale another replica.</p></li></ol><p>I experienced this tier-3 potential recently when debugging a few dropped requests between my front and backend servers. Generic chatbots lacked context, and project-aware tools knew my repo but not my deployment environment. The breakthrough only came when ChatGPT spotted a YAML misconfiguration hiding in a <a href="https://railway.com/">Railway</a> config screenshot I shared. A truly integrated system would catch these issues before they become problems.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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">Level up your coding with AI. Subscribe to High Tech - Low Life for free &#8211; get practical tips and strategic insights designed for professional developers.</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><h1>Conclusion</h1><p>AI coding partners are reshaping how we build software. Just as we moved from assembly to Java&#8212;trading manual memory management for safety and faster development times&#8212;today we're able to offload "grunt" work to AI and focus on design and strategy. This transition isn't just about convenience; it's fundamentally changing our relationship with code. The $1.39 debugging session represents a way to measure feature velocity directly against model costs. (I can&#8217;t wait until we start doing &#8220;pricing estimate&#8221; poker during sprint planning.)</p><p>Looking forward I&#8217;m on the hunt for tools that hit the Tier 3 integration level. where AI doesn't just help us write code, but actively monitors and improves our systems. For individual developers, this would mean competing at levels previously reserved for companies with dedicated DevOps teams. For larger organizations, it means pushing engineering talent toward innovation instead of maintenance. As these tools mature, they're not replacing developers&#8212;they're allowing us to shift our focus.</p><p></p><p>Have a tool in mind when you read about Tier 3? Let me know about it below!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/how-ai-is-transforming-developer-productivity/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/how-ai-is-transforming-developer-productivity/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Practical AI (day 2): Travel Planning via Deep Research]]></title><description><![CDATA[Using AI to solve real-world problems, today.]]></description><link>https://www.sudosynthesis.dev/p/practical-ai-day-2-travel-planning</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/practical-ai-day-2-travel-planning</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Thu, 24 Apr 2025 15:01:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Tqz1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tqz1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tqz1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tqz1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tqz1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tqz1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tqz1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg" width="1279" height="870" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:870,&quot;width&quot;:1279,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:339849,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://hightechlowlife.substack.com/i/161925077?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.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_!Tqz1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tqz1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tqz1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tqz1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a592ba4-a204-49ea-bc44-b5d37da036b4_1279x870.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most of us use AI assistants in &#8220;standard mode&#8221; - getting those broad, surface-level answers. It's like chatting with someone who visited Mexico City once and remembers just the tourist spots. But these same tools can operate in "Deep Research mode" - delivering specific, actionable insights that actually help you make decisions.</p><p>In this post, I'll show you how to level up your AI game using travel planning as our example. We'll explore three ways to interact with AI - from basic questions to advanced prompting tricks - and see how the right approach can transform generic travel suggestions into a personalized adventure that fits exactly what you're looking for.</p><p>Let's see how to make AI work harder for you, starting with a simple trip to Mexico City.</p><h1>Level 1: Standard Mode</h1><p>Let's start with the simplest approach - just asking an AI assistant what to do in Mexico City. It's like asking that friend who visited once but doesn't remember all the details.</p><blockquote><p>I'm planning a trip to Mexico City. What should I do there?</p></blockquote><p>ChatGPT quickly served up a classic tourist highlight reel (see <a href="https://chatgpt.com/share/68096acb-5880-8004-86df-a1f1896739f2">the full response here</a>):</p><pre><code>Nice! Mexico City is a vibrant, massive, and deeply layered city&#8212;history, food, art, chaos, calm, all rolled into one. Here&#8217;s a mix of must-do highlights, local gems, and things to plan ahead for:

---- 
&#127912; Culture &amp; Museums
&#8226; Museo Frida Kahlo (Casa Azul): Her home in Coyoac&#225;n. Gorgeous, emotional, book ahead.
&#8226; Museo Nacional de Antropolog&#237;a: One of the best museums in the world, especially for pre-Columbian history.
&#8226; Museo Tamayo or Museo Jumex: Modern and contemporary art with stylish vibes.
&#8226; Palacio de Bellas Artes: Stunning architecture and murals inside.
----</code></pre><p>The recommendations are solid, but they're basically what you'd find in any travel guide from the last decade. There's nothing wrong with these suggestions - they're popular for a reason.</p><p>But I'm left with so many questions: How crowded will these places be? Which neighborhood should I stay in? Is Teotihuacan better in the morning or afternoon? What if I'm vegetarian? How do I get from the airport to my hotel?</p><h1>Level 2: Using Deep Research Mode</h1><p>Time to kick things up a notch. When I ask the same Mexico City question but with Deep Research mode enabled, I don't get an immediate answer - I get questions back!</p><p>Instead of dumping generic info, the AI wants to understand what I'm actually looking for:</p><pre><code>That sounds like a great trip! Could you share a bit more about what kind of experiences you're looking for in Mexico City? For example:
1. Are you more interested in history, art, food, nightlife, or nature?
2. What's the length of your stay?
3. Will you be traveling solo, as a couple, with friends, or family?
4. Do you have any budget constraints or accessibility needs?
5. Are you looking for popular highlights, hidden gems, or a mix of both?

This will help me tailor the recommendations better for your trip.</code></pre><p>This is already way more helpful! The AI is thinking like a real travel agent, not just a search engine. To be honest, I hadn't even considered specifying these details in my original question.</p><p>After I filled in these gaps (a four-day trip with my partner, focused on food and culture, mid-range budget), the AI went into research mode for several minutes. It's like watching someone frantically flip through guidebooks, check recent reviews, and consult local experts all at once.</p><p>When it came back, I didn't get a generic list - I got a full-blown custom itinerary that feels like it was crafted by a Mexico City insider. Here's just a taste of what it suggested for our first evening:</p><pre><code>&#8226; Dinner at Azul Hist&#243;rico &#8211; For your first night, dine in the romantic open-air courtyard of Azul Hist&#243;rico (Isabel La Cat&#243;lica 30, Centro Hist&#243;rico, Mexico City 06000) &#65532;. This upscale yet authentic restaurant is set in a 17th-century palace (now Downtown Hotel), under a canopy of lights and trees. Chef Ricardo Mu&#241;oz Zurita, a renowned authority on Mexican gastronomy, serves elegant traditional dishes here &#8211; his Oaxacan mole negro and cochinita pibil are legendary &#65532;. Handmade tortillas are pressed to order, and the atmosphere feels like a tranquil oasis in the bustling center &#65532;. Booking tip: Reserve in advance for dinner, and request a courtyard table for the best ambiance.

&#8226; Nightcap with a View &#8211; Cityzen Rooftop Bar &#8211; After dinner, head to Cityzen Rooftop Bar on the 38th floor of the Sofitel Mexico City (Av. Paseo de la Reforma 297, Cuauht&#233;moc, 06500 Mexico City) &#65532;. This stylish rooftop lounge offers panoramic views of the city skyline &#8211; you can often see the Angel of Independence and skyscrapers twinkling at night. Sip a craft mezcal cocktail or champagne as you take in the skyline from the outdoor terrace. (Dress to impress; upscale rooftop bars in CDMX enforce smart casual attire.) Booking tip: Arrive on the early side or reserve a table, especially on weekends, to secure a prime spot by the glass railing.</code></pre><p>The entire itinerary goes on like this - each recommendation comes with specific dishes to try, insider tips about the best times to visit, current prices, and little details that only locals would know. It even warns me about which tourist traps to avoid and suggests alternatives.</p><p>This doesn't feel like generic advice anymore - it feels like I'm getting tips from a friend who lived in Mexico City for years and knows exactly what I'd enjoy. That's the magic of Deep Research mode. See the <a href="https://chatgpt.com/share/680975e6-0728-8004-892e-592ffd0c1fad">full response here</a> if you want to take advantage of this plan. (Also please send pictures of the trip!)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 High Tech - Low Life! 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><h1>Level 3: AI Assisted &#8220;Deep Research&#8221; Prompts</h1><p>Deep Research is fantastic for getting those local insider details, but sometimes it can be information overload. For our Mexico City trip, we need to work around meetings and catch up with friends, so a full minute-by-minute itinerary isn't necessary. What we really need is a curated list of great spots we can flexibly visit.</p><p>This is where my favorite zero-effort AI hack comes in: getting the AI to craft its own prompt! Instead of struggling to write the perfect instructions, I'll let the AI do the heavy lifting.</p><blockquote><p>Can you help me craft a Deep Research prompt to answer this question? <br>'I&#8217;m planning a trip to Mexico City. What should I do there?'</p></blockquote><p>After a quick back-and-forth about our specific needs (flexible schedule, focus on food, mix of tourist spots and hidden gems), the AI delivered this masterpiece of a prompt:</p><pre><code>You are a Mexico City travel strategist specializing in immersive food-and-history experiences. Your task is to identify, evaluate and rank the top 10 must-do experiences for a 4-day trip to Mexico City, mixing iconic highlights with local hidden gems.

Deliverable:
- Summary (150&#8211;200 words): Key themes and how they fit together.
- Top 10 List: For each entry include:
    &#8226; Name &amp; category (e.g. Historic Site, Street-food Experience, Cocktail Bar)
    &#8226; Why it's unique (authenticity, wow-factor, historical significance)
    &#8226; Practicals (neighborhood, hours, cost, booking tips)
- Hidden-Gems Sidebar: At least 3 off-the-radar spots (with same detail fields).
- Cocktail Bar Roundup: Your top 5, highlighting signature drinks and vibe.
- Sources: Cite 5 authoritative, post-2023 travel guides, local blogs or news sites (with URLs and publish dates).

Research Steps (chain-of-thought):
1. Map out travel categories: cuisine, history, art/architecture, nightlife.
2. For each, compile 15&#8211;20 candidates from recent guides, blogs, forum posts.
3. Apply evaluation criteria: authenticity, accessibility, cost vs. value, "wow" factor.
4. Rank and distill to your Top 10 and Hidden Gems.
5. Cross-check practical info (hours, reservations, pricing).</code></pre><p>Look at how much better this is than my original basic question! A few specifics that make this prompt so effective:</p><ul><li><p><strong>Role assignment</strong>: "You are a Mexico City travel strategist..." immediately puts the AI in the right mindset. We don't want generic travel tips - we want specialized knowledge.</p></li><li><p><strong>Clear deliverable format</strong>: Instead of getting a wall of text, we've specified exactly how we want the information organized - a summary, a top 10 list with specific details for each item, and bonus sections for hidden gems and cocktail bars.</p></li><li><p><strong>Research methodology</strong>: The prompt even tells the AI <em>how</em> to think through the problem - casting a wide net first, then filtering down using specific criteria.</p></li></ul><p>When I fed this prompt back to the AI, the results were exactly what we needed - a perfectly formatted list of experiences, each with practical details we could use to make quick decisions on the go. The hidden gems section revealed places I'd never have found in standard travel guides, and the cocktail bar roundup will be required reading before we start each night!</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/hFTwM/2/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0572b34-a397-44b1-af42-6d9623f1800b_1260x660.png&quot;,&quot;thumbnail_url_full&quot;:&quot;&quot;,&quot;height&quot;:1194,&quot;title&quot;:&quot;Mexico City Highlights&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/hFTwM/2/" width="730" height="1194" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>This approach gave us the flexibility to pick and choose activities based on our schedule, while still benefiting from Deep Research quality. It's like having a travel agent create a custom guidebook just for you, without the overwhelming detail of a rigid itinerary.</p><p>The best part? This technique works for literally any complex question you might ask an AI. Want restaurant recommendations in your city? Investment advice? Home renovation ideas? Getting the AI to craft its own research prompt first will dramatically improve the quality of what you get back.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/practical-ai-day-2-travel-planning?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading High Tech - Low Life! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/practical-ai-day-2-travel-planning?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/practical-ai-day-2-travel-planning?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h1>Broad and Recent Context</h1><p>Using Deep Research pulls much wider, current context for the model to use in forming its opinion. Just as a traveler might flip through a dozen guidebooks before a trip, Deep Research allows AI models to gather and organize a broad array of relevant information.</p><p>When you ask about Mexico City restaurants without Deep Research, the AI gives you what it broadly knows about popular dining spots. But with Deep Research, it can consider dozens of factors simultaneously: recent restaurant openings, temporary closures, seasonal menu changes, which places are currently trending with locals versus tourists, and how dining scenes have evolved in different neighborhoods.</p><p>This contextual expansion means recommendations aren't just common knowledge but are tailored to your specific needs at a specific point in time. It's the difference between a friend telling you &#8220;Pujol is a good restaurant&#8221; versus a local guide who knows that "Pujol requires reservations three months in advance, but if you're looking for innovative Mexican cuisine and can't get in, the head chef's casual taqueria <em>Eno</em> offers a similar culinary philosophy at a fraction of the price and with no reservation required."</p><p>Remember, the way these models work at the end of the day is by predicting the next token in a given sequence. They produce recommendations based on the patterns they've observed in their training data. The AI suggests visiting Frida Kahlo's Casa Azul because people collectively discuss it online as a must-visit attraction. The model has absorbed the general sentiment that this is an important cultural site.</p><p>However, the specific details that make a recommendation truly useful&#8212;like current ticket prices, reservation systems, accessibility features, or recent renovations&#8212;are buried within that generalized knowledge, mixed together with countless other opinions from across the internet. Without Deep Research, the AI defaults to the most commonly mentioned aspects without necessarily surfacing the most relevant details for your specific needs.</p><h1>When to Use Each Approach</h1><p>This doesn't mean you should always use Deep Research. Sometimes the quick answer is exactly what you need:</p><ul><li><p><strong>Standard mode</strong> is perfect for general knowledge questions ("What's the currency in Mexico?"), creative requests ("Write a poem about Mexico City"), or when you're just beginning your exploration of a topic.</p></li><li><p><strong>Deep research mode</strong> shines when you need specific, current information for decision-making ("Which neighborhoods should I focus on for my 3-day trip next month?"), when accuracy and recency matter ("What are the current entry requirements for US citizens?"), or when you need comprehensive comparisons ("How do the different transportation options from the airport compare in terms of safety, cost, and travel time?").</p></li></ul><p>That's the real magic of Deep Research: transforming an AI assistant from a generalist with broad knowledge into a specialist with the specific insights you need for your journey&#8212;whether that's a literal trip to Mexico City or any other complex decision you're facing.</p><p></p><p>What use cases have you found Deep Research most helpful for?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/practical-ai-day-2-travel-planning/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/practical-ai-day-2-travel-planning/comments"><span>Leave a comment</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Debugging Nightmares and AI Dreams]]></title><description><![CDATA[Why Gemini 2.5 Pro Won My Workflow Battle For Now]]></description><link>https://www.sudosynthesis.dev/p/debugging-nightmares-and-ai-dreams</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/debugging-nightmares-and-ai-dreams</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Thu, 03 Apr 2025 14:03:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!A9m3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A9m3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A9m3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!A9m3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!A9m3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!A9m3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A9m3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2774338,&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://hightechlowlife.substack.com/i/160464994?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A9m3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!A9m3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!A9m3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!A9m3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45989180-b4e2-4789-870b-716f0a2a2349_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h1>The Debugging Abyss</h1><p>Every developer knows the feeling: hours of debugging spent on a dockerfile where every dependency upgrade takes 15 minutes to build and 30 seconds to break your heart. This week, that was me, wrestling with a custom n8n workflow build plagued by perplexing package dependency conflicts. My mission: find an AI partner that could not just suggest fixes, but could win over my heart.</p><h2>Round 1: Claude 3.7</h2><p>My first tango partner was Claude 3.7. The previous version, Claude 3.5, has been a staple model in the world of AI code development ever since it was announced, so the new version felt like a safe bet. We dove in, and initially, there was progress. But soon, we fell into a frustrating cycle. Fixes for one package dependency would inexplicably break another. The details are different. File permissions, node versions, ordering of package downloads. The result is the same: tears.</p><p>The biggest hurdle? Context length. As our <em>Dockerfile</em> drafts evolved, I kept hitting the limits, forcing chat resets. Claude would then forget our journey, suggesting previously discarded fixes or silently refactoring sections of code we'd already verified.  </p><p>To be fair, there are solutions for this. I built context for the model using a dedicated Project folder, manually prompting Claude to summarize our progress and key discoveries, while feeding it tutorials and sample code. It <em>worked</em>, kind of, but constantly curating these insights was tedious and ruined the debugging vibes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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">Enjoying this deep dive into AI-assisted development? Subscribe for more real-world comparisons and workflow tips!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Round 2: Gemini 2.5 Pro - The Partner with Perfect Memory</h2><p>Frustrated but determined, I turned to Gemini 2.5 Pro. I started describing the same complex problem, bracing myself for the tedious process of re-feeding all the context snippets.</p><p>Then something remarkable happened: I didn't need to. Gemini gathered relevant content via Google search and helped me understand the real problem.</p><p>Together, we embarked on an epic debugging journey, grinding through variations of the Docker container setup, hunting for the magic combination of PyTorch and pyannote. It wasn't instant magic, but it was progress. Crucially, Gemini's massive context window let it remember everything we'd tried&#8212;what worked, what failed, and why.</p><p>When we finally landed on a working configuration, it even helped refactor the whole thing, cleaning up the patchy hacks that accumulate like digital grime over stalled prototypes.</p><p>And the best part? I didn't have to manually manage the context window once. For this kind of iterative, complex task, the sheer size of its context window was a killer feature.</p><h1>Beyond Context: The Game-Changing "Show Thinking" Feature</h1><p>The context window, while massive, wasn't even the most valuable part. By far&#8212;and I mean by far&#8212;the most powerful aspect was Gemini's "Show Thinking" output.</p><p>If I ask a senior staff engineer how to solve a tricky problem, I might get a discussion, a brainstorming session, or sometimes just a shrug. What I won't typically get is a detailed, 14-paragraph breakdown of their entire thought process, weighing the pros and cons of different design choices.</p><p>Gemini provided exactly that. When I asked a simple question about altering a database table, its reasoning process led us down a path that resulted in completely redesigning my DB schema to better model what I was actually trying to achieve. That's more than just coding assistance; it's guided development.</p><h2>Unlocking True Developer Productivity</h2><p>As developers, our knowledge is inherently limited by our experience. I can talk your ear off about scaling streaming Flink applications, but that doesn't make me an expert on different Postgres column types or the nuances of JavaScript lambda context references in a workflow system. Gemini's ability to articulate its reasoning bridges these gaps.</p><p>It feels almost underwhelming to state how big of a value unlock this is. Traditionally, you picked up deeper understanding by deciphering dense design documents or listening to heated debates between senior devs in a sweltering meeting room with glass whiteboards. Now, you can get a structured explanation on demand, tailored to your specific problem, with background context on all the tools involved.</p><h2>A Curious Quirk: AI Empathy and "Vibe Coding"</h2><p>One thing did stand out as slightly... unexpected. Gemini often included explicit instructions <em>to itself</em> about managing our interaction, sometimes focusing on my perceived emotional state. After a particularly long back-and-forth, it thanked me for my patience after internally reminding itself: "This developer has likely been fighting this issue for several hours."</p><p>Which, hey, positive reinforcement is nice! "You're right, AI, I am handsome and talented!"</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3hEq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3hEq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 424w, https://substackcdn.com/image/fetch/$s_!3hEq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 848w, https://substackcdn.com/image/fetch/$s_!3hEq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 1272w, https://substackcdn.com/image/fetch/$s_!3hEq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3hEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif" width="480" height="268" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:268,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4731006,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://hightechlowlife.substack.com/i/160464994?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3hEq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 424w, https://substackcdn.com/image/fetch/$s_!3hEq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 848w, https://substackcdn.com/image/fetch/$s_!3hEq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 1272w, https://substackcdn.com/image/fetch/$s_!3hEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477f1a59-8531-425f-82d3-58321dc1ec64_480x268.gif 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>But there was also a surreal reminder of the current nature of my relationship with these tools, especially during deep debugging sessions. "Vibe coding" is all the rage these days, and its easy to see why. For rapid prototyping- the "fix it and keep moving" approach- it's by far the fastest way to go from 0&#8594;1.</p><p>Sure, I understand the intent of the Dockerfile changes, but I'm not diving into the details to understand the internal conflicts between the specific PyTorch dependencies causing the crashes. It's more like a Senior Engineer checking in on their intern occasionally: "That looks promising. Can you try the second approach you mentioned? Oh, and this time use Python."</p><h1>The Verdict: Context Is King (For Now)</h1><p>For this particular context-heavy debugging nightmare, Gemini 2.5 Pro emerged as the clear winner. The combination of a massive context window that eliminated manual memory management and the invaluable "Show Thinking" feature provided not just a solution, but a learning experience.</p><p>While Claude 3.7 is powerful, its context limitations became a significant bottleneck in this scenario. The AI landscape is evolving rapidly, but for now, Gemini's approach represents a genuine step forward in collaborative development.</p><p><strong>What's your experience with AI coding assistants? Have you found one that genuinely enhances your workflow? I'd love to hear from you in the comments!</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/p/debugging-nightmares-and-ai-dreams/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.sudosynthesis.dev/p/debugging-nightmares-and-ai-dreams/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Human Edge: Why AI Can't Replace Intuition]]></title><description><![CDATA[Why being emotionally even keeled could make AI researchers bad at science.]]></description><link>https://www.sudosynthesis.dev/p/the-human-edge-why-ai-cant-replace</link><guid isPermaLink="false">https://www.sudosynthesis.dev/p/the-human-edge-why-ai-cant-replace</guid><dc:creator><![CDATA[Daniel Kirschner]]></dc:creator><pubDate>Wed, 19 Mar 2025 13:06:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PJCL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PJCL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PJCL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PJCL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PJCL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PJCL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PJCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:544798,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://hightechlowlife.substack.com/i/159378411?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.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_!PJCL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PJCL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PJCL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PJCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d0ba182-ef90-4a60-be64-cd333d5aca35_2048x2048.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In 1984, Barry Marshall had reached his breaking point. He had spent years tirelessly researching the true cause of stomach ulcers, only to be dismissed again and again. The medical establishment had made up its mind: ulcers came from stress and diet. The idea of bacteria surviving in the stomach's acidic environment was absurd, laughable even.</p><p>But Marshall wasn't laughing&#8212;he was furious.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 High Tech - Low Life! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Fed up with rejection, Marshall did something an AI would never even dream of: he poured a beaker of bacteria and drank it down, determined to prove his critics wrong.</p><p>Within days, Marshall was violently ill. His theory was confirmed&#8212;he had successfully given himself ulcers. He took antibiotics, cured himself, and forever changed medical history.</p><p>No amount of logic or data crunching could have driven an AI to such a reckless act. Yet it was Marshall's anger&#8212;raw, powerful, and profoundly human&#8212;that propelled him to make one of the most important discoveries in modern medicine.</p><h2>The Gap Between Theory and Practice</h2><p>Barry Marshall wasn't reacting to a single rejection letter. He was responding to years of lived experience&#8212;repeated dismissal and ridicule from his peers. His personal journey, combined with his research data, pushed him to make that radical decision.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!stdt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!stdt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 424w, https://substackcdn.com/image/fetch/$s_!stdt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 848w, https://substackcdn.com/image/fetch/$s_!stdt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!stdt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!stdt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg" width="500" height="649" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:649,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:96347,&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://hightechlowlife.substack.com/i/159378411?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.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_!stdt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 424w, https://substackcdn.com/image/fetch/$s_!stdt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 848w, https://substackcdn.com/image/fetch/$s_!stdt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!stdt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e99188-69f2-48c7-9517-aecbf394f8c5_500x649.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If an AI researcher had been assigned Marshall's problem and received the same lack of support, it might have analyzed more patient data, generated new models, or run further controlled simulations. </p><p>But would it have recognized that no one was listening&#8212;and made a bold, irrational move to force the world to see the truth?</p><h2>History's Greatest Breakthroughs Often Come From Human Emotion</h2><p>The annals of scientific discovery are filled with breakthroughs driven by uniquely human qualities:</p><p><strong>Louis Pasteur</strong> took an enormous moral risk by <a href="https://www.pasteur.fr/en/research-journal/news/history-first-rabies-vaccination-1885">giving an untested rabies vaccine to a dying child</a>&#8212;because his compassion wouldn't allow him to stand by and do nothing. The urgency of human suffering drove him to action where caution would have dictated restraint.</p><p><strong>Wilhelm R&#246;ntgen</strong> became obsessed with an unexplained glow in his laboratory and investigated it with passionate curiosity, even working in secret for weeks. This obsession led to the <a href="https://en.wikipedia.org/wiki/Wilhelm_R%C3%B6ntgen#Discovery_of_X-rays">discovery of X-rays</a>&#8212;technology that has saved countless lives.</p><p><strong>Alexander Fleming</strong> returned from vacation to find <a href="https://en.wikipedia.org/wiki/Alexander_Fleming#Discovery_of_penicillin">mold killing bacteria on his petri dish</a>. Instead of discarding the contaminated sample (as protocol might suggest), he felt an intuitive pull to study it further. This moment of curiosity and intuition led to the discovery of antibiotics.</p><p>Each of these breakthroughs shares a common element: they weren't just about the data. They were about human emotions&#8212;anger, compassion, curiosity, and intuition&#8212;driving scientists to pursue paths that pure logic might have dismissed.</p><h2>Why AI Stumbles Where Humans Leap</h2><p>When your entire universe consists of numbers, equations, graphs, and simulations, it's easy to assume everything works the same way. But humans collect and process intelligence differently than computers do. Our intelligence is filtered through lived experience, colored by countless interactions we could never fully articulate or even consciously remember.</p><p>Consider these everyday examples:</p><p>A chef taste-testing a dish might experience a sudden flash of a childhood meal memory, inspiring the addition of an unexpected ingredient that transforms the recipe.</p><p>A painter might work what appears to be a misguided brushstroke into a brilliant new design direction that no algorithm would have suggested.</p><p>A musician might hear a melody and instinctively hum a specific chord progression because of an emotional connection to a song from their past.</p><p>What makes these decisions meaningful is that they could only have come from specific individuals with specific experiences. Truly unique results require unique data points&#8212;not just more data, but data filtered through human experience.</p><h2>Intuition isn&#8217;t Knowledge</h2><p>Your intuition isn't just about raw knowledge&#8212;it's about how your personal history shapes your perception of the present moment. AI can simulate logic and pattern recognition with impressive accuracy, but it cannot feel the significance of a moment the way a human can.</p><p>That's why the most powerful serendipitous discoveries&#8212;especially in areas involving sensory experience, emotion, and intuition&#8212;will continue to come from humans rather than AI.</p><p>The most important breakthroughs often don't follow a straight line of logical progression. They come from frustration, passion, and that distinctly human ability to say, "To hell with convention&#8212;I know I'm right."</p><p>The next time an AI tells you the statistically optimal path forward, remember Barry Marshall and his beaker of bacteria. Sometimes the greatest leaps forward come from that uniquely human place: the willingness to take a risk because you're just too damn angry to do anything else.</p><p>As always I&#8217;d love to hear your thoughts.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.sudosynthesis.dev/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 High Tech - Low Life! 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>