<?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[The Building Machine]]></title><description><![CDATA[On building.]]></description><link>https://thebuildingmachine.com</link><image><url>https://substackcdn.com/image/fetch/$s_!7_rJ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2b4e9e-fe75-48db-bc9f-adca32611f33_256x256.png</url><title>The Building Machine</title><link>https://thebuildingmachine.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 22 Oct 2026 05:33:16 GMT</lastBuildDate><atom:link href="https://thebuildingmachine.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Calvin Grunewald]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thebuildingmachine@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thebuildingmachine@substack.com]]></itunes:email><itunes:name><![CDATA[Calvin Grunewald]]></itunes:name></itunes:owner><itunes:author><![CDATA[Calvin Grunewald]]></itunes:author><googleplay:owner><![CDATA[thebuildingmachine@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thebuildingmachine@substack.com]]></googleplay:email><googleplay:author><![CDATA[Calvin Grunewald]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stet: Shotgunning an Editor My Agents Can Drive]]></title><description><![CDATA[An example of building personal software.]]></description><link>https://thebuildingmachine.com/p/stet-shotgunning-an-editor-my-agents</link><guid isPermaLink="false">https://thebuildingmachine.com/p/stet-shotgunning-an-editor-my-agents</guid><dc:creator><![CDATA[Calvin Grunewald]]></dc:creator><pubDate>Wed, 21 Oct 2026 18:41:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!88r8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.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_!88r8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!88r8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png 424w, https://substackcdn.com/image/fetch/$s_!88r8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png 848w, https://substackcdn.com/image/fetch/$s_!88r8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!88r8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!88r8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png" width="2048" height="1360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1360,&quot;width&quot;:2048,&quot;resizeWidth&quot;:2048,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A Victorian writer keeps his quill while a small brass robot pins notes in the manuscript's margin beside a struck line marked \&quot;stet\&quot;. Caption: Let it stand.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A Victorian writer keeps his quill while a small brass robot pins notes in the manuscript's margin beside a struck line marked &quot;stet&quot;. Caption: Let it stand." title="A Victorian writer keeps his quill while a small brass robot pins notes in the manuscript's margin beside a struck line marked &quot;stet&quot;. Caption: Let it stand." srcset="https://substackcdn.com/image/fetch/$s_!88r8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png 424w, https://substackcdn.com/image/fetch/$s_!88r8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png 848w, https://substackcdn.com/image/fetch/$s_!88r8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!88r8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc02ff455-83c5-4dca-b14d-5e73afb10961_2048x1360.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 built a markdown editor with about an hour of my own time. It's heavily inspired by iaWriter with my own preferences baked in. It's called <a href="https://github.com/ArchAstro/stet">Stet</a>, it's open source (free!), and I'm writing this post in it. Claude is in here too: it wrote this draft into an open tab through Stet's agent interface.</p><p>I wrote this post to share two building techniques:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thebuildingmachine.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Building Machine! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ol><li><p><strong>Shotgun prompting.</strong> I didn't engineer prompts. I fired off what I wanted, fast and loose, in whatever words came out, and kept firing until I was satisfied. You could also call this <strong>dumb prompting</strong>.</p></li><li><p><strong>A mechanism that lets the agent drive.</strong> Stet has an interface that lets an agent read, edit, operate and screenshot the editor. That's what let Claude check its own work, and what lets it write alongside me now.</p></li></ol><p>Here's every prompt I typed, in order, with timing:</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;927afe7a-ed14-412d-b50a-e04523c1c715&quot;,&quot;duration&quot;:null}"></div><p>Every prompt that built Stet, in order, on a clock of my hands-on time: 72 short, typo-ridden messages adding up to about 56 minutes.</p><h2>What it is</h2><p><em>Stet</em> is the proofreader's mark for "let it stand". You write it next to a correction you want ignored, and put dots under the original words. It felt right for an editor built around reviewing suggestions.</p><ol><li><p><strong>It's fast.</strong> The core is Rust and the text is drawn on the GPU. A keystroke reaches a finished frame in 0.07 ms on a small note and 0.6 ms on a one-megabyte document with 1,800 suggestions in it.</p></li><li><p><strong>It shows your source.</strong> Markdown keeps its markers, dimmed so the words come first. There's no preview pane.</p></li><li><p><strong>It has real vim.</strong> Registers, macros, block visual, <code>:s</code>.</p></li><li><p><strong>Review is built in.</strong> Suggestions are <a href="https://github.com/CriticMarkup/CriticMarkup-toolkit">CriticMarkup</a> in the text, so they survive git, email and every other tool.</p></li><li><p><strong>It has a margin.</strong> Every document gets a scratch pane for research notes, and a note can be pinned beside the paragraph it's about.</p></li><li><p><strong>Agents work beside you.</strong> More on this below.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qn3g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qn3g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!qn3g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!qn3g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!qn3g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qn3g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png" width="2560" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1600,&quot;width&quot;:2560,&quot;resizeWidth&quot;:2560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Stet with an essay on the left and the margin on the right: notes pinned beside the sentences they belong to.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Stet with an essay on the left and the margin on the right: notes pinned beside the sentences they belong to." title="Stet with an essay on the left and the margin on the right: notes pinned beside the sentences they belong to." srcset="https://substackcdn.com/image/fetch/$s_!qn3g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!qn3g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!qn3g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!qn3g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b120c37-f576-4e64-a57c-191550917df4_2560x1600.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>1. Shotgun prompting</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Pp6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Pp6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 424w, https://substackcdn.com/image/fetch/$s_!3Pp6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 848w, https://substackcdn.com/image/fetch/$s_!3Pp6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!3Pp6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Pp6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png" width="2048" height="1360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1360,&quot;width&quot;:2048,&quot;resizeWidth&quot;:2048,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A Victorian inventor fires a blunderbuss of paper prompts across a workshop; most scatter, and brass robots catch the few that land and bolt them onto the machine. Caption: Some of them were bound to land.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A Victorian inventor fires a blunderbuss of paper prompts across a workshop; most scatter, and brass robots catch the few that land and bolt them onto the machine. Caption: Some of them were bound to land." title="A Victorian inventor fires a blunderbuss of paper prompts across a workshop; most scatter, and brass robots catch the few that land and bolt them onto the machine. Caption: Some of them were bound to land." srcset="https://substackcdn.com/image/fetch/$s_!3Pp6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 424w, https://substackcdn.com/image/fetch/$s_!3Pp6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 848w, https://substackcdn.com/image/fetch/$s_!3Pp6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!3Pp6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ca7b45-8ef9-4657-a6c7-47152aac98da_2048x1360.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 is the first prompt for making Stet:</p><blockquote><p>I want a beautiful/minimal/x-platform markdown writer similar to ia writer just with the core written in rust, any platform os stuff abstracted away (should run windowed), support for vim key bindings, images, etc. all markdown features. also support for suggestion mode (see the archdev task epic for this on firstlanding). should also be themable (see themes on archdev). needs to be fast as hell and reliable.</p></blockquote><p>After that I didn't write specs. I just kept asking:</p><ol><li><p>"make it faster"</p></li><li><p>"yes, do it"</p></li><li><p>"give it a better fucking name and branding"</p></li><li><p>"you can't manipulate things with your ctl skill?"</p></li><li><p>"make sure you can test this shit"</p></li><li><p>"jdone"</p></li><li><p>"try again"</p></li><li><p>"make it public and lock it down"</p></li></ol><p>"make it faster" took a one-megabyte document from 5.1 ms per keystroke to 0.6 ms. "jdone" was me trying to type "done" after pasting the wrong Substack cookie. "try again" produced a live Substack draft.</p><p>By the numbers:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">|                                                                             |                        |
| --------------------------------------------------------------------------- | ---------------------- |
| Prompts                                                                     | 72                     |
| My hands-on time                                                            | about 56 minutes       |
| Claude's working time                                                       | about 4 hours          |
| Median prompt                                                               | about 56 characters    |
| Words I typed, in total                                                     | 1,083                  |
| Lines of Rust                                                               | 27,241                 |
| Tests                                                                       | 170                    |
| My time to v0.2.0 (Mac app, DMG, CI on three OSes, the rebrand, the margin) | 22 minutes, 29 prompts |
| Times I typed "commit and push"                                             | 7                      |
|                                                                             |                        |</code></pre></div><p>Shotgun prompting means I spend shots; thought is all implicit or the &#8220;thinking fast&#8221; kind. There's no role-play, no XML, no rubric, no fancy skills, and no 2,000-word plan. Each prompt is the next thing I want or the next thing that's wrong, typed the way I'd say it to an engineer sitting next to me (well maybe with less cursing). If the result is off, I say so and go again. Working this way on these types of tools lets me multi-task and focus my real attention on other work that matters.</p><h2>2. Building the system that lets the agent drive</h2><p>The reason I built Stet at all was one prompt, eight minutes in:</p><blockquote><p>i need to basically have a skill that lets my agents communciate and manipulate the markdown file without fucking up my flow</p></blockquote><p>Every editor I tried broke when an agent touched the document. Or even worse, the agent could never touch the document. Some editing tools build in their own agents and those agents often suck. I very much believe that the future of software is designing it to be used by agents more so than humans. I even tried using vim with an agent just editing the markdown file on disk. Even if I did get an editor to work with my agent of choice, the experience wasn't good: text jumps around and I have no idea what the agent changed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hOcJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hOcJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 424w, https://substackcdn.com/image/fetch/$s_!hOcJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 848w, https://substackcdn.com/image/fetch/$s_!hOcJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!hOcJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hOcJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png" width="2048" height="1360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1360,&quot;width&quot;:2048,&quot;resizeWidth&quot;:2048,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A Victorian writer types on undisturbed while, behind a partition, a brass robot works a panel of levers labelled read, suggest, keys, click and shot, peering over through a periscope and slipping a card into his suggestions tray. Caption: It had its own way in.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A Victorian writer types on undisturbed while, behind a partition, a brass robot works a panel of levers labelled read, suggest, keys, click and shot, peering over through a periscope and slipping a card into his suggestions tray. Caption: It had its own way in." title="A Victorian writer types on undisturbed while, behind a partition, a brass robot works a panel of levers labelled read, suggest, keys, click and shot, peering over through a periscope and slipping a card into his suggestions tray. Caption: It had its own way in." srcset="https://substackcdn.com/image/fetch/$s_!hOcJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 424w, https://substackcdn.com/image/fetch/$s_!hOcJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 848w, https://substackcdn.com/image/fetch/$s_!hOcJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!hOcJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82225133-7136-4b71-9c9a-81b4ea897969_2048x1360.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So Stet has <code>stet ctl</code>, a small command-line interface to the running window:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;sh&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-sh">stet ctl read                                   # the live, unsaved text
stet ctl suggest --old "teh" --new "the"        # a suggestion I accept or reject
stet ctl edit --margin --at end --text "..."    # research notes into the margin
stet ctl wait --name Claude                     # take requests I send from inside the editor</code></pre></div><p>None of it moves my cursor, changes my mode or steals focus. Suggestions show up inline, and I accept them or let the original stand:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aeN8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aeN8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!aeN8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!aeN8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!aeN8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!aeN8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png" width="2560" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1600,&quot;width&quot;:2560,&quot;resizeWidth&quot;:2560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A suggested replacement under the cursor, with the actions menu offering to accept or reject it.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A suggested replacement under the cursor, with the actions menu offering to accept or reject it." title="A suggested replacement under the cursor, with the actions menu offering to accept or reject it." srcset="https://substackcdn.com/image/fetch/$s_!aeN8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!aeN8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!aeN8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!aeN8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b20eeee-e225-4813-ac2d-c25c55920faf_2560x1600.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>That was the plan, but it required a few more shotgun blasts to get right. The best part came from two annoyed questions, 17 minutes in:</p><ol><li><p>"why can't you see stuff?" Claude couldn't drive my desktop. It had no Accessibility permission, and the screen was locked.</p></li><li><p>"you can't manipulate things with your ctl skill?" By my next prompt, <code>stet ctl</code> had grown <code>keys</code>, <code>type</code>, <code>click</code> and <code>shot</code>.</p></li></ol><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;sh&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-sh">stet ctl keys "&lt;D-/&gt;"          # press keys, in vim notation
stet ctl click 320 200         # click in the window
stet ctl shot /tmp/stet.png    # see exactly what the window shows</code></pre></div><p>From then on, Claude (or choose your own agent) could open a menu, click a table, take a screenshot and look at it. The app tests itself through its own agent interface. That's what makes shotgun prompting work: a miss stays cheap when the agent checks where it landed. When I said "make sure you can test this shit", Claude didn't hand me a checklist. It drove the real window, checked the result and fixed what it saw. I didn't have to spend time checking the work.</p><p>It's paid off for writing as much as building:</p><ol><li><p><strong>This post.</strong> Claude read my earlier posts for voice, wrote the draft into an open tab with <code>stet ctl edit</code>, and pinned its sources in the margin beside the paragraphs they support. I only had to edit.</p></li><li><p><strong>My last essay.</strong> Claude found the video, my tweets and the framework images and put them in while I kept writing.</p></li><li><p><strong>Requests from inside the editor.</strong> I select a sentence, press a shortcut, type "tighter", and a suggestion comes back.</p></li></ol><p>An agent editing your document is only useful if it keeps its hands off your cursor, and an agent building your software is only useful if it can see what it built. <code>stet ctl</code> does both.</p><h2>A few more things it does</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qPIt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qPIt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!qPIt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!qPIt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!qPIt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qPIt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png" width="2560" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1600,&quot;width&quot;:2560,&quot;resizeWidth&quot;:2560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The command menu filtered by \&quot;sugg\&quot;.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The command menu filtered by &quot;sugg&quot;." title="The command menu filtered by &quot;sugg&quot;." srcset="https://substackcdn.com/image/fetch/$s_!qPIt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!qPIt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!qPIt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!qPIt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517b85b1-b81b-45e4-b3d2-368f3038ac13_2560x1600.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>One menu for everything.</strong> <code>&#8984;/</code> lists every command with its shortcut, the markdown you can insert and the vim keys.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AspX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AspX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!AspX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!AspX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!AspX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!AspX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png" width="2560" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1600,&quot;width&quot;:2560,&quot;resizeWidth&quot;:2560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A picture brought forward over the dimmed document, with a toolbar of retouching tools.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A picture brought forward over the dimmed document, with a toolbar of retouching tools." title="A picture brought forward over the dimmed document, with a toolbar of retouching tools." srcset="https://substackcdn.com/image/fetch/$s_!AspX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!AspX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!AspX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!AspX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23b3572c-b053-4e2a-8fe1-74e65b851726_2560x1600.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Retouch pictures in place.</strong> Crop, draw arrows, boxes and text, or redact. Agents get the same tools through <code>stet ctl annotate</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_!x0dW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x0dW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!x0dW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!x0dW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!x0dW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!x0dW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png" width="2560" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1600,&quot;width&quot;:2560,&quot;resizeWidth&quot;:2560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A markdown table drawn as an aligned grid.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A markdown table drawn as an aligned grid." title="A markdown table drawn as an aligned grid." srcset="https://substackcdn.com/image/fetch/$s_!x0dW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!x0dW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!x0dW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!x0dW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22bbcce-93f4-43bd-8843-8d491fde3486_2560x1600.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Tables as a grid.</strong> Pipes become rules and the columns line up, but every character is still the source.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4ynT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4ynT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!4ynT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!4ynT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!4ynT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4ynT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png" width="2560" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1600,&quot;width&quot;:2560,&quot;resizeWidth&quot;:2560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Publish to Substack card, asking for the title and audience.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Publish to Substack card, asking for the title and audience." title="The Publish to Substack card, asking for the title and audience." srcset="https://substackcdn.com/image/fetch/$s_!4ynT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!4ynT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!4ynT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!4ynT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f48960f-7c50-403b-906d-acfe629fd4cb_2560x1600.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Publish to Substack.</strong> <code>:publish</code> makes a draft with your pictures uploaded. Substack has no public API, so a subagent worked out the one behind its editor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Im5u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Im5u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!Im5u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!Im5u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!Im5u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Im5u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png" width="2560" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1600,&quot;width&quot;:2560,&quot;resizeWidth&quot;:2560,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The essay in the dark stet-ink theme with a highlighted Rust code block.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The essay in the dark stet-ink theme with a highlighted Rust code block." title="The essay in the dark stet-ink theme with a highlighted Rust code block." srcset="https://substackcdn.com/image/fetch/$s_!Im5u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 424w, https://substackcdn.com/image/fetch/$s_!Im5u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 848w, https://substackcdn.com/image/fetch/$s_!Im5u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!Im5u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbf73fe-e806-4ccb-978c-8eaad5fbb98a_2560x1600.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Code in about 200 languages</strong>, in fifteen themes. This is <code>stet-ink</code>, the dark house theme.</p><h2>The video was shotgunned too</h2><p>The film at the top was made with <a href="https://github.com/ArchAstro/clapper">Clapper</a>, our open-source framework for making videos in React. The score is code as well: sampled upright piano, bass and drums, written as notes in TypeScript.</p><ol><li><p>"use clapper to animate the prompting to get to stet"</p></li><li><p>"make sure the music / sound is not fucking stupid"</p></li><li><p>"get rid of the commit part of the video - show all the prompts"</p></li><li><p>"update the video to reflect wall time"</p></li></ol><h2>Back to personal software</h2><p>A month ago I wrote <a href="https://thebuildingmachine.com/p/personal-software-my-new-bad-habit">Personal Software: My New Bad Habit</a>: instead of adopting tools, I build exactly the one I need. Stet is the clearest example of that habit so far.</p><ol><li><p><strong>I can.</strong> It took an hour of my time.</p></li><li><p><strong>It's useful.</strong> I write in it every day, and so do my agents.</p></li><li><p><strong>It's fun.</strong> I got to poke at GPU text rendering, vim's stranger corners and what Substack's editor actually sends over the wire.</p></li><li><p><strong>It's personal.</strong> Nobody else asked for a Substack button. There's a fish command, <code>blog</code>, that opens a new post in Stet because that's how I start writing.</p></li></ol><p>The objections from that post hold up too. On <strong>maintenance</strong>: today's v0.3.0 release failed its own checks on six new security advisories in the TLS libraries. Claude patched them, re-ran the checks and shipped, and all I typed was "and do the latest release". On <strong>triviality</strong>: an hour of my time bought 27,000 lines of Rust, 170 tests, CI on three operating systems and signed build provenance. That isn't trivial to me.</p><p>Personal software used to be limited by how much time you had. With shotgun prompting, the limit is how fast you can say what you want and whether the agent can see when it's wrong. The first part is up to you. For the second part, build the agent a way in.</p><h2>Try it</h2><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;sh&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-sh">curl -fsSL https://raw.githubusercontent.com/ArchAstro/stet/main/install.sh | sh</code></pre></div><ol><li><p><strong>Source:</strong> <a href="https://github.com/ArchAstro/stet">github.com/ArchAstro/stet</a>, MIT</p></li><li><p><strong>Downloads:</strong> <a href="https://github.com/ArchAstro/stet/releases/tag/v0.3.0">v0.3.0 for macOS, Linux and Windows</a></p></li><li><p><strong>The agent skill:</strong> the installer adds a skill so Claude can use <code>stet ctl</code> for you</p></li><li><p><strong>The video framework:</strong> <a href="https://github.com/ArchAstro/clapper">github.com/ArchAstro/clapper</a></p></li></ol><p>If you find a bug, open an issue. My agents will probably fix it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thebuildingmachine.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Building Machine! 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[I did a thing...]]></title><description><![CDATA[My wife thinks I&#8217;m crazy for inviting 50+ strangers from the technical community to have 1:1s]]></description><link>https://thebuildingmachine.com/p/i-did-a-thing</link><guid isPermaLink="false">https://thebuildingmachine.com/p/i-did-a-thing</guid><dc:creator><![CDATA[Calvin Grunewald]]></dc:creator><pubDate>Wed, 30 Sep 2026 16:16:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6jVH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I posted this on X, Threads, and LinkedIn last week:</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/CalvinGrunewald/status/2103596344241729879?s=20&quot;,&quot;full_text&quot;:&quot;Hey everyone! If you don&#8217;t know me or my background, a large portion of my 15+ year career at companies like MSFT, FB, and Stripe has been building products and platforms for developers. Obviously, everything involving developers is now very different. So I&#8217;d love to chat with&#8230;&quot;,&quot;username&quot;:&quot;CalvinGrunewald&quot;,&quot;name&quot;:&quot;Calvin Grunewald&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/2093393722239238144/XJUFuKIl_normal.jpg&quot;,&quot;date&quot;:&quot;2026-09-25T21:23:46.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:18,&quot;retweet_count&quot;:3,&quot;like_count&quot;:108,&quot;impression_count&quot;:41914,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:false}" data-component-name="Twitter2ToDOM"></div><p><strong>tl;dr;</strong> I put a call out for folks to schedule a 30 min 1:1 with me to talk about their backgrounds, agentic workflows, and anything else on their mind. I shared a calendar link that had my entire calendar open on it. Within 30 minutes, after seeing the pace of bookings, I realized this was a mistake and locked things down. The interest was beyond my expectation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6jVH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6jVH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp 424w, https://substackcdn.com/image/fetch/$s_!6jVH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp 848w, https://substackcdn.com/image/fetch/$s_!6jVH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp 1272w, https://substackcdn.com/image/fetch/$s_!6jVH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6jVH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;raw media image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="raw media image" title="raw media image" srcset="https://substackcdn.com/image/fetch/$s_!6jVH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp 424w, https://substackcdn.com/image/fetch/$s_!6jVH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp 848w, https://substackcdn.com/image/fetch/$s_!6jVH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.webp 1272w, https://substackcdn.com/image/fetch/$s_!6jVH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fc1bb3-02f6-45ca-ad09-56e269a0b332_1920x1072.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 told my wife I did this, she looked at me like I&#8217;m crazy. </p><blockquote><p>Wife: &#8220;You&#8217;re talking to strangers on the internet!?!&#8221;</p><p>Me: &#8220;Yes&#8221;</p><p>Wife: &#8220;Why?&#8221;</p><p>Me: &#8220;Research. I want to know who&#8217;s using AI and how.&#8221;</p><p>Wife: &#8220;What if they do weird stuff?&#8221;</p><p>Me: &#8220;Then I&#8217;ll hang up the call.&#8221;</p><p>Wife: &#8220;&#8230;&#8221;</p></blockquote><p>I don&#8217;t think I convinced her this was a good idea.</p><p>I&#8217;m now on day 3 of the interviews with another week and a half to go. I&#8217;ve talked to about 15 people so far and every single conversation was great. The amount of diversity in background and workflow was aligned with my hypothesis going into this, and at the same time, so many of these folks were inspiring to talk to! AI and agentic coding in particular is changing the trajectory of lives and companies.</p><p>Also, in case you were wondering, everyone is super normal and professional. </p><p>I plan on sharing a lot more about what I&#8217;m learning and sharing over the next couple of weeks, and then I&#8217;ll publish a full report on what I learned after the conversations are done. Definitely stay tuned for more!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thebuildingmachine.com/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://thebuildingmachine.com/subscribe?"><span>Subscribe now</span></a></p><p>PS. I know I still owe you an update on my agentic workflow. I&#8217;m working on it. There is a lot to cover.</p>]]></content:encoded></item><item><title><![CDATA[Personal Software: My New Bad Habit]]></title><description><![CDATA[I just released a new open source tool called Clapper. It lets you generate videos by writing React code. It is not unique; other software tools like it exist. I built it anyway.]]></description><link>https://thebuildingmachine.com/p/personal-software-my-new-bad-habit</link><guid isPermaLink="false">https://thebuildingmachine.com/p/personal-software-my-new-bad-habit</guid><dc:creator><![CDATA[Calvin Grunewald]]></dc:creator><pubDate>Mon, 14 Sep 2026 22:45:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nNvm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>I just released a new open source tool called <a href="https://clapper.archastro.tryintern.dev/">Clapper</a>. It lets you generate videos by writing React code. It is not unique; other software tools like it exist. I built it anyway.</em></p><p>I developed a pretty bad habit since coding assistants have gotten to be so good. Instead of finding existing tools or open source software and reusing it, I just build whatever I need, from scratch.</p><p>Why do I do this? Well, there are a few reasons:</p><ol><li><p><strong>I can.</strong> I&#8217;ve been in the industry long enough that I have a pretty good idea of how to build most types of software and with agents there&#8217;s basically no barrier to doing so.</p></li><li><p><strong>It&#8217;s useful.</strong> Whenever I reach for a tool, it&#8217;s because I have a particular problem. When I build my own piece of software to solve that problem, it&#8217;s useful. I now can solve this problem. Maybe I can solve adjacent problems and maybe other people have the same problem and will find my software useful.</p></li><li><p><strong>It&#8217;s fun.</strong> Now what does fun mean? Well if you read the book <em><a href="https://www.amazon.com/Theory-Game-Design-Raph-Koster/dp/1449363210/ref=sr_1_1?adgrpid=191272678990&amp;dib=eyJ2IjoiMSJ9.LaRJ9dCppTBLQukkB54_kzXpT8mtRqQwyvyUmhpGGv-OsGMPhlHgQOqbSkYdK_Un4YGb11-58IM5wYNwcvntDlkrDsYlUoGjvtvGSbr0z-v-14FuFBCARmdfZ2XxSnRQ46sBBBJY5Nt05rlywZx1FxRXq68ajY2HMSs_nM_r5WWjmzWk2AEEtR6ZqFsLnT-CiaRGWTyM_tUOR9Pi66goWwxWUdXFT5NLOLsWPa-MrcY.VJ5gbI4Z5JmUZ7Zb9Qc0rSGKT2R0XyQbUEBvlxhexz0&amp;dib_tag=se&amp;hvadid=782455620695&amp;hvdev=c&amp;hvexpln=0&amp;hvlocphy=9030097&amp;hvnetw=g&amp;hvocijid=17284828987574342617--&amp;hvqmt=e&amp;hvrand=17284828987574342617&amp;hvtargid=kwd-298788679667&amp;hydadcr=22532_13531213_8302&amp;keywords=theory+of+fun&amp;mcid=76f32a217bd93ad093e6af8f8d9acc59&amp;qid=1789424380&amp;sr=8-1">Theory of Fun</a></em>, fun = learning and I definitely learn a lot by building things. It&#8217;s also just really interesting to see what you can create and how it works.</p></li><li><p><strong>It&#8217;s personal.</strong> I can make the software exactly how I want it. If I want a particular feature I can add it. If I don&#8217;t want a particular feature I don&#8217;t need to add it. As I use it, I can evolve it very quickly. Having total control of the software is extremely useful.</p></li></ol><p>Now there are plenty of arguments that even with amazing coding assistants, this is a bad thing to do. Let&#8217;s go through a few:</p><ol><li><p><strong>Maintenance.</strong> Now you have to maintain all this software.</p></li><li><p><strong>Focus.</strong> Doesn&#8217;t this take away your focus from other things you should be doing?</p></li><li><p><strong>Hubris.</strong> Do you really think you can build better software than people who have dedicated years to focusing on particular domain or type of application?</p></li><li><p><strong>Triviality.</strong> Does the software matter if it can be built so easily?</p></li></ol><p>Let&#8217;s discuss these one by one.</p><h2>Maintenance</h2><p>Maintenance is mostly solved with coding agents. It is fairly straightforward, either locally or on a server, to hook up a loop, look for GitHub issues, and for each GitHub issue spawn a sandbox, go address the issue, and merge it. Test suites help keep this process on track and ensure their are no regressions. You could even have your local coding agent build a workflow to do this for you with cron.</p><p>Also, this workflow really only matters when you make your software public. If the software is only ever for you, there&#8217;s not much difference between maintenance and just evolving it to work better for whatever use case you start it with. It has the same overhead as writing the software in the first place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nNvm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nNvm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!nNvm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!nNvm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!nNvm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!nNvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1239e900-4c46-43c5-ab45-5c6d8f9539da_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;:null,&quot;alt&quot;:&quot;Image preview&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image preview" title="Image preview" srcset="https://substackcdn.com/image/fetch/$s_!nNvm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!nNvm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!nNvm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!nNvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1239e900-4c46-43c5-ab45-5c6d8f9539da_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Focus</h2><p>Don&#8217;t you have a day job? Don&#8217;t you need to spend more of your time focused on your day job?</p><p>The thing with coding assistants is that, for side projects and for tools where you don&#8217;t really care about reading the code (provided it works for your particular use case and you can write a good test suite or set of evals to understand how well it works), the overall cognitive overhead is extremely low.</p><p>Maybe you spend 10 minutes typing up your problem, some high-level solution direction, and an example issue you want to solve. You then let the coding assistant go to town and direct it to work until it can actually solve that particular problem.</p><p>You can then give it adjacent problems or even ask it to generate adjacent samples and make sure it works on those as well. Some would call this loop engineering. The agent creates its own focus.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ja5B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ja5B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Ja5B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Ja5B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Ja5B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ja5B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_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;:null,&quot;alt&quot;:&quot;Image preview&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image preview" title="Image preview" srcset="https://substackcdn.com/image/fetch/$s_!Ja5B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Ja5B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Ja5B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Ja5B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb2c501-6bd4-4a8d-b46d-c3a1b45293aa_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Hubris</h2><p>What makes me think I can write any software I want and that it will be better than folks who have worked on that type of software for many years?</p><p>Well I don&#8217;t think my software will be better than theirs. They&#8217;re solving a much larger set of problems in that particular domain compared to me.</p><p>I do think that I&#8217;m much better suited to solve the problem that I have at hand than someone who&#8217;s built software to try to solve a much more generic view of that problem (and has to deal with things like the lowest common denominator of that problem).</p><p>And then let&#8217;s say I&#8217;m writing software in a domain I&#8217;m actually not an expert in. I would urge you to go back and look at my original reasoning. For this particular piece of software, doing it myself lets me learn that particular domain and makes it fun.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8WoM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8WoM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8WoM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8WoM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8WoM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!8WoM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39988458-966a-42b8-8809-5774f8be7058_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;:null,&quot;alt&quot;:&quot;Image preview&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image preview" title="Image preview" srcset="https://substackcdn.com/image/fetch/$s_!8WoM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8WoM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8WoM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8WoM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39988458-966a-42b8-8809-5774f8be7058_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Triviality</h2><p>There&#8217;s an argument that any software you can &#8220;vibe code&#8221; isn&#8217;t actually useful, is trivial, and doesn&#8217;t matter. I think that if the software doesn&#8217;t actually solve any problems, and you&#8217;re not building it for fun, and you&#8217;re just doing it to burn electricity, that&#8217;s probably the correct view.</p><p>But if the software solves a particular problem you have, then it matters. It&#8217;s not trivial, at least to you. Triviality is in the eye of the beholder.</p><p>If someone else has your same problem and they like your very simple, focused solution, then the software presumably isn&#8217;t trivial to them either.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x8_W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x8_W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!x8_W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!x8_W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!x8_W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!x8_W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0e03942-9a60-4763-a2a3-f75722c9387d_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;:null,&quot;alt&quot;:&quot;Image preview&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image preview" title="Image preview" srcset="https://substackcdn.com/image/fetch/$s_!x8_W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!x8_W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!x8_W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!x8_W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e03942-9a60-4763-a2a3-f75722c9387d_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><div><hr></div><p>So you see, most of the arguments that might have been completely valid before the era of coding assistants don&#8217;t really matter anymore.</p><p>I don&#8217;t really care if you think that my personal tool is useless. It was fun to build and it solved a problem. I can iterate it in whatever way I want. Over time it&#8217;ll become quite interesting. It might become complex in ways that are not really easy to vibe code.</p><p>In fact, this is how normal software is written before assistants: you start simple, you solve more problems and more problems and more problems, and you finally get something that is hard to replicate and does important jobs for people. </p><h2>Limits</h2><p>Now obviously, there are limits to this mindset. I haven&#8217;t vibe-coded my own operating system. When I need a database I use Postgres. I haven&#8217;t reinvented every distributed system out there just because I can.</p><p>No, there are certain problems in computer science where you really do want the system you adopt to be battle-tested and time-tested: operating systems, databases, distributed systems. These are the sorts of systems where you really do want that collective attention and wisdom, time spent hardening, to be the backbone of what you do.</p><p>The beauty of all this is that I could work on one of those things if I wanted to. I&#8217;d start simple, solve one narrow problem, and evolve it from there.</p><h2>Ending Where We Started</h2><p>If we return to Clapper and compare it against some alternatives out there, you can see where my opinion shows up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Mob!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Mob!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 424w, https://substackcdn.com/image/fetch/$s_!4Mob!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 848w, https://substackcdn.com/image/fetch/$s_!4Mob!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!4Mob!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Mob!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png" width="1456" height="863" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:863,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:212076,&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://thebuildingmachine.com/i/215426052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.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_!4Mob!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 424w, https://substackcdn.com/image/fetch/$s_!4Mob!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 848w, https://substackcdn.com/image/fetch/$s_!4Mob!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 1272w, https://substackcdn.com/image/fetch/$s_!4Mob!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b40bfe1-e426-435a-9288-2e92a2269fe1_1800x1067.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A simple text reveal scene, modeled the same way across three code to video tools.</figcaption></figure></div><p>I wanted Clapper to not just be a React to Video tool. I wanted it to be an opinionated DSL that makes video production as declarative as possible. It has many built in components for various animations, as well as a React DSL to fully compose music. My hypothesis is that by having a richer DSL rooted in video production, my agents will be able to more naturally produce really great looking scenes. I still need to prove this, but frankly, it doesn&#8217;t matter, because I built this tool for me. </p><p>And maybe, you&#8217;ll find it useful for you too. That&#8217;s the beauty of personal software.</p>]]></content:encoded></item><item><title><![CDATA[A Brief History of my Agentic Workflow]]></title><description><![CDATA[Learning how to keep up with the agents.]]></description><link>https://thebuildingmachine.com/p/a-brief-history-of-my-agentic-workflow</link><guid isPermaLink="false">https://thebuildingmachine.com/p/a-brief-history-of-my-agentic-workflow</guid><dc:creator><![CDATA[Calvin Grunewald]]></dc:creator><pubDate>Sat, 12 Sep 2026 22:35:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!S5GM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Beginnings</h2><p>I began experimenting with coding agents in March 2025, around the time Cursor entered the scene and became popular. Despite being in management for the last nine years of my career, I always found time to stay technical. Cursor being built on top of VSCode made it a natural introduction.</p><p>So, I began experimenting with Cursor and its $20 plan (and what a generous plan it was back then). A few things stood out to me. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thebuildingmachine.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Building Machine! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ol><li><p>The agent tab &#8212; you have a conversation about what you want to build in the side panel and the agent does it&#8212;was a game changer relative to the autocomplete tools that had come before. </p></li><li><p>The integrated code review  &#8212;  Cursor tied agent authored code to a hunk-based review, making it straightforward to validate the agent&#8217;s output and accept or reject it via a local code review workflow.</p></li></ol><p>I got into a groove with Cursor and really start to build. But I soon found myself opening multiple Agent tabs in one workspace to parallelize work. This is where the interface inside the IDE began to be troublesome: all of this concurrent work happened on a single checkout.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-Q5r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Q5r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!-Q5r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!-Q5r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!-Q5r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Q5r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A screenshot of the Cursor editor interface showing a dropdown menu under the \&quot;Plan\&quot; mode selection. The menu includes several AI assistant modes: Agent, Ask, Manual, Plan (currently selected), Teach, and Yolo. Each mode has a corresponding keyboard shortcut. The interface is dark-themed, and the selected model is \&quot;claude-3.7-sonnet\&quot;.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Cursor editor interface showing a dropdown menu under the &quot;Plan&quot; mode selection. The menu includes several AI assistant modes: Agent, Ask, Manual, Plan (currently selected), Teach, and Yolo. Each mode has a corresponding keyboard shortcut. The interface is dark-themed, and the selected model is &quot;claude-3.7-sonnet&quot;." title="A screenshot of the Cursor editor interface showing a dropdown menu under the &quot;Plan&quot; mode selection. The menu includes several AI assistant modes: Agent, Ask, Manual, Plan (currently selected), Teach, and Yolo. Each mode has a corresponding keyboard shortcut. The interface is dark-themed, and the selected model is &quot;claude-3.7-sonnet&quot;." srcset="https://substackcdn.com/image/fetch/$s_!-Q5r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!-Q5r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!-Q5r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!-Q5r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff423a74d-68ed-413c-9119-96aa362643d1_1920x1080.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Detail of Cursor 0.48&#8217;s chat tabs, March 2025. From <a href="https://cursor.com/changelog/0-48-x">Cursor&#8217;s official release demo</a>.</figcaption></figure></div><p>The arrival of Claude Code became a much more natural experience for me. I grew up programming in the terminal&#8212;first with Emacs and later Vim/Neovim&#8212;so having a TUI that could sit next to all my other terminal apps felt natural. It also made it easier to scale up code production: I could just <em>cd</em> into a new directory and launch a new Claude instance there. Of course, this was always possible with Cursor, but it didn&#8217;t feel as natural.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rx8D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rx8D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!rx8D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!rx8D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!rx8D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rx8D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:221557,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thebuildingmachine.com/i/215268481?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.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_!rx8D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!rx8D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!rx8D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!rx8D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf92c9ae-b32a-45e4-8807-aa9d70a435c5_1920x1080.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 Code&#8217;s original research-preview welcome screen, February 24, 2025. Source: <a href="https://www.anthropic.com/news/claude-3-7-sonnet">Anthropic&#8217;s launch announcement</a>.</figcaption></figure></div><p>I began running multiple Claude Code instances and doing work in parallel. My screen filled with terminals overlapping terminals. I switched to using Mac&#8217;s built-in virtual desktop feature. I moved different threads of work to different screens, but the keyboard navigation sucked, so I needed another solution. Around this time, I experimented with programmable, split, columnar keyboards. I don&#8217;t remember exactly why&#8212;I think I needed a new hobby or something. I bought a ZSA Moonlander (I later changed to the ZSA Voyager, which remains my favorite keyboard) and started messing with custom keybindings and macros for Neovim. I then discovered the beautiful world of home-row mods. </p><p>There must be a better way to manage all these damn windows!</p><p>I used window managers in the past, but it had been a while, so I started researching modern options for the Mac and discovered AeroSpace and the broader world of i3-style tiling window managers. This was the system I was looking for. I could customize keybindings and map different workspaces to different keys using mnemonics. Chrome would go to workspace <em>c</em>; all my coding workspaces would go to <em>1</em> through <em>9</em>. My home-row mods made managing all of this very easy. I could now switch context and jump between different threads of work with ease, never taking my hands off the keyboard.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;88ea287b-86eb-4e3a-af90-37a0acde8171&quot;,&quot;duration&quot;:null}"></div><p><em>AeroSpace&#8217;s workspace flyout, followed by Alt+number shortcuts between terminal windows. The flyout is enlarged and slowed to half spee; the window switching is real time.</em></p><p>As I scaled code production, I experimented with different ways to keep up with the agent and check its work. I really fell in love with Cursor&#8217;s hunk-based local code review, so this was the system I leaned into optimizing as I scaled up concurrent agents.</p><p>With Claude Code moving the agent to the terminal, I built out my Neovim config, planning to use it to replace Cursor&#8217;s built-in code review. I found Neogit to be the best fit for a review plugin and added some custom keybindings for reviewing and staging hunks in the editor. For a long time, my workflow was to have the agent write the code, review the hunks in Neogit, stage the ones I accepted, and then iterate with the agent on the ones that remained.</p><p>This worked well for getting quality code out of the agent with quick reviews, but of course, it didn&#8217;t scale as the number of agents increased. It became more difficult to contextualize the hunks or deal with changesets that were 1,000s of lines long. To help with this, I created a TUI review system called Filament (open sourcing soon), which implemented a much more opinionated form of review. Filament uses Treesitter to understand the semantic layout of your code, then overlays the diff hunks on top of the AST produced by Treesitter. You iterate through the hunks in a top-down, caller-to-callee fashion, using keyboard shortcuts to move through and annotate your code. It produces a review document you feed back to the agent for another iteration.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;f96fc690-c3db-4d50-a26e-716c32c2fd5d&quot;,&quot;duration&quot;:null}"></div><p><em>Navigating a real changeset in Filament. The overlay shows the keys I&#8217;m pressing.</em></p><h2>Going All-In on AI</h2><p>After Claude Code came out, time became blurry. I became addicted to this new way of building&#8212;likely my own version of AI psychosis&#8212;but I also realized that it was going to change everything about the industry. I needed to frontrun these changes. I transitioned roles at work, moving from an org lead back to an IC. Then, I decided to leave and cofound ArchAstro. I felt that the only way to really learn how to use these tools effectively, and to modernize myself, was to go all in. So I did.</p><p>With this system, and with the imperative to build fast and big with a lean startup team, I ramped up the number of agents and sessions. At some point, I added coding workspaces <em>q</em>, then <em>w</em>, then <em>e</em>. I used workspace <em>m</em> for main. For projects unrelated to my primary work, I used other bindings like <em>p</em> for projects. On each workspace, I ran two or three terminal instances: one for my agent, another for Neovim, and a third for general command-line work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S5GM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S5GM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 424w, https://substackcdn.com/image/fetch/$s_!S5GM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 848w, https://substackcdn.com/image/fetch/$s_!S5GM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 1272w, https://substackcdn.com/image/fetch/$s_!S5GM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!S5GM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png" width="1456" height="1018" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1018,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1807496,&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://thebuildingmachine.com/i/215268481?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.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_!S5GM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 424w, https://substackcdn.com/image/fetch/$s_!S5GM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 848w, https://substackcdn.com/image/fetch/$s_!S5GM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 1272w, https://substackcdn.com/image/fetch/$s_!S5GM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa910c2-6fba-4060-87e3-06a815bf1a4c_1509x1055.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 Cat in the Hat Comes Back (with Agents), by Dr Seuss</figcaption></figure></div><p>I worked this way for a while, and my productivity rose. But soon, I found myself needing more than 12 agents, and that&#8217;s when I got into trouble. I spent my time scanning through all the workspaces, looking to see what was blocked on me. I started forgetting what was on worktree 1 or 2 or 3. </p><div class="pullquote"><p>In my quest to maximize parallelism, I found chaos.</p></div><h3>Vibing on Mobile</h3><p>As an aside, on the way to building the workflow above, I experimented with mobile. I found videos online of people using an app called Termius with tmux to code with Claude on the go. Of course, to feed my addiction, I needed to try this. So I set up Tailscale, Mosh, tmux, and Termius and started to vibe from my phone. But for whatever reason, Termius sucked at scrolling with tmux, and it became a pain in the ass to use. Don&#8217;t get me wrong: I was still able to get a lot done, but it wasn&#8217;t a good experience.</p><h2>The Past 3 Months</h2><p>That brings us to the summer of 2026. I started seeing all these posts about a new tmux-like system called Herdr. I was a bit reluctant to check it out at first. For me, inertia tends to be high when it comes to building workflows and the muscle memory around them. Herdr clearly solved some important problems I was experiencing, so I checked it out.</p><p>The most important thing for me was the keyboard bindings. I used Codex to customize them to work similarly to my AeroSpace bindings without colliding. I mapped workspace switching to the same <em>0</em> through <em>9</em> system, using Ctrl and Alt bound to holds on <em>g</em> and <em>h</em>. I created shortcuts for creating tabs, switching agents, and so on. It took me a couple of weeks to get as fast with Herdr as I had been with AeroSpace, but I got there.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;71917d5c-4178-4825-b21a-6ede9c96e29e&quot;,&quot;duration&quot;:null}"></div><p><em>Switching between Herdr workspaces and agents, with my keyboard commands shown above.</em></p><p>The bigger unlock was discovering Moshi as a new mobile PTY app and witnessing how well it worked with Herdr. It solved all the usability issues with tmux and Termius. I could now run just as fast from my phone as I could from my computer. My productivity soared.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;3b41b61e-16e5-4c42-9002-a0d59e06b914&quot;,&quot;duration&quot;:null}"></div><p><em>Switching between Herdr workspaces from my phone in Moshi.</em></p><p>Once again, I my code review workflow evolved, especially for mobile. I began using GitHub Mobile much more for code review. I would comment on PRs, then jump back into Moshi to tell my agents to fix the comments. I created skills to help them monitor for changes. With the more capable models, I found myself spending much less time in Filament and Neogit. I ended up using GitHub much more because I could skip over inconsequential generated code and focus on the pieces that mattered most. GitHub&#8217;s file list was key for this.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;d54af8a9-239a-4198-91aa-f20b89abb0c6&quot;,&quot;duration&quot;:null}"></div><p><em>Opening a PR in GitHub Mobile, then asking the agent in Moshi what is blocking the merge.</em></p><p>My productivity increased once again, but my problems weren&#8217;t solved. I found myself struggling even more to keep track of everything. The agents were inconsistent about babysitting PR feedback, merge conflicts, and CI. I would look at a GitHub review and have no idea which worktree or agent was dealing with it. I was back to chaos.</p><p>So I started building more tools to solve those problems and arrived at the workflow I use today. </p><p>More on this next week!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thebuildingmachine.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Building Machine! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Welcome to The Building Machine ]]></title><description><![CDATA[An exploration in the intersection of learning, AI, management, and engineering.]]></description><link>https://thebuildingmachine.com/p/welcome-to-the-building-machine</link><guid isPermaLink="false">https://thebuildingmachine.com/p/welcome-to-the-building-machine</guid><dc:creator><![CDATA[Calvin Grunewald]]></dc:creator><pubDate>Fri, 28 Aug 2026 19:19:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3HIH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Welcome to The Building Machine.</span></p><p><span>This is my new Substack newsletter where I&#8217;ll share thoughts, opinions, feelings, vibes, rage bait, clickbait, engagement bait, fish bait, and maybe no bait at all about the evolution of software, engineering management, and what it means to work in this world that is been dramatically changing everyday due to A.I.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thebuildingmachine.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Building Machine! 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><span>So what is a building machine or rather what is THE building machine?</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3HIH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3HIH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3HIH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3HIH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3HIH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3HIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg" width="1086" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:1086,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:341215,&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://thebuildingmachine.substack.com/i/213182027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.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_!3HIH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3HIH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3HIH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3HIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598ff3d3-90c1-4318-a49e-e43dc64594fa_1086x724.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Leonardo da Vinci&#8217;s &#8220;building machine,&#8221; c. 1489 &#8212; a remarkably early vision of a machine that builds machines to build buildings.</figcaption></figure></div><ul><li><p><span>Is it me?</span></p></li><li><p><span>Is it this newsletter?</span></p></li><li><p>What is the building machine building?</p></li><li><p><span>Is it a fun riff on software factories, Loop Engineering, Graph Engineering, Hyper Graph Engineering, and Petri Nets that you see all over X? Well maybe not the last two but they&#8217;re coming.</span></p></li><li><p><span>Is it a rebrand of coding machine?</span></p></li><li><p><span>Is it one of those cool fucking robots that sit on the top of skyscrapers and builds more of the skyscraper?</span></p></li><li><p><span>Is it a new machine we&#8217;ve never seen before that builds the robots that sit on top of the skyscrapers and build more skyscrapers?</span></p></li></ul><p><span>I don&#8217;t actually know the answer to this question so I started this newsletter to find out. What does the concept of a building machine mean when AI is basically disrupting the entire software industry?</span></p><p><span>At the end of 2025, I left my big tech job running the Billing team at Stripe to start an AI-pilled, AI-first, super lean company. This was right around the time that Opus 4.5 dropped, a pivotal moment where everything around coding changed. </span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TOHN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TOHN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TOHN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TOHN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TOHN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TOHN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:754773,&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;:false,&quot;internalRedirect&quot;:&quot;https://thebuildingmachine.substack.com/i/213182027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.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_!TOHN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TOHN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TOHN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TOHN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28cde07-af96-472c-ac04-68201e56ad94_1792x1008.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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"><strong>Antonio Sant&#8217;Elia, </strong><em><strong>Study for a Self-Constructing City</strong></em><strong>, c. 1914 &#8212; a visionary metropolis of colossal machines building machines, where architecture rises as an instrument of industry, power, and perpetual construction.</strong></figcaption></figure></div><p><span>For me, the journey started before &#8220;the singularity.&#8221; As early as May of 2025, I began playing with Cursor and Claude Code. It became clear to me that the future of building software and running eng teams would change. Every month I spent in my current role, where all my time was spent in meetings, doing one-on-ones and supporting the team, was costing valuable time to learn and front-run the massive industrial change coming. </span></p><p><span>I only know a few people who made similar career choices around that time. They either left their big, org-lead roles to go back to ICs, forcing themselves to learn. Or they left their big tech jobs to become a solo builder or start a company. </span>If you look on X, you probably feel the opposite, that everybody&#8217;s doing this, but it&#8217;s certainly not true. <span>Even for folks who feel early or seem early, if you actually talk to them they say they&#8217;re behind. Certainly that&#8217;s how I feel. </span></p><p>It&#8217;s been 9 months since I left Stripe; I now spend nearly all of my time building. I have never built so much software and product in my entire life. To that end, I definitely feel like a Building Machine. At the same time, I don&#8217;t feel like a high functioning one. Steam comes out of my ears too often. My gears grind and efficiency drops after 5PM. Maintaining focus and context is harder than it&#8217;s ever been, and software is but a tiny part of what Building is in the most abstract sense. The rest of my team has their own challenges, and there are not a good set of interchangeable parts to really optimize the whole fleet.</p><p>I am still learning how to build The Building Machine, whatever it might turn out to be. And that is what makes this new world so much fun - there is so much to learn and do. I intend to use this newsletter to explore and share what I&#8217;m learning. I hope to learn from all of you as well, get feedback and compare notes. Ultimate, democratized AI should let all of us find our own Building Machines. So let&#8217;s build!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thebuildingmachine.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Building Machine! 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>