<?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[Refactoring: 🧵 Essays]]></title><description><![CDATA[Hard engineering / management topics, explained weekly in 2000 words]]></description><link>https://refactoring.fm/s/essays</link><image><url>https://substackcdn.com/image/fetch/$s_!CR5A!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b19138f-e653-496f-a117-a85305715dba_400x400.png</url><title>Refactoring: 🧵 Essays</title><link>https://refactoring.fm/s/essays</link></image><generator>Substack</generator><lastBuildDate>Wed, 29 Apr 2026 03:33:55 GMT</lastBuildDate><atom:link href="https://refactoring.fm/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Refactoring ETS]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[refactoring@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[refactoring@substack.com]]></itunes:email><itunes:name><![CDATA[Luca Rossi]]></itunes:name></itunes:owner><itunes:author><![CDATA[Luca Rossi]]></itunes:author><googleplay:owner><![CDATA[refactoring@substack.com]]></googleplay:owner><googleplay:email><![CDATA[refactoring@substack.com]]></googleplay:email><googleplay:author><![CDATA[Luca Rossi]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Introducing Tolaria 💧]]></title><description><![CDATA[A free & open source macOS app for managing markdown knowledge bases.]]></description><link>https://refactoring.fm/p/introducing-tolaria</link><guid isPermaLink="false">https://refactoring.fm/p/introducing-tolaria</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 22 Apr 2026 08:06:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XRY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, Luca here &#8212; the wait is over! After <a href="https://refactoring.fm/p/updates-to-my-ai-coding-workflow">teasing it</a> during the last month, today I am making <a href="http://tolaria.md/">Tolaria</a> available to everyone, free and open source. You can find it <a href="https://github.com/refactoringhq/tolaria">here</a> and download the latest release.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/refactoringhq/tolaria&quot;,&quot;text&quot;:&quot;Check out Tolaria &#128167;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/refactoringhq/tolaria"><span>Check out Tolaria &#128167;</span></a></p><h2>What is Tolaria?</h2><p>Tolaria is a desktop app for Mac for managing <strong>markdown knowledge bases</strong>. In a way, it&#8217;s my own version of <a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f">Karpathy&#8217;s LLM wiki</a>.</p><p>I have a close circle of friends who have been using it over the past few weeks, and they use it to operate:</p><ul><li><p>Second brains and personal knowledge</p></li><li><p>Company docs as context for AI</p></li><li><p>OpenClaw / assistants memory and procedures</p></li></ul><p>Personally, I use it to <strong>run my life and work</strong>.</p><p>I have a massive workspace of 10,000+ notes, which are the result of 6 years of Refactoring work + a ton of personal journaling and <em>second braining</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XRY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XRY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 424w, https://substackcdn.com/image/fetch/$s_!XRY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 848w, https://substackcdn.com/image/fetch/$s_!XRY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 1272w, https://substackcdn.com/image/fetch/$s_!XRY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XRY5!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png" width="1200" height="787.0879120879121" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:955,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:6315681,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XRY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 424w, https://substackcdn.com/image/fetch/$s_!XRY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 848w, https://substackcdn.com/image/fetch/$s_!XRY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 1272w, https://substackcdn.com/image/fetch/$s_!XRY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931c128f-2158-4eec-a282-d8c6cdb27137_3982x2612.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tolaria is the best app I have ever used for managing markdown knowledge bases.</figcaption></figure></div><p>Earlier this year I decided to migrate everything from Notion to markdown files for a variety of reasons (speed, control, better AI work), but I missed an app that allowed me to operate these files with a UX that fit my brain &#8212; so I built it! </p><p>So, this newsletter will explain a few things:</p><ul><li><p>&#128249; <strong>Walkthroughs </strong>&#8212; how I use Tolaria for various stuff.</p></li><li><p><strong>&#127744; Tolaria + Refactoring</strong> &#8212; how Tolaria fits the broader Refactoring picture, and my life.</p></li><li><p><strong>&#11088; Tolaria Principles</strong> &#8212; things I believe in, on top of which Tolaria is built.</p></li><li><p><strong>&#128295; How Tolaria works</strong> &#8212; the main parts.</p></li><li><p><strong>&#128300; What you will find in the repo</strong> &#8212; interesting stuff you may look at.</p></li></ul><p>Also, as I wrote before, I commit to keeping you posted about my AI coding workflow, and I will use Tolaria and its repo as a <em>living artifact</em> of how I create software with AI, trying to staying on the frontier of what&#8217;s possible, trying new things, and so on.</p><p>Tolaria will stay free forever, but if you want to <strong>stay posted with these explorations</strong> and support my work, consider subscribing to the paid version of Refactoring &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/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://refactoring.fm/subscribe?"><span>Subscribe now</span></a></p><p>p.s. we&#8217;ve recently launched our <a href="https://refactoring.fm/p/introducing-the-ai-club">AI Club</a> and will run the first edition next month. I&#8217;d love to see you there!</p><div><hr></div><h2>&#128249; Walkthroughs</h2><p>Before you move further, you can find some Loom walkthroughs below &#8212; they are short and to the point:</p><ul><li><p><a href="https://www.loom.com/share/bb3aaffa238b4be0bd62e4464bca2528">How I Organize My Own Tolaria Workspace</a></p></li><li><p><a href="https://www.loom.com/share/dffda263317b4fa8b47b59cdf9330571">My Inbox Workflow</a></p></li><li><p><a href="https://www.loom.com/share/8a3c1776f801402ebbf4d7b0f31e9882">How I Save Web Resources into Tolaria</a></p></li></ul><p>I recorded them because I think it&#8217;s way easier to see things in action than to read long explainers. So if you like what you see, you can continue reading below &#128071;</p><div><hr></div><h2>&#127744; Tolaria + Refactoring</h2><p>In this time of rapid change, deciding how I spend my time feels like a big deal. Tolaria is taking <em>a lot</em> of it, so it needs to be worth it, and I think it is.</p><p>With Refactoring I write about <strong>how to create good software</strong> &#8212; that&#8217;s how I literally make a living. Over the last few years I have done that largely by 1) doing research and 2) talking with the smartest people I knew.</p><p>With everything that&#8217;s happening with AI, this is not enough anymore.</p><p>Everyone needs <strong>hands-on work</strong> to understand what&#8217;s really happening, and form opinions that are not mediated by other people&#8217;s experience.</p><p>Also, in order to make for good evidence, such work needs to be <em>ambitious</em>. Side projects are nice, but can we build <em>real</em>, complex software with AI, without writing a single line of code? What about without <em>reading</em> it? Does it scale? Or do we <em>drift</em> into chaos?</p><p>So far, it scales. </p><p>Tolaria is not <em>massive</em>, but at this point it is not small either. By the numbers:</p><ul><li><p>100K lines of code, in Rust + React.</p></li><li><p>1900+ commits</p></li><li><p>3000+ tests</p></li><li><p>70 ADRs</p></li></ul><p>I have written more about how I work on it in this <a href="https://refactoring.fm/p/updates-to-my-ai-coding-workflow">recent piece</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AnY2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AnY2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 424w, https://substackcdn.com/image/fetch/$s_!AnY2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 848w, https://substackcdn.com/image/fetch/$s_!AnY2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 1272w, https://substackcdn.com/image/fetch/$s_!AnY2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AnY2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png" width="1456" height="404" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:404,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61989,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.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_!AnY2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 424w, https://substackcdn.com/image/fetch/$s_!AnY2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 848w, https://substackcdn.com/image/fetch/$s_!AnY2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 1272w, https://substackcdn.com/image/fetch/$s_!AnY2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1b074e-0b95-41a1-9a0b-232431d670fe_1556x432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My incredible (for me) Github graph for 2026. My most prolific year before this one had 900 commits &#8212; for the full year.</figcaption></figure></div><p>So, my commitment with Tolaria is the following:</p><ul><li><p>I will keep it free &amp; open source forever.</p></li><li><p>I will run my life and business on it.</p></li><li><p>I will work 2+ hours / day on it to develop new things, fix problems, and make it useful for people other than myself.</p></li><li><p>I will do as much of the work as possible with AI, trying to <em>live in the future</em>.</p></li><li><p>I will keep you posted on Refactoring about this process.</p></li></ul><p>In a nutshell, the goal is to <strong>work on the frontier and report back to you</strong>.</p><div><hr></div><h2>&#11088; Principles</h2><p>So, what is Tolaria about? When I speak with friends, jokingly I say that it&#8217;s like Notion, but offline, and for actual files. This is not 100% correct, but it&#8217;s a good starting point.</p><p>Tolaria is based on a simple belief: <strong>AI delivers the biggest benefits to those who are able to capture and organize context</strong> &#8212; whether it&#8217;s about their lives or work.</p><p>We often talk about &#8220;knowledge&#8221; management but it&#8217;s not only about knowledge: it&#8217;s about projects, goals, thoughts, relationships, and everything that happens in your lives. The more you can capture (and organize properly), the more AI can be useful to you.</p><p>Such material is, potentially, our most precious asset. We&#8217;ll want to keep it tidy, up to date, and most of all, <strong>under our control</strong>.</p><p>Keeping it under our control means not being locked into a specific tool or AI platform. It means being able to switch to different AIs by snapping your fingers, or using multiple ones together on the same collaboration surface.</p><p>You may want your Claude Code to do some autonomous research and write its findings, while your OpenClaw fetches your latest meeting notes and turns them into a doc, all while you write manually in your journal, or capture a valuable idea into an <em>evergreen note</em>.</p><p>This should all be possible and be backed by the same knowledge base.</p><p>Based on this, here is how I think such a knowledge base should work:</p><ul><li><p><strong>Files</strong> &#8212; because of 1) portability, 2) offline work, and 3) how AI is massively good at working with them, files are an obvious choice for a knowledge base.</p></li><li><p><strong>Markdown</strong> &#8212; md has surfaced as the de-facto standard for documents in the AI era. And you can easily extend it with a YAML frontmatter to store structured properties</p></li><li><p><strong>Git</strong> &#8212; by using files, version control is an obvious fit. This is useful for 1) history, for 2) cloud sync, and for 3) tracking authorship of changes, especially in a world where humans and AI collaborate.</p></li><li><p><strong>Open source</strong> &#8212; if the goal is full &amp; long-term portability, the app you use to operate your knowledge should stay under your control.</p></li></ul><p>While the above items are the *core *principles, there are a few others I strongly believe in:</p><ul><li><p><strong>Rich UX</strong> &#8212; there are a lot of markdown editors out there who are simply&#8230; editors. This just doesn&#8217;t cut it when you have a lot of notes and need to operate <em>years</em> of content. You need relationships, visual cues, navigation, colors, icons, stuff that tells you at a glance <em>what</em> a note is, where it lives, and so on.</p></li><li><p><strong>Keyboard-first</strong> &#8212; I am a developer at heart, so the more I can do via the keyboard, the better. In Tolaria there are shortcuts and commands for <em>everything</em>, and tab navigation works well, so you never need the mouse.</p></li><li><p><strong>Opinions</strong> &#8212; capturing and organizing knowledge is hard, so I will bring my point of view about it. When you do something every day, you need UX that is optimized for that, and you can only achieve that if your tool has opinions. Tolaria has many!</p></li></ul><div><hr></div><h2>&#128295; How Tolaria works</h2><p>Tolaria is organized into a few main components:</p><ol><li><p><strong>Sidebar</strong> &#8212; for filtering notes in various ways</p></li><li><p><strong>Note list</strong> &#8212; for displaying the list of notes that match the current selection in the sidebar</p></li><li><p><strong>Editor</strong> &#8212; for editing the current note.</p></li><li><p><strong>Status bar</strong> &#8212; for changing vault, check Git status, AI status, and handy stuff</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_!wtwc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wtwc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 424w, https://substackcdn.com/image/fetch/$s_!wtwc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 848w, https://substackcdn.com/image/fetch/$s_!wtwc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 1272w, https://substackcdn.com/image/fetch/$s_!wtwc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wtwc!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png" width="1200" height="787.0879120879121" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:955,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:5944515,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wtwc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 424w, https://substackcdn.com/image/fetch/$s_!wtwc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 848w, https://substackcdn.com/image/fetch/$s_!wtwc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 1272w, https://substackcdn.com/image/fetch/$s_!wtwc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d9bac09-4c77-4205-9618-4a076ffd9fe7_3982x2612.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Let&#8217;s look at each of these &#128071;</p><div><hr></div><h2>1) Sidebar</h2><p>One of the core things you want to do when you have a lot of notes, is looking at just a subset of them at a time, based on various criteria.</p><p>Tolaria allows you to do so in many ways:</p><h3>&#128229; Inbox</h3><p>Notes that haven&#8217;t been <em>organized</em> yet.</p><p>This is inspired by <a href="https://www.buildingasecondbrain.com/">Tiago Forte</a>&#8216;s concept of separating capture from organize. An &#8220;organized&#8221; note is a note that you know what you will do with. It may belong to a project, to a responsibility, a topic, or any concept related to how you organize work.</p><p>Review your inbox (e.g.) weekly to keep it from growing too large. You can disable the Inbox in Settings <code>cmd+,</code>) if you don&#8217;t like this workflow.</p><p>You can flag a note as <em>organized</em> by clicking on the &#8220;check&#8221; icon in the breadcrumbs bar, or with <code>cmd+e</code>.</p><h3>&#128451;&#65039; All Notes</h3><p>As the name suggests, that&#8217;s the entire vault &#8212; every single note.</p><h3>&#128230; Archive</h3><p>A permanent home for notes you don&#8217;t want to delete but don&#8217;t want to see regularly. Archive aggressively to keep your vault clean. Archived notes still appear in search results, but not in sidebar sections.</p><h3>&#129513; Types</h3><p>The main organizational device in Tolaria. Each note has a type, which by default is Note.</p><p>Each type can have its own icon and color, which you can change by right-clicking on it in the sidebar, or manually changing it in the properties or frontmatter of the type file.</p><p>Types are simply stored as markdown files, like Topic, or Project.</p><p>Click any type on the sidebar to see all notes of that type in the note list.</p><h3>&#11088; Favorites</h3><p>Notes you&#8217;ve manually pinned to keep them top-of-mind. Great for active projects, journal entries, or reference notes you access frequently.</p><p>You can reorder them by dragging them in the sidebar.</p><p>Toggle a favorite note from the &#11088; button in the breadcrumbs bar, or with <code>cmd+d</code> .</p><h3>&#128269; Views</h3><p>You can create custom views that filter notes by complex, nested criteria. The view editor fetches all available properties, plus allows for some tricks (like regexes and natural language dates)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GEjx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GEjx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 424w, https://substackcdn.com/image/fetch/$s_!GEjx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 848w, https://substackcdn.com/image/fetch/$s_!GEjx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 1272w, https://substackcdn.com/image/fetch/$s_!GEjx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GEjx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png" width="1456" height="851" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:851,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:155722,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.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_!GEjx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 424w, https://substackcdn.com/image/fetch/$s_!GEjx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 848w, https://substackcdn.com/image/fetch/$s_!GEjx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 1272w, https://substackcdn.com/image/fetch/$s_!GEjx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7752a1eb-1390-48b4-a11e-b08edd488c4b_1594x932.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Views are simple yaml files that get stored in the <code>views</code> folder. They can be edited easily and even created by the AI &#128071;</p><pre><code><code>name: Active Projects
icon: &#128640;
filters:
  all:
  - field: type
    op: equals
    value: Project
  - field: Status
    op: equals
    value: Active
  - any:
    - field: status
      op: equals
      value: active
    - field: date
      op: after
      value: in 1 week</code></code></pre><h3>&#128194; Folders</h3><p>Tolaria stores notes in the root of the vault by default, but also scans your vault&#8217;s folder structure, which you can navigate at the bottom of the sidebar.</p><p>Folders are listed last because they are a secondary organization method&#8212;not the primary one.</p><h3>&#128465;&#65039; Trash</h3><p>There is no trash bin, when you delete a note, it&#8217;s gone &#8212; but your git history is your safety net. You can always recover deleted notes from git if needed.</p><div><hr></div><h2>2) Note list</h2><p>The note list shows the subset of notes selected by the current sidebar section. For example, clicking &#8220;Types &#8594; Project&#8221; shows all your Project notes.</p><h3>&#11015;&#65039; Sorting</h3><p>You can sort the note list by any note property (they get dynamically loaded from the notes), plus file properties like modified and creation time.</p><p>Your choice will be remembered for that specific section.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6J5P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6J5P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 424w, https://substackcdn.com/image/fetch/$s_!6J5P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 848w, https://substackcdn.com/image/fetch/$s_!6J5P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 1272w, https://substackcdn.com/image/fetch/$s_!6J5P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6J5P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png" width="1264" height="510" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:510,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93752,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.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_!6J5P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 424w, https://substackcdn.com/image/fetch/$s_!6J5P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 848w, https://substackcdn.com/image/fetch/$s_!6J5P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 1272w, https://substackcdn.com/image/fetch/$s_!6J5P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce56bac2-2145-40b1-bf4e-9fa3cb70977d_1264x510.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>&#128133; Display Properties</h3><p>You can customize which properties appear as columns in the note list. This lets you see important metadata at a glance without opening individual notes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BTJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BTJA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 424w, https://substackcdn.com/image/fetch/$s_!BTJA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 848w, https://substackcdn.com/image/fetch/$s_!BTJA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 1272w, https://substackcdn.com/image/fetch/$s_!BTJA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BTJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png" width="1252" height="422" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:422,&quot;width&quot;:1252,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129941,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.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_!BTJA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 424w, https://substackcdn.com/image/fetch/$s_!BTJA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 848w, https://substackcdn.com/image/fetch/$s_!BTJA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 1272w, https://substackcdn.com/image/fetch/$s_!BTJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e9cadc-dfad-480f-95dd-e08baf88fea1_1252x422.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For properties that are URLs or other notes, you can open them directly from the note list with <code>cmd+click</code>.</p><div><hr></div><h2>3) Editor</h2><p>The editor is where you write and edit your notes. Tolaria supports two modes:</p><ul><li><p><strong>WYSIWYG Mode</strong> &#8212; similar to Notion. Type naturally, use slash commands, and see the output directly formatted in the editor.</p></li><li><p><strong>Raw mode</strong> &#8212; shows the actual file characters. Access it with <code>Cmd+/</code> or the code button in the breadcrumb bar. Useful when you need precise control over markdown syntax.</p></li></ul><p>The note&#8217;s filename is always visible at the top of the editor. This keeps you aware of how the note will be named and linked.</p><p>A very important feature of the editor is the support for <strong>wikilinks</strong>. Type <code>[[</code> to trigger autocomplete from your entire vault. This creates links to other notes, enabling the knowledge graph. Wikilinks also auto-update if the filename changes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0t5g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0t5g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 424w, https://substackcdn.com/image/fetch/$s_!0t5g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 848w, https://substackcdn.com/image/fetch/$s_!0t5g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!0t5g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0t5g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png" width="1456" height="1062" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1062,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:418964,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.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_!0t5g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 424w, https://substackcdn.com/image/fetch/$s_!0t5g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 848w, https://substackcdn.com/image/fetch/$s_!0t5g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!0t5g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085c0f73-8af3-46d1-88ae-4bb349cd06ee_1580x1152.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>4) Git</h2><p>Tolaria vault have first-class Git support and by default you retain fine control over it.</p><p>You can look at current changes and Git history from the status bar, create new commits and push them directly without ever leaving the app.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nlOg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nlOg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 424w, https://substackcdn.com/image/fetch/$s_!nlOg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 848w, https://substackcdn.com/image/fetch/$s_!nlOg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 1272w, https://substackcdn.com/image/fetch/$s_!nlOg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nlOg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png" width="1456" height="579" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:579,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:373979,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.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_!nlOg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 424w, https://substackcdn.com/image/fetch/$s_!nlOg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 848w, https://substackcdn.com/image/fetch/$s_!nlOg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 1272w, https://substackcdn.com/image/fetch/$s_!nlOg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4adf09-7053-4ba1-8875-24402eec93ec_2552x1014.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But if you don&#8217;t want to manage this manually, and want to use Git as a simple automatic sync layer, Tolaria also has an opt-in <strong>AutoGit mode</strong> in which it automatically creates commits and pushes changes after some time. It does so when the app gets idle, when you shift which app is in focus, and based on various heuristics.</p><div><hr></div><h2>5) Commands</h2><p>One of Tolaria&#8217;s principles is being keyboard-first. Almost everything has shortcuts.</p><p>You can discover shortcuts from the mac menu and from tooltips on buttons.</p><p>A lot of actions also have a fall back or a quick way to do them via the command palette, which you can open with <code>cmd+K</code></p><p>You can really do almost everything with it, including navigating to sections, creating new notes of a certain type, or perform routine actions.</p><p>You don&#8217;t even need to find the exact keywords &#8212; the palette is smart enough to match a lot of commands semantically:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qpNL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qpNL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 424w, https://substackcdn.com/image/fetch/$s_!qpNL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 848w, https://substackcdn.com/image/fetch/$s_!qpNL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!qpNL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qpNL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png" width="1262" height="1080" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:1262,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133063,&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://refactoring.fm/i/194609000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.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_!qpNL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 424w, https://substackcdn.com/image/fetch/$s_!qpNL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 848w, https://substackcdn.com/image/fetch/$s_!qpNL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!qpNL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F403650bf-7255-4930-a808-3f390f3c4449_1262x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2><strong>&#128300; </strong>What you will find in the repo </h2><p>I will use this repo as a <strong>living artifact </strong>of how I do AI coding, for you to inspect at any time.</p><p>I have written exactly zero lines of code, out of the ~100K, and read very few of them. I am neither proud nor ashamed by it: it is what it is, and I would have never been able to build it otherwise.</p><p>Some interesting things that I haven&#8217;t seen too much elsewhere:</p><ul><li><p><strong>The <a href="https://github.com/refactoringhq/tolaria/blob/main/docs/ARCHITECTURE.md">Architecture</a>, <a href="https://github.com/refactoringhq/tolaria/blob/main/docs/ABSTRACTIONS.md">Abstractions</a>, and <a href="https://github.com/refactoringhq/tolaria/blob/main/docs/GETTING-STARTED.md">Getting Started</a> docs</strong> &#8212; they have some overlap, but overall I feel they do a good job at capturing what the tech is about.</p></li><li><p><strong>The <a href="https://github.com/refactoringhq/tolaria/tree/main/docs/adr">collection of ADRs</a></strong> &#8212; this is super useful, both for human review, and for AI to pick up on past decisions and what exists.</p></li><li><p><strong>The <a href="https://github.com/refactoringhq/tolaria/blob/main/docs/VISION.md">Vision</a> doc</strong> &#8212; this is not super updated, but it is still useful to guide AI when we brainstorm new features.</p></li></ul><p>Overall, this is a lot of context for the AI to inspect when you want it to do some &#8220;creative&#8221; task, like creating specs for new features, or making non-trivial tech choices, and dramatically increases the chances for it to get things right.</p><p>As of today I still review the ADRs and the changes to the main docs, but I find that AI gets these right &gt;90% of the time.</p><div><hr></div><h2>&#10145;&#65039; Next Steps</h2><p>If you download and install Tolaria, you will get the option of <strong>cloning a getting started vault</strong> that has examples and instructions. There is also a <code>Feedback</code> button in the status bar (bottom right) that gets you to Github issues, if you want to report anything.</p><p>Also feel free to reply to this email if you have any questions or just to let me know your thoughts! Please do! It&#8217;s been a ton of work and I absolutely want to know what you think about it &#128516;</p><div><hr></div><p>And that&#8217;s it for today! I wish you a great week</p><p>Sincerely &#128075;<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Introducing the AI Club 🪄]]></title><description><![CDATA[A new monthly gathering for Refactoring community members]]></description><link>https://refactoring.fm/p/introducing-the-ai-club</link><guid isPermaLink="false">https://refactoring.fm/p/introducing-the-ai-club</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 15 Apr 2026 07:03:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f2cd68bf-0153-4ae0-83e5-872a611b8e9f_1240x640.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there! This is a special edition to announce I am starting a private <strong>AI Club</strong> for members of the Refactoring community!</p><p>These are going to be <strong>monthly online gatherings</strong> where people can share wins and learnings from using AI, ask questions, and stay up to date about what works.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Join our AI Club &#129668;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="http://refactoring.fm/subscribe?"><span>Join our AI Club &#129668;</span></a></p><p>So today&#8217;s post is to explain 1) why I am starting it, and<strong> </strong>2) how it works.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RBE3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RBE3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 424w, https://substackcdn.com/image/fetch/$s_!RBE3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 848w, https://substackcdn.com/image/fetch/$s_!RBE3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 1272w, https://substackcdn.com/image/fetch/$s_!RBE3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RBE3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png" width="1456" height="490" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:490,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1848471,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/194076528?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.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_!RBE3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 424w, https://substackcdn.com/image/fetch/$s_!RBE3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 848w, https://substackcdn.com/image/fetch/$s_!RBE3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 1272w, https://substackcdn.com/image/fetch/$s_!RBE3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8f559d-8449-4100-b2a1-423c00067b18_2736x920.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>&#127919; Why I am starting an AI Club</h2><p>By now AI has taken over most of the online conversation about software engineering.</p><p>As <a href="https://refactoring.fm/p/updates-to-my-ai-coding-workflow">I wrote last week</a>, I think this is&#8230; largely correct. AI coding is so <em>big</em> and meaningful that figuring it out feels like the #1 priority for us as an industry. I don&#8217;t think we are misguided on this.</p><p>However, we are also in this <strong>very confusing stage</strong> where everyone is just trying things for themselves:</p><ul><li><p>Most teams have little-to-no shared practices / artifacts / ceremonies about AI.</p></li><li><p>Opinions online are all over the place, and it&#8217;s hard to know who to trust.</p></li><li><p>Most of us have very little time to try things out, and zero dedicated time at work to do so.</p></li></ul><p>All of this against a backdrop of anxiety, layoffs, FOMO, and doomsday predictions.</p><p>Yay!</p><p>AI is also changing how I think about my responsibilities with Refactoring. It is changing the topics I cover, how I spend my time (I am back to coding, a lot), and the type of conversations I have with people.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y_TJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y_TJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 424w, https://substackcdn.com/image/fetch/$s_!y_TJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 848w, https://substackcdn.com/image/fetch/$s_!y_TJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 1272w, https://substackcdn.com/image/fetch/$s_!y_TJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y_TJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png" width="1456" height="388" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b25d63e9-3149-4db8-9971-6662593b171d_1508x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:388,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59776,&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://refactoring.fm/i/194076528?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y_TJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 424w, https://substackcdn.com/image/fetch/$s_!y_TJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 848w, https://substackcdn.com/image/fetch/$s_!y_TJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 1272w, https://substackcdn.com/image/fetch/$s_!y_TJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d63e9-3149-4db8-9971-6662593b171d_1508x402.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Before 2026, in my most active year I did ~950 commits. This year I have done 3300 so far&#8230; in two months.</figcaption></figure></div><p>So, Refactoring should <strong>help you run better engineering teams</strong>, and a big part of that now is about using AI well &#8212; together, as humans.</p><p>So I want to host <strong>good conversations</strong> about it, where people share what they are learning: the exciting wins, the humbling failures, and everything in between.</p><p>Sharing things with others not only makes us <strong>grow faster together</strong> &#8212; it&#8217;s also great to fight back against anxiety, impostor syndrome, and all the pressure that comes with the push for AI adoption.</p><p>So let&#8217;s use the <strong>Refactoring community as your extended team</strong>, where we compare notes and learn things together.</p><div><hr></div><h2>&#8505;&#65039; How it works</h2><p>Here is the gist:</p><ul><li><p>Monthy 1-hour chat, hosted in the Refactoring Community.</p></li><li><p>As with all-things-community, it&#8217;s for paid Refactoring members. We gate this to keep people committed and ensure high quality.</p></li><li><p>Like our monthly mastermind, it&#8217;s facilitated by real engineering coaches, <a href="https://monkeysthumb.co.uk/">Joel</a> and <a href="https://www.seckington.com/">Melinda</a>.</p></li><li><p>I always join the call personally and share the things I have learned throughout the month</p></li><li><p>Everyone who joins can share their own &#8220;aha&#8221; moments &#8212; a win, or just something that genuinely surprised them &#8212; ask questions, and get to know other community members</p></li><li><p>Takeaways from the conversation are shared afterwards in the community in written form, for those who are not able to join.</p></li><li><p>Finally, for paid Refactoring subscribers, in the newsletter I will also publish monthly AI updates that combine my own experiments with things that surfaced in community calls.</p></li></ul><p>All in all it&#8217;s very simple. We&#8217;ll host the first one <strong>on May 8th</strong>, and we&#8217;ll always have them on the first Friday of the month, at rotating times to allow everyone to participate.</p><div><hr></div><h2>&#128274; About the Refactoring subscription</h2><p>Allow me a quick paragraph about the Refactoring subscription, which you might be considering joining.</p><p>It&#8217;s $15/month, or $150/year, to access the <a href="https://refactoring.fm/p/refactoring-community">Refactoring community</a>, all of our archive (300+ articles) carefully organized by topic, plus our weekly original long-forms about the latest and greatest engineering practices.</p><p>The community has bi-weekly events, professionally run, that alone would cost &gt;$100 to join &#8212; each!</p><p>So if Refactoring helps you make <strong>just </strong><em><strong>one</strong></em><strong> better decision</strong>, thanks to something you read, or learned from someone in the community, chances are the subscription repaid itself for the full year.</p><p>I would love to have you onboard! 1500+ engineers have joined this already &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Join our AI Club &#129668;&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="http://refactoring.fm/subscribe?"><span>Join our AI Club &#129668;</span></a></p><div><hr></div><p>And that&#8217;s it for today!</p><p>Sincerely &#128075;<br>Luca</p>]]></content:encoded></item><item><title><![CDATA[Updates to my AI Coding Workflow]]></title><description><![CDATA[As of April 2026]]></description><link>https://refactoring.fm/p/updates-to-my-ai-coding-workflow</link><guid isPermaLink="false">https://refactoring.fm/p/updates-to-my-ai-coding-workflow</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 08 Apr 2026 07:12:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7c31c0da-a80c-463b-8804-c108402a8d19_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>About a month ago I wrote an article about my <a href="https://refactoring.fm/p/my-ai-coding-workflow">AI coding workflow</a>, and it <em>instantly</em> became the most popular Refactoring article of all time.</p><p>I received a lot of private comments, most of which can be organized into two categories:</p><ul><li><p>People wanting to learn more about the <strong>coding workflow</strong> itself.</p></li><li><p>People wanting to learn more about the <strong>note-taking</strong> <strong>app</strong> I am building.</p></li></ul><p>Both types of comments motivated me <em>a lot</em>, to the point where I decided to make all of this an official part of my Refactoring work, as follows:</p><ul><li><p>I am going to build this app for real, make it free and open source for everyone, and keep working on it as an ongoing effort.</p></li><li><p>I am going to report my learnings about AI coding as part of the regular writing schedule, let&#8217;s say once a month or so.</p></li></ul><p>I am convinced this is the right thing to do because, frankly, <strong>getting AI coding right is the #1 problem in software engineering</strong> today, and it&#8217;s not even close.</p><p>The economics of software are changing so much that there is no part of the process that is <em>safe</em>. Code reviews, QA, planning, staffing, traditional management &#8212; everything feels up for grabs and <em>downstream </em>of what happens with coding.</p><p>Also, while I love doing research and talking with others (e.g. on the podcast), opinions are so scattered across the board that I feel the strong need to try things myself, and do so in a serious, ongoing way.</p><p>So here is today&#8217;s agenda:</p><ul><li><p>&#128167; <strong>Building Tolaria</strong> &#8212; a personal knowledge management app for the age of AI.</p></li><li><p>&#129438; <strong>OpenClaw vs Claude Code</strong> &#8212; how I use them, and to do what.</p></li><li><p>&#128295; <strong>Coding workflow</strong> &#8212; what changed vs one month ago, and what stayed the same.</p></li><li><p>&#128209; <strong>ADRs</strong> &#8212; the best recent addition to my coding.</p></li><li><p>&#127912; <strong>Product workflow</strong> &#8212; how I create specs.</p></li><li><p><strong>&#128184; How much I am spending</strong> &#8212; because I know y&#8217;all want to know that.</p></li><li><p>&#129302; <strong>CLAUDE.md</strong> &#8212; bonus: my current Claude file, attached in full.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><h2>&#128167; Building Tolaria</h2><p>In the last article I said that what I was building didn&#8217;t matter much, well now it kinda does, because you are going to hear a lot more about it in the future.</p><p><strong><a href="http://tolaria.md/">Tolaria</a></strong> is a personal knowledge management app, extremely opinionated and tailored for my own personal use, but I hope it can be useful to others too.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BUFS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BUFS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 424w, https://substackcdn.com/image/fetch/$s_!BUFS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 848w, https://substackcdn.com/image/fetch/$s_!BUFS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 1272w, https://substackcdn.com/image/fetch/$s_!BUFS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BUFS!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png" width="1200" height="1219.7802197802198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1480,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:3089503,&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://refactoring.fm/i/193368488?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BUFS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 424w, https://substackcdn.com/image/fetch/$s_!BUFS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 848w, https://substackcdn.com/image/fetch/$s_!BUFS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 1272w, https://substackcdn.com/image/fetch/$s_!BUFS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e4b8312-6b90-4b72-845a-32b773fd50fa_2934x2983.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s worth noting that this is not a particularly original idea. There exist plenty of tools in this space &#8212; Notion, Obsidian, Craft, Roam, and more &#8212; and most of them are very well made. Still, I know plenty of smart people who lately have been experimenting with weird setups. </p><p>Just last week, <a href="https://x.com/karpathy/status/2039805659525644595">Karpathy wrote a viral tweet</a> exactly about that.</p><p>Why such a renewed excitement around <strong>knowledge management</strong>? Because everyone who tries to work <em>seriously</em> with AI agents eventually understands that this is a core problem to solve: continuously <em>supplying</em> agents with reliable, up-to-date information about your life and work, and creating a good collaboration surface on these.</p><p>I suspect this still feels a bit abstract, so I&#8217;ll make a few examples from my own work:</p><ul><li><p>An agent should periodically fetch meeting summaries from tools like Fathom or Fireflies, create a note for the meeting with the summary and action items, and link the note to individual attendees (each of whom should have a page for themselves). If there are attendees who are <em>new</em>, the agent should create individual notes for each of them, enriching my personal CRM.</p></li><li><p>An agent should receive voice notes from me and turn them into long-term notes and tasks, and connect them to the relevant existing pages.</p></li><li><p>An agent should take every new article I write and split it into atomic evergreen ideas, connect them to similar ideas I have already saved in the past, and better organize my knowledge base so that it&#8217;s easier to write new articles in the future.</p></li><li><p>An agent should suggest new article topics and podcast guests based on my recent readings and how these connect to things I have written in the past and interviews I already did.</p></li></ul><p>In terms of intelligence required, most of these tasks are <strong>trivial</strong>. But they need a good collaboration surface 1) for agents to fetch the relevant info and 2) for me to work well with them.</p><p><a href="https://tolaria.md/">Tolaria</a> is my attempt to build this for myself first, and hopefully for some others too.</p><p>It will be completely<strong> free and open source</strong>, so that it also works as a <strong>visible artifact</strong> of my <em>understanding</em> of how to create products with AI, for other people to inspect.</p><p>At any given time, if you want to know e.g. what I write in my CLAUDE.md, or how I write docs, or what types of tests I write and which I don&#8217;t &#8212; you shouldn&#8217;t just <em>trust</em> my articles, you should be able to go to the repo and see for yourself.</p><p>This way, the ideas you read on Refactoring become the result of three things:</p><ul><li><p><strong>&#128218; Research</strong> &#8212; I read and collect experiences from others.</p></li><li><p>&#128172; <strong>Conversations</strong> &#8212; I go deeper by running community events and 1:1 podcast interviews.</p></li><li><p>&#128295; <strong>Personal work</strong> &#8212; I do coding and product development myself to stress-test these beliefs.</p></li></ul><p>All of these elements are meant to be <em>public</em>: you can get <a href="https://refactoring.fm/i/193052967/weekly-readings">weekly digests</a> of what I read, listen to the <a href="https://refactoring.fm/podcast">podcast conversations</a>, <a href="https://refactoring.fm/p/refactoring-community">join the community</a> to chat with me (and others), and inspect the Tolaria codebase (soon!) to see how I write code.</p><p>Tolaria is not ready yet but it will be in a couple of weeks!</p><p>So where are we today? Here is an exec summary. Since I started working on it around mid Feb, here is what I got:</p><ul><li><p><strong>1526 commits</strong> &#8212; that is ~30 commits/day on average</p></li><li><p><strong>~70K LOCs</strong> &#8212; about 45 lines / commit</p></li><li><p><strong>~3000 tests</strong> &#8212; about 85% coverage</p></li><li><p><strong>9.5/10 code health</strong> &#8212; as measured by CodeScene</p></li><li><p><strong>40+ ADRs</strong> &#8212; to track our core tech choices, plus three summary docs for Architecture, Abstractions, and Getting Started.</p></li></ul><p>That&#8217;s 2.5x the amount of code we had last month (we were at 20K LOCs), with better code health (9.5 vs 9.3), and better docs. I am still not writing any code, and I am still reading very little of it.</p><p>The product also got way better to the point where, by now, I have fully replaced my Notion workspace. It still feels surreal to say that out loud, after 6+ years of really intensive Notion usage, but here we are.</p><p>So let&#8217;s get into how I work on it, starting with coding &#128071;</p><div><hr></div><h2>&#129438; OpenClaw vs Claude Code</h2><p>In last month&#8217;s <a href="https://refactoring.fm/p/my-ai-coding-workflow">post</a> I said that basically I acted as CEO, OpenClaw worked as a PM, and Claude Code worked as a team of designers + engineers.</p><p>Has any of this changed? Yes, and no. Roles are still kinda the same, but I am not using Claude Code strictly <em>together</em> with OpenClaw anymore, in the sense that the latter directs the former, but more in an async way. This change has been driven by three reasons:</p><ul><li><p>&#128184; <strong>Cost</strong> &#8212; the initial workflow in which OpenClaw steered CC all the time was wildly inefficient in terms of token spend.</p></li><li><p>&#127891; <strong>Capabilities</strong> &#8212; CC has caught up with a lot of OpenClaw stuff. Most of all, it has loops now.</p></li><li><p>&#128110;&#8205;&#9794;&#65039; <strong>Legal</strong> &#8212; most recently, Anthropic has explicitly banned this type of usage, but to be fair I had stopped it already.</p></li></ul><p>So by now my OpenClaw and Claude Code work on separate things, in a completely asynchronous way:</p><ul><li><p>OpenClaw turns my inputs into product specs, checks on the general status of things, brainstorms new ideas, and in general does the work that benefits from <em>broad</em> context.</p></li><li><p>Claude Code does all the technical work, including coding, writing ADRs and docs, and, crucially, QA, that was done by OpenClaw before.</p></li></ul><p>OpenClaw doesn&#8217;t interact with Claude Code anymore, but it periodically checks that it doesn&#8217;t get stuck or crashes (which can happen for a variety of reasons). In that case, it restarts it.</p><div><hr></div><h2>&#128295; Coding workflow</h2><p>This article is largely meant to work as a <em>delta</em> vs my original AI coding article to highlight things that have changed, but it&#8217;s also worth noting the good stuff that <em>has not changed.</em></p><p>The highest leverage parts of the AI coding workflow are <em>still</em> probably the CI gates on <strong>code health</strong> and <strong>test coverage</strong>. These gates exist in two places:</p>
      <p>
          <a href="https://refactoring.fm/p/updates-to-my-ai-coding-workflow">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Grow your Software Factory]]></title><description><![CDATA[Rules, modules, and the path to AI leverage]]></description><link>https://refactoring.fm/p/growing-your-sofware-factory</link><guid isPermaLink="false">https://refactoring.fm/p/growing-your-sofware-factory</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 01 Apr 2026 07:02:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FXrO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F939d8dd5-a30e-4c7f-96cd-560960e6c1fd_2110x1300.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last month I published <a href="https://refactoring.fm/p/the-era-of-the-software-factory">The Era of the Software Factory</a>, where I commented on the latest <a href="https://circleci.com/software-delivery-data-explorer/">State of Software Delivery</a> together with Rob Zuber, a good friend and CTO of CircleCI.</p><p>In that piece we argued that software engineering was undergoing a transformation from craftsmanship to factory work, with the gap between elite and average teams being more and mor&#8230;</p>
      <p>
          <a href="https://refactoring.fm/p/growing-your-sofware-factory">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Telephone Game of Software]]></title><description><![CDATA[How to navigate the journey from intent to code]]></description><link>https://refactoring.fm/p/the-telephone-game-of-software</link><guid isPermaLink="false">https://refactoring.fm/p/the-telephone-game-of-software</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 25 Mar 2026 08:42:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b8713384-a4c2-4057-b6c2-731abcc0d68b_2382x1580.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My favorite <em>byproduct</em> of the AI shift in engineering is that it is making us think harder at workflows and ideas we have taken for granted for a long time.</p><p>In some cases, we even <em>invented</em> words we didn&#8217;t use before, like <em>context</em>, or, one of my favorite lately, <em>intent</em>. These words are <em>abstractions</em>&#8212;our bread and butter as engineers&#8212;and are born out of the necessity to discuss ideas, understand what&#8217;s going on, and improve how we work.</p><p>The <em>intent</em> concept is both important and, AFAIK, quite novel. These days you may hear it in sentences like &#8220;<em>making sure PMs&#8217; intent is captured into specs</em>&#8221;, or &#8220;<em>AI code should reflect the engineers&#8217; intent</em>&#8221;.</p><p>This angle frames software engineering as a <strong>translation act</strong> between something you want to achieve and what gets actually captured in <em>artifacts</em> like specs, UI design, up until code. If we continue this analogy, translation happens at every step, with different steps following different rules. Many engineering practices exist essentially to <em>reduce</em> the error rate of such translation.</p><p>So, seen through this lens, software development becomes an elaborated version of <a href="https://en.wikipedia.org/wiki/Telephone_game">the telephone game</a>. You win the game if the message is passed properly and ends up in&#8230; production.</p><p>That said, what the <em>steps</em> of the telephone game are (or should be), or what the best winning strategy is, frankly, it&#8217;s all up for discussion today. Should we write big specs beforehand? Should we keep human code reviews? <em>Who</em> should do this and that, and when, and how often?</p><p>Today I want to explore this, taking from what I have personally learned from my <a href="https://refactoring.fm/p/my-ai-coding-workflow">recent coding efforts</a>, and ideas I bounced off with <a href="https://www.linkedin.com/in/wattenberger">Amelia Wattenberger</a>, who <a href="https://refactoring.fm/p/what-comes-after-the-ide-with-amelia">I interviewed last week</a> on the podcast, and is joining me today on this piece.</p><p>So here is the agenda for today:</p><ul><li><p>&#128256; <strong>From intent to code</strong> &#8212; the journey of translating what you really want to do</p></li><li><p><strong>&#129521; Creating good platform</strong> &#8212; for each step of the journey, so AI doesn&#8217;t mess things up.</p></li><li><p><strong>&#128747; Staying at the right altitude</strong> &#8212; evolve your artifacts to match what you want to inspect</p></li><li><p><strong>&#128300; Using product to improve understanding</strong> &#8212; not just to <em>implement</em> it.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XE7W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XE7W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 424w, https://substackcdn.com/image/fetch/$s_!XE7W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 848w, https://substackcdn.com/image/fetch/$s_!XE7W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 1272w, https://substackcdn.com/image/fetch/$s_!XE7W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XE7W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png" width="1456" height="482" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:969213,&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://refactoring.fm/i/191761060?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.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_!XE7W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 424w, https://substackcdn.com/image/fetch/$s_!XE7W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 848w, https://substackcdn.com/image/fetch/$s_!XE7W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 1272w, https://substackcdn.com/image/fetch/$s_!XE7W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6709e936-78a6-4eb6-9123-b2c127a1d998_2512x832.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p><em>Disclaimer: Amelia works at <a href="https://www.augmentcode.com/">Augment Code</a> and created <a href="https://www.augmentcode.com/product/intent">Intent</a>, a developer workspace with strong opinions about all of this. Augment is a long-time partner of Refactoring, I use it, I am a fan, and I am happy if you check it out.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.augmentcode.com/product/intent&quot;,&quot;text&quot;:&quot;Learn more about Intent&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.augmentcode.com/product/intent"><span>Learn more about Intent</span></a></p><p><em>However, we are not here to promote Augment today, but rather compare notes about problems and try to predict where the puck is going. (The puck, Luca? In a telephone game? Yes)</em></p><div><hr></div><h2>&#128256; From Intent to Code</h2><p>Starting from something you want to achieve on the product you are building, then it&#8217;s a <em>long way</em> to encode that into, well, code.</p><p>Intermediate steps may vary based on your process, but you probably have some version of these:</p><h3>1) Product intent</h3><p>A high-level, one or two-sentence version of what you want to build. It may only live in your head.</p><p>Making an example from my own experiments (I am building <a href="http://tolaria.md/">an editor</a>), let&#8217;s say I want to add <em>split panes</em>, like many editors have. In my head, that&#8217;s it. I don&#8217;t think about it a lot more.</p><h3>2) Product specs</h3><p>Product intent needs to be turned into a <em>spec</em>, like a PRD, which needs to stay <em>faithful</em> to my original intent, while deciding a lot more things.</p><p>How is this triggered? Is there a button? What does it look like? What about keyboard shortcuts? What happens if I drag a tab from one pane to the other? And more.</p><p>Some of these are just <em>additional detail</em>, but some might derail the feature in a direction I didn&#8217;t intend. For example, a legitimate interpretation might be to open up the tab in a new window, which is not what I want.</p><h3>3) UI/UX design</h3><p>Product specs are turned into design specs. What it looks like, how it behaves, where it lives.</p><h3>4) System design</h3><p>Product and design specs <em>inform</em> the strategy to implement this with code. Abstractions that should be reused or created, data structures (when relevant), migrations, instrumentation, testing, rollout and rollback, and more.</p><h3>5) Code!</h3><p>Finally, there&#8217;s code! All of this turns into a bunch of LOCs, to be pushed, reviewed, and released in prod.</p><p>Phew. That&#8217;s a lot of work.</p><p>Of course YMMV and you may skip creating actual <em>artifacts</em> for some of these steps, based on the complexity of the work at hand, and your team's workflows. But there are at least <strong>decisions to be made</strong> about all of these, even without the artifacts:</p><ul><li><p>Every step adds details that the previous kept implicit or simply did not consider.</p></li><li><p>Every step can act as a <em>lossy translation</em> of the original intent. It can miss important details or interpret them incorrectly.</p></li></ul><p>What is our goal with respect to this process? The ultimate goal is always to <strong>ship value to customers as fast as possible</strong>, so you can get feedback and iterate.</p><p>To ship fast you want to avoid <em>rework</em>: you want to reduce the misunderstandings between the various steps and the mistakes that would make work move backwards instead of forwards. You want code abstractions that match the PRD, a PRD that matches the product intent, and not getting to the point where a review fails and some of this gets back to the drawing board.</p><p>This angle is relevant with humans, and <em>especially</em> relevant with AI. AI models today are <em>really</em> good, and it feels most of their mistakes now come from <em>not understanding</em> what you wanted, rather than e.g. bad coding skills.</p><p>So how do you get good at this? The most convincing way, to me, is:</p><ul><li><p><strong>Creating good platform for each step</strong> &#8212; which acts as guardrails and helps you minimize the amount of <em>intent</em> you need to encode into specs.</p></li><li><p><strong>Use specs as active collaboration surface</strong> &#8212; updating it with more details as the work progresses, so it stays at the right altitude all the time. Kudos to Amelia for making me think about this.</p></li></ul><p>Let&#8217;s explore both &#128071;</p><div><hr></div><h2>&#129521; Create good platform for each step</h2>
      <p>
          <a href="https://refactoring.fm/p/the-telephone-game-of-software">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The State of Product Development 2026]]></title><description><![CDATA[Explore the insights from our biggest research ever.]]></description><link>https://refactoring.fm/p/the-state-of-product-development</link><guid isPermaLink="false">https://refactoring.fm/p/the-state-of-product-development</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 11 Mar 2026 09:49:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1dc5892c-24ee-4531-9e82-ae4584df99f0_2302x1534.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Once or twice a year we run a <strong>deep research survey</strong> in our newsletter to better understand trends in software development. We do this to collect broad, quantitative data, that complements the <em>qualitative</em> opinions we already get from podcast interviews, from our private community, and from my own 1:1 conversations.</p><p>Last year we explored AI adoption, while &#8230;</p>
      <p>
          <a href="https://refactoring.fm/p/the-state-of-product-development">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The New Pyramid of Software Engineering 🏔️]]></title><description><![CDATA[The three pillars you should take care of, and some questions you should ask yourself]]></description><link>https://refactoring.fm/p/the-new-pyramid-of-software-engineering</link><guid isPermaLink="false">https://refactoring.fm/p/the-new-pyramid-of-software-engineering</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 04 Mar 2026 08:01:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3302732b-3303-4dfa-916f-0ad44253312d_2164x1438.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There are a lot of opinions around these days about the future of software, including of course <a href="https://refactoring.fm/p/the-era-of-the-software-factory">my own</a>.</p><p>If you run an engineering team, though, most of these opinions won&#8217;t feel useful to you. In fact, when I talk with people about e.g. some <a href="https://refactoring.fm/p/my-ai-coding-workflow">AI workflow</a>, I usually get two types of objections:</p><ol><li><p><strong>Volatility</strong> &#8212; the advice may become obsolete in just a few months, or weeks.</p></li><li><p><strong>Applicability</strong> &#8212; the advice doesn&#8217;t seem to apply to their team, because of X, Y, Z.</p></li></ol><p>These problems often come together. I&#8217;ll give an example.</p><p>One of the recent trends about how to work with AI, on which there is more consensus, is <strong>Spec-Driven Development</strong>. There exist <a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html">plenty of articles and frameworks</a> to work with it, even created by prominent companies like Github. So it&#8217;s not <em>a total</em> consensus, mind you, but it&#8217;s about as much as you can get in these messy times.</p><p>Still, as a CTO, you may have legitimate worries:</p><ul><li><p>Is this worth investing in? Or may the AI tomorrow (i.e. next month) just figure out more of the specs by itself?</p></li><li><p>Is this a good fit for <em>our team</em>? How do we harmonize it with how we have been creating PRDs and design docs up until now? Is there a way to work with AI that leverages how we already work, without the need to <em>migrate</em> to a different workflow?</p></li></ul><p>These questions are 100% valid, and the result is often <strong>analysis paralysis</strong>: teams <em>underinvest</em> in AI because no approach feels durable or authoritative enough to graduate from <em>individual experiment</em> to <em>team</em> <em>practice</em>.</p><p>I believe the main problem is that most ideas are just <strong>tactical</strong>. They <em>may</em> work, but need to be placed within a bigger strategy &#8212; a wider map of how to think about our teams, AI, and how to work together.</p><p>So today I want to write about the ideas that <strong>feel the most durable</strong> to me, and on which I am confident we can create good foundations.</p><p>These ideas come from many places:</p><ul><li><p>My own experiments &#8212; as you saw <a href="https://refactoring.fm/p/my-ai-coding-workflow">last week</a>.</p></li><li><p>Talking with 100+ tech leaders &#8212; this year alone in 1:1s, masterminds, and community threads</p></li><li><p>Our own industry report &#8212; where we surveyed 350+ teams and which we&#8217;ll release in March</p></li><li><p>Our cohort program &#8212; where I work with a small group of ~10 CTOs and VPs to help their teams ship faster.</p></li></ul><p>All in all it&#8217;s like a small <em>think tank</em>, and I am here to report findings!</p><p>These findings are actually quite simple (like all good models!), and are about three areas:</p><ol><li><p><strong>&#128295; Developer Experience</strong></p></li><li><p><strong>&#129668; AI</strong></p></li><li><p><strong>&#127912; Product Engineering</strong></p></li></ol><p>In my experience so far, these areas work like layers of a pyramid. Each layer <em>creates</em> <em>value</em> only if what&#8217;s beneath is taken care of. Think of it like Maslow&#8217;s pyramid of software engineering.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LDz_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LDz_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 424w, https://substackcdn.com/image/fetch/$s_!LDz_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 848w, https://substackcdn.com/image/fetch/$s_!LDz_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 1272w, https://substackcdn.com/image/fetch/$s_!LDz_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LDz_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png" width="1456" height="683" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:683,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:189244,&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://refactoring.fm/i/189655863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.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_!LDz_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 424w, https://substackcdn.com/image/fetch/$s_!LDz_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 848w, https://substackcdn.com/image/fetch/$s_!LDz_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 1272w, https://substackcdn.com/image/fetch/$s_!LDz_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F798117bf-c8f8-4a75-955c-7ddaac426c28_2016x946.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So let&#8217;s explore them one by one, recap what we know about them as of today, and how they work together for good.</p><div><hr></div><h2>&#128295; Developer Experience</h2>
      <p>
          <a href="https://refactoring.fm/p/the-new-pyramid-of-software-engineering">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[My AI Coding Workflow]]></title><description><![CDATA[To ship high-quality software that you don't need to write (or... read).]]></description><link>https://refactoring.fm/p/my-ai-coding-workflow</link><guid isPermaLink="false">https://refactoring.fm/p/my-ai-coding-workflow</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 25 Feb 2026 08:25:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3b48c3e1-3c66-4975-8ec5-44d399f73dc2_2238x1490.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I admit I was one of those who didn&#8217;t believe Dario Amodei when he said last year that AI would soon write 90% of the code. Instead here we are. There are indeed teams <a href="https://www.linkedin.com/feed/update/urn:li:activity:7430601338872328193/?originTrackingId=%2BiRqsayUMhj%2FdtqmRX6GiQ%3D%3D">I personally know</a> who are having close to all of their code written by AI, and are having the time of their lives.</p><p>And it&#8217;s not random teams: it&#8217;s usually the best ones. If you don&#8217;t trust my anecdotal evidence, just look at <a href="https://refactoring.fm/p/the-era-of-the-software-factory">recent reports</a>. The very best teams, who had the best DX and code quality <em>before</em> AI, are the same who are getting the most out of AI today.</p><p>Still, it&#8217;s not 100% clear <em>how</em> these teams work with AI. The internet is full of opinion pieces and people sharing their CLAUDE.md files, but these feel tactical at best, and dubious/fake at worst.</p><p>I don&#8217;t want to add more of these. The proof is in the pudding, so I said to myself: <strong>if I want to write about AI coding, I need to build something</strong>.</p><p>So here we go.</p><p>For the last 17 days, I have been working on a personal project for a macOS app. Scope and complexity are daunting enough to force me to think architecture, buy vs build, performance, rich UI, and everything I would need to cover in a real&#8212;not toy&#8212;software project. And needless to say, I would <em>never</em> be able to pull this off without AI.</p><p>Before I give you more details, let&#8217;s start with what I got today so far:</p><ul><li><p>772 commits in 17 days, for ~20,000 lines of code overall.</p></li><li><p>90% test coverage &#8212; via 500+ unit, integration, and E2E tests.</p></li><li><p>9.3/10 code health &#8212; as measured by CodeScene.</p></li><li><p>A clear, hierarchical set of docs &#8212; to navigate architecture, abstractions, and codebase structure.</p></li><li><p>A perfectly usable MVP &#8212; which I am, in fact, using every day.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lQzJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lQzJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 424w, https://substackcdn.com/image/fetch/$s_!lQzJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 848w, https://substackcdn.com/image/fetch/$s_!lQzJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 1272w, https://substackcdn.com/image/fetch/$s_!lQzJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lQzJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png" width="1456" height="646" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128278,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/189024124?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.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_!lQzJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 424w, https://substackcdn.com/image/fetch/$s_!lQzJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 848w, https://substackcdn.com/image/fetch/$s_!lQzJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 1272w, https://substackcdn.com/image/fetch/$s_!lQzJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cda95e-8adf-459c-9807-5faac3c2fb9d_1636x726.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I figured out and improved various parts of the workflow over time, so that now I am comfortable with:</p><ul><li><p>Not writing any code.</p></li><li><p>Not reading <em>almost</em> any code. Say I read ~5% of it.</p></li><li><p>Not providing UI design for ~90% of the features.</p></li><li><p>Managing most interactions async via voice notes.</p></li><li><p>Having AI work autonomously for long stretches of time, so I can do something else in the meantime.</p></li></ul><p>So let&#8217;s dive into all of this, in detail. Here is what I am going to talk about:</p><ul><li><p>&#128421;&#65039; <strong>What I am building</strong> &#8212; because nothing else matters.</p></li><li><p>&#127912; <strong>My product workflow</strong> &#8212; how I work as a PM.</p></li><li><p>&#128300; <strong>How I keep tech quality</strong> &#8212; how I work as a CTO, without reading the code.</p></li><li><p>&#128176; <strong>How much I spent </strong>&#8212; the numbers nobody shows.</p></li><li><p>&#128302; <strong>What&#8217;s next</strong> &#8212; my takeaways so far, and some obvious predictions.</p></li></ul><div><hr></div><h2>&#128421;&#65039; What I am building</h2>
      <p>
          <a href="https://refactoring.fm/p/my-ai-coding-workflow">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Era of the Software Factory 🏭]]></title><description><![CDATA[A reflection based on the latest State of Software Delivery report]]></description><link>https://refactoring.fm/p/the-era-of-the-software-factory</link><guid isPermaLink="false">https://refactoring.fm/p/the-era-of-the-software-factory</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 18 Feb 2026 08:03:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/df040445-0757-4574-8be1-7ee85f619d14_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few weeks ago, <a href="https://refactoring.fm/p/how-to-build-product-development">I had Rob Zuber</a>, CTO of <a href="https://circleci.com/">CircleCI</a>, on the Refactoring podcast.</p><p>We discussed how AI is changing software delivery, and the conversation continued well after we stopped recording. </p><p>A few weeks later, Rob shared an early copy of CircleCI&#8217;s <strong><a href="https://circleci.com/software-delivery-data-explorer/">State of Software Delivery 2026</a> </strong>report&#8212;which comes out today&#8212;and the data connected a lot of the dots from our conversations. So we decided to write this piece together: my take on the findings, with Rob&#8217;s perspective from the inside.</p><p>The report is based on 28+ million CI workflows across thousands of teams worldwide, and reveals something we have long suspected: <strong>the performance gap between top and average teams is widening</strong>. And it&#8217;s widening <em>fast</em>.</p><p>Elite teams (99th percentile) are reaching delivery speeds that would have been unimaginable two years ago, while the median team hasn&#8217;t moved much at all.</p><p>One story from my earlier interview with Rob captures this well. A team at CircleCI was debating whether to run user research for a new feature&#8212;the usual approach. Rob pushed back: just <strong>build a prototype overnight</strong> and test it with real users. </p><p>Even if the code was, worst case, 100% throwaway, the learning would be more accurate, and the cost would be just ~$100 in compute and a few hours of an engineer. The alternative would have been weeks for the research, more people involved, and possibly more shallow insights.</p><p>For someone like me, who has been involved in startups and <em>lean</em> teams for his whole career, it&#8217;s counterintuitive to <strong>think code-first</strong><em>.</em> Much of what we know about building products is based on the implicit assumption that writing code is the most expensive part, by far.</p><p>So when such cost drops, the initial outcome is that engineers get faster. But when it <em>keeps</em> <em>dropping</em>, like in the last year, we get to a point where a lot of hypotheses don&#8217;t hold anymore, and we need to rethink the process as a whole: how we make decisions, how we structure teams, how we think about quality, and so on.</p><p>You stop optimizing individual developers, and start designing a new production system. Rob and I started calling this <strong>the software factory</strong>, and it became the lens through which the rest of this piece came together.</p><p>Here is what we&#8217;ll cover:</p><ul><li><p>&#127981; <strong>From craftsman to factory</strong> &#8212; why this is bigger than &#8220;AI makes coding faster&#8221;</p></li><li><p>&#128202; <strong>The widening gap</strong> &#8212; data from the 2026 State of Software Delivery</p></li><li><p>&#127899;&#65039; <strong>Control systems thinking</strong> &#8212; a mental model for running your factory</p></li><li><p>&#9889; <strong>What elite teams do differently</strong> &#8212; practices, not tools</p></li><li><p>&#128736;&#65039; <strong>How to start</strong> &#8212; without rebuilding everything</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XHaP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XHaP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 424w, https://substackcdn.com/image/fetch/$s_!XHaP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 848w, https://substackcdn.com/image/fetch/$s_!XHaP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 1272w, https://substackcdn.com/image/fetch/$s_!XHaP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XHaP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png" width="1456" height="476" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:476,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:969452,&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://refactoring.fm/i/188133700?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.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_!XHaP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 424w, https://substackcdn.com/image/fetch/$s_!XHaP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 848w, https://substackcdn.com/image/fetch/$s_!XHaP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 1272w, https://substackcdn.com/image/fetch/$s_!XHaP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39651b0-6cbb-4c5f-b60d-a2e08868b79f_2706x884.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p><em>I am grateful to Rob and the <a href="https://circleci.com/">CircleCI</a> team for partnering on this piece and giving me preview access to their report. You can check it out below.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://circleci.com/software-delivery-data-explorer/&quot;,&quot;text&quot;:&quot;Check out the State of Software Delivery&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://circleci.com/software-delivery-data-explorer/"><span>Check out the State of Software Delivery</span></a></p><p><em>Disclaimer: even though CircleCI is a partner for this piece, I will only provide my unbiased opinion on all practices and tools we cover, CircleCI included</em></p><div><hr></div><h2>&#127981; From Craftsman to Factory</h2><p>Let&#8217;s lead with an interesting bit from the State of Software Delivery. Actually, three bits:</p><ol><li><p>Activity on feature branches (where most coding happens) is <strong>up 59% YoY</strong> &#8212; the largest increase ever observed.</p></li><li><p>Activity on the main branch, though, which is closely correlated with production deployments, is<strong> down by 7%</strong>.</p></li><li><p>Build success rates are <strong>down to 70.8%</strong>, the lowest in five years.</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_!ykUy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ykUy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 424w, https://substackcdn.com/image/fetch/$s_!ykUy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 848w, https://substackcdn.com/image/fetch/$s_!ykUy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 1272w, https://substackcdn.com/image/fetch/$s_!ykUy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ykUy!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png" width="1200" height="557.1428571428571" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:676,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:135080,&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://refactoring.fm/i/188133700?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ykUy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 424w, https://substackcdn.com/image/fetch/$s_!ykUy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 848w, https://substackcdn.com/image/fetch/$s_!ykUy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 1272w, https://substackcdn.com/image/fetch/$s_!ykUy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe132a40e-d993-4bf2-bba9-f5a0623acf5f_1856x862.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">More code and more commits, but also fewer deployments and lower deployment success!</figcaption></figure></div><p>The way I see it is that engineers by now are comfortable with AI-assisted coding, and, as a result, teams are generally writing more code than ever. But it also feels that, when it comes to <em>shipping</em>, this <strong>confidence drops</strong>. Code fails more often, which makes engineers less eager to merge and deploy.</p><p>So while AI makes the <em>generation</em> of code faster, everything that comes after (or before) that &#8212; testing, reviewing, integrating, deploying &#8212; largely stays the same (or gets worse!), unless you do something about it.</p><p>I&#8217;ll also throw in my own experience into the mix. For the last two months, I have been running a small-group coaching program for CTOs where, among other things, I help them identify the bottleneck in their dev process &#8212; the step that limits the throughput of the overall system.</p><p>In theory, that bottleneck can be anywhere. In practice, it&#8217;s <em>never</em> coding.</p><p>For some, it&#8217;s manual QA. For others, it&#8217;s creating good requirements. For many, it&#8217;s code reviews. For one of them, it&#8217;s collecting good feedback from customers, so they can act on it.</p><p>As coding gets cheaper and faster, it&#8217;s <strong>changing the </strong><em><strong>cost structure</strong></em> of the whole process, and bottlenecks now live in &#8204;the parts that AI hasn&#8217;t attacked yet. In other words, the whole system is up for discussion, and chances are it&#8217;s going to look way more like a <em>factory</em> than today&#8217;s craftman&#8217;s workshop.</p><p>Steve Yegge&#8217;s <a href="https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04">Gas Town</a> is an obvious example that comes to mind. If you forgive the chaos, the waste of tokens, and the Mad Max theme, it looks directionally correct to me: a system of agents coding in parallel, orchestrated by higher-level agents that create and execute plans, and report back to their human overlords.</p><p>But as much as Gas Town can look at times like a 360&#176; self-sustaining orchestration system, it&#8217;s still only focused on coding! Love this quote from Dan Lorenc:</p><blockquote><p><em>Gastown is a preview of agent programming, but the future isn&#8217;t &#8220;code gets written faster.&#8221; The future is: change gets shipped faster. And those are not the same thing.</em></p><p><em>Teams are trapped because CI takes forever, tests are flaky or missing, review cycles are slow, merge conflicts pile up, confidence is low, production is fragile, and there are &#8220;oh god please don&#8217;t touch that&#8221; zones nobody wants to own.</em></p><p><em>If this plays out the way I think it will, software engineering turns into CI engineering.</em></p><p><em>Code is cheap. Green CI is priceless.</em></p></blockquote><p>So how do we build what&#8217;s missing? Let&#8217;s go back to the data &#128071;</p><div><hr></div><h2>&#128202; The Widening Gap</h2><p>We were saying: more code, more breakage, less delivery.</p>
      <p>
          <a href="https://refactoring.fm/p/the-era-of-the-software-factory">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[My experience with OpenClaw 🦞]]></title><description><![CDATA[A detailed write-up of two intense weeks, and what comes next.]]></description><link>https://refactoring.fm/p/my-experience-with-openclaw</link><guid isPermaLink="false">https://refactoring.fm/p/my-experience-with-openclaw</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 11 Feb 2026 08:00:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ofse!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! This is a </em>&#128274;<em> <strong>weekly essay</strong> </em>&#128274; <em>from Refactoring!</em> <em>To access all our articles, library, and community, subscribe to the <a href="https://refactoring.fm/about">full version</a>:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Learn how to run a better tech team &#128296;&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Learn how to run a better tech team &#128296;</span></a></p><div><hr></div><p>By now, chances are you have heard about the open-source AI assistant <a href="https://openclaw.ai/">OpenClaw / Moltbot / Clawdbot</a>. I have been using it extensively for two weeks now, and I want to share some thoughts about my experience with it.</p><p>I feel the need to do it for three reasons:</p><p><strong>1) Signal</strong> &#8212; while there is <em>a lot</em> of information and stories online about OpenClaw, I have found most to be either shallow or <strong>inaccurate</strong>. Inaccurate is also an understatement: many takes are so comically bad/wrong/false that it is obvious that the author didn&#8217;t even bother to install OpenClaw, and is just remixing and regurgitating other (equally bad) content.</p><p><strong>2) Impact</strong> &#8212; my experience with OpenClaw has been <strong>absolutely</strong> <strong>transformative</strong> and only comparable, AI-wise, to the launch of ChatGPT. YMMV and I don&#8217;t expect my experience to apply verbatim to everyone, but I suspect many people don&#8217;t understand what makes OpenClaw special, because it&#8217;s hard to see it from a distance.</p><p><strong>3) Future</strong> &#8212; finally, this spectacular success gave me a lot to think about when it comes to the future of software and work in general, on which now I have thoughts that I want to share.</p><p>So here is the agenda for today:</p><ul><li><p><strong>&#129438; What is OpenClaw</strong> &#8212; very briefly, for those who don&#8217;t know.</p></li><li><p><strong>&#128296; What I do with it</strong> &#8212; on a daily basis.</p></li><li><p><strong>&#128274; Security</strong> &#8212; keeping it real but also debunking some misconceptions.</p></li></ul><p>And three theses:</p><ul><li><p><strong>&#129704; Slaves vs software</strong> &#8212; AI enables a new (but also old) way to solve problems.</p></li><li><p><strong>&#128268; MCPs are dead</strong> &#8212; AI has clearly outgrown MCPs at this point, and not just them.</p></li><li><p><strong>&#129716; Personal leverage</strong> &#8212; learning from the story of Peter Steinberger, creator of OpenClaw.</p></li></ul><p>Let&#8217;s dive in! You are in for a ride.</p><div><hr></div><h2>&#129438; What is OpenClaw</h2><p>OpenClaw is an open-source AI assistant you can install on a computer, plug into a number of tools, and make it do stuff. At its core, that&#8217;s it!</p><p>It is similar to Claude Code, but it comes with more features that work (kinda) out of the box, including, most notably:</p><ul><li><p><strong>&#129504; Memory</strong> &#8212; it has a memory system to store things it wants to remember into files.</p></li><li><p><strong>&#9201;&#65039; Heartbeats / cron jobs</strong> &#8212; it can do recurring things when instructed to do so (e.g. <em>every 4 hours send me a recap of my inbox and items that need my attention</em>)</p></li><li><p><strong>&#128172; Chat tools</strong> &#8212; it plugs into Telegram, WhatsApp and a few other tools for easy comms outside of the terminal.</p></li></ul><p>It has a number of other features, including the ability to spawn subagents for long tasks, a big gallery of community plugins, and much more, but I believe the three above are what makes it stand out vs other assistants out there.</p><p>And the reason is all about UX.</p><p>There is nothing in OpenClaw you <em>couldn&#8217;t</em> already do with e.g. Claude Code plus a bunch of plugins / duct-taping, but the value here is <em>convenience</em>: the core parts are all pre-packaged, plus you&#8217;ll find a long tail of quality of life improvements that stem from the tool being intentionally designed as an <em>assistant</em>, as opposed to a coding agent.</p><p>So, it&#8217;s similar (on a small scale!) to when Steve Jobs introduced the iPhone as the combination of three things: a 1) widescreen iPod, a 2) mobile phone, and 3) an internet communicator. None of these were mindblowing in <em>isolation</em>, but put together they crossed some invisible line that turned the device into something else.</p><p>What is this <em>something else</em>, for OpenClaw? Well, let&#8217;s see.</p><h2>&#128296; What I do with it</h2><p>The best analogy I have for OpenClaw is that of <em>a person</em> you have hired and you manage as your direct report. Yes, I know comparing AI to people is bad and out of touch in many ways, but I still find it the best <em>model</em> to build an intuition of how to relate with it and get the best out of it.</p><p>Like you would do with a person, you can tell OpenClaw to do things, do them on a recurring basis, have it report to you at some cadence, improve based on feedback, and it will happily do all of that. You will meet hiccups every now and then and stuff you&#8217;ll need to tweak, but for the most part, everything just works.</p><p>So, what to do with it is really up to you and what you need the most help with.</p><p>For me, as a content creator and owner of a small company, my highest leverage usage right now is that of an executive assistant, or a VA, that can lift some ops / admin work from my shoulders.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ofse!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ofse!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 424w, https://substackcdn.com/image/fetch/$s_!ofse!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 848w, https://substackcdn.com/image/fetch/$s_!ofse!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!ofse!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ofse!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png" width="1200" height="530.7692307692307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:644,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:851050,&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://refactoring.fm/i/187528754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ofse!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 424w, https://substackcdn.com/image/fetch/$s_!ofse!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 848w, https://substackcdn.com/image/fetch/$s_!ofse!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!ofse!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fbaa311-0b83-437c-ac1f-40dae96696c8_3172x1404.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">We are trying a lot of things about organizing work for AI. Will share more as soon as we have something that feels more stable.</figcaption></figure></div><p>For example, right now OpenClaw:</p><ul><li><p>Sends me morning briefs about what I need to do during my day.</p></li><li><p>Sends me prep for my upcoming meetings based on previous meetings and email threads with the same people.</p></li><li><p>Stores and organizes meeting notes automatically.</p></li><li><p>Does occasional coding work &#8212; e.g. it migrated all my Notion workspace to files, linking everything correctly.</p></li><li><p>Plus does a lot of glue work that would otherwise require n8n-style automations.</p></li></ul><p>And it&#8217;s great at one-off tasks too:</p><ul><li><p>I told it to draft an agreement with a partner company without adding any further context, because it could fetch it from email, Slack, meeting transcripts, and internal notes.</p></li><li><p>I asked it to give me the <em>copy</em> for the next sponsorship placement. It did that by looking at our sponsorship calendar on Airtable to figure out what company was next up, plus fetching the actual copy from the right email thread.</p></li></ul><p>It did both without the need for complex instructions &#8212; just explaining the work in a sentence or two like I would with a human.</p><p>To enable all of this, we have connected it to basically all the tools we use for work, including:</p>
      <p>
          <a href="https://refactoring.fm/p/my-experience-with-openclaw">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[CTO Archetypes 🧩]]></title><description><![CDATA[A handy framework by Pat Kua to navigate this shape-shifting role.]]></description><link>https://refactoring.fm/p/cto-archetypes</link><guid isPermaLink="false">https://refactoring.fm/p/cto-archetypes</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 04 Feb 2026 08:01:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ksz1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey! This week I am excited to host an original article by <strong><a href="https://www.patkua.com/">Pat Kua</a></strong> &#8212; a coach and CTO with 25+ years of experience in tech, and one of my favorite authors, whose ideas I have often quoted and mentioned here on Refactoring!</p><p>Pat&#8217;s article touches on a complex subject: <strong>the CTO role</strong>. He explores how such a role differs based on several factors, defines common sets of responsibilities, and provides insights you can use to improve alignment during hiring, company growth, and career conversations.</p><p>If you&#8217;d like to connect with Pat, please find him on <a href="https://www.linkedin.com/in/patkua/">Linkedin</a>!</p><p>Here is the agenda for today:</p><ul><li><p>&#128081; <strong>What&#8217;s a CTO</strong> &#8212; why the title carries seniority but rarely comes with documented scope.</p></li><li><p>&#129513; <strong>Why I use archetypes</strong> &#8212; tools for sensing misalignment and converging on shared expectations.</p></li><li><p>&#127917; <strong>CTO archetypes</strong> &#8212; eight recurring shapes that appear across different organizational contexts.</p></li><li><p>&#128736;&#65039; <strong>How to use these archetypes</strong> &#8212; practical applications for hiring, growth, and career planning.</p></li></ul><p>Let&#8217;s dive in! &#128071;</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fdSZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fdSZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 424w, https://substackcdn.com/image/fetch/$s_!fdSZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 848w, https://substackcdn.com/image/fetch/$s_!fdSZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 1272w, https://substackcdn.com/image/fetch/$s_!fdSZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fdSZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png" width="1456" height="439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:439,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:624774,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/186312746?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.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_!fdSZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 424w, https://substackcdn.com/image/fetch/$s_!fdSZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 848w, https://substackcdn.com/image/fetch/$s_!fdSZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 1272w, https://substackcdn.com/image/fetch/$s_!fdSZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ee302a-8dcc-4e73-93de-c43fc5ec4b79_1916x578.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>&#128081; What&#8217;s a CTO?</h2><p>I&#8217;ve found that many people struggle to describe the scope of the CTO role.</p><p>Two people with the same &#8220;CTO&#8221; title can have radically different responsibilities, spend their days on entirely different problems and be measured by very different outcomes. These differences matter because misaligned and unclear expectations around the CTO role lead to frustration, inappropriate hires, organizational friction or burnout.</p><p>Many management and leadership roles often ask: <strong>&#8220;What is expected of me?&#8221;</strong></p><p>I hear this frequently from Engineering Managers (EMs) and Tech Leads (TLs) in my training courses. While all roles have some slight differences, answering this for EMs/TLs is relatively straightforward, as I&#8217;ve previously written about in &#8220;<a href="https://www.patkua.com/blog/the-definition-of-a-tech-lead/">The Definition of a Tech Lead</a>&#8221; and &#8220;<a href="https://www.patkua.com/blog/5-engineering-manager-archetypes/">5 Engineering Manager Archetypes</a>.&#8221;</p><p>Answering this question as a CTO, however, is much harder.</p><p>The title carries seniority and authority, but rarely comes with a documented understanding of scope, priorities, or success. After all, if you&#8217;re a CTO, you&#8217;re supposed to &#8220;work it out.&#8221;</p><p>Over my 25-year career in tech, I&#8217;ve worked with and observed many different types of CTOs. As a Principal Consultant at ThoughtWorks, I partnered with CTOs to help them transform and modernize products, platforms, processes, and organizational structures. As the CTO of the German digital bank N26, I met many CTO peers facing both similar and very different challenges. Since then, I&#8217;ve advised and coached CTOs across a wide range of organizations and situations.</p><p>What this experience has reinforced is that while CTO roles can vary dramatically, they are not always <em>arbitrary</em>. There are recurring shapes to the role that emerge in response to specific organizational contexts and constraints.</p><p>In the rest of this article, I describe these recurring shapes as <strong>CTO archetypes</strong>, which you can use to make sense of what different CTO roles cater for, why mismatches occur, and how the role might evolve over time.</p><div><hr></div><h2>&#129513; Why I use archetypes</h2><p>In software development, we often draw on design patterns such as the <em>Observer</em>, <em>Singleton</em>, or <em>Decorator</em>.</p><p>A pattern is a reusable solution to a specific problem in a defined context. Archetypes serve a different purpose. Rather than prescribing <em>how</em> to solve a problem, they describe <strong>recurring</strong> <strong>shapes</strong> that appear across many systems. When applied to leadership roles, I feel the term &#8220;archetype&#8221; fits better with the commonly understood meaning of &#8220;a typical example of something.&#8221;</p><p>Archetypes are not meant to be boxes people fit neatly into. Reality is always messier. Instead, they are tools for sensing misalignment and to <strong>converge on shared expectations</strong>.</p><p>Archetypes can help us turn implicit assumptions into explicit ones and provide a <strong>shared language</strong> to discuss expectations, trade-offs, and mismatches among an organization&#8217;s needs, a role&#8217;s scope, and an individual&#8217;s skills, experience, and growth opportunities.</p><p>No catalog of archetypes will ever be comprehensive or perfect, which is why my favorite quote from George E. P. Box applies so well here:</p><blockquote><p><em>&#8220;All models are wrong, some are useful.&#8221;</em></p></blockquote><p>When I wrote about the Engineering Manager archetypes, many people told me it helped them start productive conversations about which EM role their organization needed or which EM role someone was applying for. Others used it as a vehicle for growth, seeking new opportunities to build experience that allowed them to play other archetypes.</p><p>It&#8217;s also important to emphasize what these archetypes are <em>not</em>.</p><p>They are neither a hierarchy nor a maturity model. Most real-world CTO roles are hybrids, and an organization&#8217;s needs will change over time. Just as effective leaders practice adaptive leadership, a CTO&#8217;s shape must evolve as the company grows, shrinks, or changes direction. Used well, archetypes act as lenses rather than labels and support reflection and dialogue rather than categorization.</p><p>Although these archetypes are not meant to be exhaustive, I hope they&#8217;re still useful in practice. Whether you are an existing or aspiring CTO, a CEO or board member, an executive recruiter, or simply curious about what CTOs actually do all day, the goal is not to find the &#8220;right&#8221; archetype, but to have clearer, more grounded conversations about fit, focus, and context.</p><div><hr></div><h2>&#127917; CTO Archetypes</h2><p>The shape of a CTO role is mainly driven by organizational context and constraints, and because there are common situations, we can loosely group the following archetypes into one of the following categories:</p><ul><li><p>&#128995; <strong>Early-Stage or Small</strong> &#8212; Founder, Startup and Fractional.</p></li><li><p>&#128992; <strong>Growth and Rapid Change</strong> &#8212; Scale-Up, M&amp;A and Turnaround.</p></li><li><p>&#128309; <strong>Complexity and Coordination</strong> &#8212; Group and CTPO.</p></li></ul><p>Let&#8217;s look at all of them:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ksz1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ksz1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 424w, https://substackcdn.com/image/fetch/$s_!Ksz1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 848w, https://substackcdn.com/image/fetch/$s_!Ksz1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 1272w, https://substackcdn.com/image/fetch/$s_!Ksz1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ksz1!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png" width="1200" height="788.7362637362637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:957,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:565546,&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://refactoring.fm/i/186312746?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ksz1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 424w, https://substackcdn.com/image/fetch/$s_!Ksz1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 848w, https://substackcdn.com/image/fetch/$s_!Ksz1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 1272w, https://substackcdn.com/image/fetch/$s_!Ksz1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a66bed-5310-4054-8f99-8243a9510899_2918x1918.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A cheat sheet to better visualize the eight archetypes!</figcaption></figure></div><h3>1) Founder CTO</h3><p>The Founder CTO optimizes for turning a personal vision into a successful company, while carrying responsibility for both the business and its technology.</p><p>Imagine you want to start a tech company tomorrow, and you&#8217;re the most technically skilled person involved. Congratulations! You&#8217;re now a Founder CTO, and you wear the distinct hats of both Founder and CTO.</p><p>Founder CTOs typically have a much stronger <strong>attachment to the business</strong> than non-founder employees. While early-stage employees may have strong financial incentives, founders&#8217; attachment is much deeper and more personal. For many Founder CTOs, the company&#8217;s success and eventual financial outcome are the positive side effects of seeing a personal mission come to life.</p><p>Founder CTOs often begin as the most experienced technical person in the organization. As the company grows, however, this may no longer hold true. Successful Founder CTOs frequently hire people who are more specialized or more experienced in particular technical domains. Some, such as Jack Dorsey (Twitter) and Patrick Collison (Stripe), eventually transitioned into CEO roles. Others, like David Heinemeier Hansson (Basecamp / 37signals) and Mitchell Hashimoto (HashiCorp), remained deeply technical as the company scaled.</p><p>The primary tension of the Founder CTO role is <strong>balancing the competing demands</strong> of the two hats, and in practice, the Founder hat often wins. During fundraising rounds, for example, the Founder CTO may spend significant time with investors rather than on technology leadership. In other situations, the Founder CTO becomes the public face of the business, requiring more time with customers or on marketing than leading the technology organization.</p><h2>2) Startup CTO</h2>
      <p>
          <a href="https://refactoring.fm/p/cto-archetypes">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Listening Tour 📞]]></title><description><![CDATA[How to find and fix developer experience friction]]></description><link>https://refactoring.fm/p/the-listening-tour</link><guid isPermaLink="false">https://refactoring.fm/p/the-listening-tour</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 28 Jan 2026 08:00:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ee3S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc69b13c2-e3d6-4d74-a60e-e0673ae75421_4248x1860.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For the last month I have been running a program for CTOs and VPs of small to mid-size companies to help them <strong>make their engineering teams </strong><em><strong>ship faster</strong></em>.</p><p>It&#8217;s an 8-week program that blends live teaching and group coaching, and it&#8217;s for small groups: only 10 seats. You can reply to this email if you are interested in the next cohort in Q2!</p><p>Why am I saying this now? Because today&#8217;s topic is inspired by the last session of the program, which was about <strong>developer experience</strong>.</p><p>For some, this will be surprising. Most of the content you can find online these days is about AI, and it seems like learning to use AI well is the most promising route to shipping faster and more often.</p><p>But I am going to spill a secret here. <strong>AI is not that hard to use</strong> &#129335;&#8205;&#9794;&#65039;</p><p>Yeah that&#8217;s right. Some people will convince you there is a whole new world to learn about agents, skills, tools, and while it is true that you need to get yourself somewhat <em>comfortable</em> with these, we are engineers, dammit! It&#8217;s all kinda easy to wrap our heads around.</p><p>So if you look at real teams &#8212; not solo engineers, I mean real engineering teams &#8212; that are getting the most out of AI, it&#8217;s most often not because they are using AI better or differently than the rest of us. It&#8217;s because they use AI <strong>on top of a platform that is already good</strong>. Folks were already productive and efficient <em>before</em> AI, and they got even more so now.</p><p>AI benefits teams who <strong>have their house in order</strong>, which largely means: <strong>good developer experience</strong>.</p><p>So, today we explore a simple but powerful technique to diagnose your devex: the <strong>Listening Tour</strong>. It&#8217;s a structured way to surface friction by talking to your engineers and mapping what you learn to your dev process.</p><p>Here is the agenda:</p><ul><li><p>&#129521; <strong>What is developer experience</strong> &#8212; and why <em>friction</em> is the enemy.</p></li><li><p>&#128269; <strong>Interview your engineers</strong> &#8212; run a listening tour to collect stories of friction.</p></li><li><p>&#128506;&#65039; <strong>Map friction to your process</strong> &#8212; group problems by dev pipeline step.</p></li><li><p>&#129518; <strong>Score by reach and impact</strong> &#8212; prioritize without overthinking.</p></li><li><p>&#128300; <strong>Find the one bottleneck</strong> &#8212; and why improving the wrong step makes things worse.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/the-listening-tour">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Making AI agents work in the real world ⚙️]]></title><description><![CDATA[How to bridge the gap from demo to production.]]></description><link>https://refactoring.fm/p/making-ai-agents-work-in-the-real</link><guid isPermaLink="false">https://refactoring.fm/p/making-ai-agents-work-in-the-real</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 21 Jan 2026 08:01:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6nFg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b94d67-cbec-4ebd-864d-d7851d22e237_1666x1058.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whenever some new tech comes in, there is a period of time in which excitement about the future <em>charges ahead</em> with respect to reality.</p><p>The more the excitement, the wider the gap.</p><p>With AI, it feels this has been the case for at least the last couple of years, to the point that it even earned its own name: the <strong><a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/seizing-the-agentic-ai-advantage">gen AI paradox</a></strong>. </p><p>In June, McKinsey reported that:</p>
      <p>
          <a href="https://refactoring.fm/p/making-ai-agents-work-in-the-real">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Finding yourself in the AI era ✨]]></title><description><![CDATA[A small personal compass to turn yourself from afraid to excited.]]></description><link>https://refactoring.fm/p/finding-yourself-in-the-ai-era</link><guid isPermaLink="false">https://refactoring.fm/p/finding-yourself-in-the-ai-era</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 14 Jan 2026 08:02:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3ppq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7081bc5-c34d-4f9a-9264-6098d3e96d94_2052x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, Luca here! This is a &#10024; <strong>bonus free essay</strong> &#10024; from Refactoring. Based on our schedule it should have been a paid one! But I really care about this topic so I decided to make it free for everyone. </p><p>If you like this piece, consider subscribing to the <a href="https://refactoring.fm/about">full version</a> of Refactoring to get one every week. It matters a lot to me and it supports our work &#128591;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Learn how to run a better tech team &#128296;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://refactoring.fm/subscribe?"><span>Learn how to run a better tech team &#128296;</span></a></p>
      <p>
          <a href="https://refactoring.fm/p/finding-yourself-in-the-ai-era">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Best of Refactoring in 2025 🏆]]></title><description><![CDATA[Our final newsletter of the year!]]></description><link>https://refactoring.fm/p/the-best-of-refactoring-in-2025</link><guid isPermaLink="false">https://refactoring.fm/p/the-best-of-refactoring-in-2025</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 31 Dec 2025 08:01:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GOgk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone! This is our last newsletter of the year, so to wrap up I am sharing the <em>very best</em> articles and interviews we created in 2025.</p><p>Think of this as the <strong>Refactoring Awards</strong> &#8212; yes, I am giving awards to myself!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GOgk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GOgk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 424w, https://substackcdn.com/image/fetch/$s_!GOgk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 848w, https://substackcdn.com/image/fetch/$s_!GOgk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 1272w, https://substackcdn.com/image/fetch/$s_!GOgk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GOgk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png" width="1456" height="925" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:925,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:577468,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/182689262?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.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_!GOgk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 424w, https://substackcdn.com/image/fetch/$s_!GOgk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 848w, https://substackcdn.com/image/fetch/$s_!GOgk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 1272w, https://substackcdn.com/image/fetch/$s_!GOgk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd240507b-bdd9-4eb7-b4b9-6d4605fa8577_1968x1250.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is the agenda:</p><ul><li><p><strong>&#128302; Best trends </strong>&#8212; what dominated the conversation this year.</p></li><li><p><strong>&#129668; Best of AI</strong> &#8212; the best AI stuff we wrote about.</p></li><li><p><strong>&#127897;&#65039; Best podca&#8230;</strong></p></li></ul>
      <p>
          <a href="https://refactoring.fm/p/the-best-of-refactoring-in-2025">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Introducing our new brand! 🎨]]></title><description><![CDATA[Finally revealing what we have been working on for months.]]></description><link>https://refactoring.fm/p/introducing-our-new-brand</link><guid isPermaLink="false">https://refactoring.fm/p/introducing-our-new-brand</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 24 Dec 2025 08:00:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7ZaI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa09c37dc-945d-45b0-bc6f-24f9a5b84ed0_2088x1146.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi there! It&#8217;s December the 24th, and we take advantage of this cozy Christmas time to publish a <em>special edition</em> and introduce our <strong>new brand identity</strong>!</p><p>Now, if I am honest, I am not a big fan of the word <em>brand identity</em> &#8212; it feels so corporate and impersonal. But I can&#8217;t say &#8220;our new logo&#8221; either, because there&#8217;s so much more here.</p><p>The way I feel about this&#8230;</p>
      <p>
          <a href="https://refactoring.fm/p/introducing-our-new-brand">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[My Home Office Setup in 2025 🪑]]></title><description><![CDATA[The ~20 essential items I use every day.]]></description><link>https://refactoring.fm/p/my-home-office-setup-in-2025</link><guid isPermaLink="false">https://refactoring.fm/p/my-home-office-setup-in-2025</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 17 Dec 2025 08:01:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AiNR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febae8909-906e-4a0b-af64-7d91490f50f1_2000x772.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! This is a </em>&#10024;<em> <strong>monthly free essay</strong> </em>&#10024;<em> from Refactoring!</em> <em>To access all our articles, library, and community, subscribe to the <a href="https://refactoring.fm/about">full version</a>:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Supercharge your tech career &#128640;&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Supercharge your tech career &#128640;</span></a></p>
      <p>
          <a href="https://refactoring.fm/p/my-home-office-setup-in-2025">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Lessons learned from 25 years in tech 🔭]]></title><description><![CDATA[An incredible journey that touches open source, devops, leadership, up to a Director role]]></description><link>https://refactoring.fm/p/lessons-learned-from-25-years-in</link><guid isPermaLink="false">https://refactoring.fm/p/lessons-learned-from-25-years-in</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 10 Dec 2025 08:44:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RXqB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! This is a guest article written by my friend <a href="https://www.linkedin.com/in/umberto-nicoletti/">Umberto Nicoletti</a>, Director of Product and Engineering at Proemion.</em></p><p><em>Umberto has had an incredible 25-year career in tech, and recently wrote a series of reflections about it on <a href="https://unicolet.blogspot.com/">his blog</a>. I loved them and asked him to consolidate them into a long-form version for Refactoring, so here we are!</em></p><p><em>Find yourself a comfy place, get a hot beverage if you fancy so, sit down and I hope you enjoy the reading!</em></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tg2H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tg2H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 424w, https://substackcdn.com/image/fetch/$s_!Tg2H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 848w, https://substackcdn.com/image/fetch/$s_!Tg2H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 1272w, https://substackcdn.com/image/fetch/$s_!Tg2H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tg2H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png" width="1456" height="419" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:419,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:894531,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://refactoring.fm/i/180945910?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.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_!Tg2H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 424w, https://substackcdn.com/image/fetch/$s_!Tg2H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 848w, https://substackcdn.com/image/fetch/$s_!Tg2H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 1272w, https://substackcdn.com/image/fetch/$s_!Tg2H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253817e5-7d50-4391-b29f-2ca3bba32476_2574x740.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>When we read stories of successful people, they always seem to be going in a straight line, where each decision gets our hero one step closer to their goals, all part of a flawless execution which appears to be planned from the very beginning.</p><p>This story will no doubt look the same, but that&#8217;s far from being the truth.</p><p>I will omit the sleepless nights, the long working days, the spite, the anger and sometimes the regret that have peppered what might otherwise look like a fairy tale.</p><p>When we tell stories, hardship is easy and sometimes convenient to forget, but it&#8217;s as much a part of who we end up being as the successes are. So while you read this, cut yourself some slack. If you are currently struggling, or have been, do know that it&#8217;s ok &#8212; we all struggle, and no, we haven&#8217;t figured it all out either.</p><p>By the time I am writing this I have been employed professionally in ICT for ~25 years, starting on a peculiar date: April 1st 2000.</p><p>I had started using computers semi-seriously a few years earlier, in 1996. And in 1995, three things had happened around me:</p><ol><li><p><strong>Microsoft launched Windows 95</strong> &#8212; which got the whole world excited about personal computers at an unprecedented level of popularity.</p></li><li><p><strong>The Internet became a thing</strong> &#8212; it was mentioned on TV and you might get it at home, for free, with dialup.</p></li><li><p><strong>I was about to start university</strong> &#8212; and was looking around at what field to pursue.</p></li></ol><p>For me, the decision couldn&#8217;t have been easier: it had to be Computer Science! Deep down I knew that the Internet and the World Wide Web would end up changing the world (if anything, I underestimated how much) and I wanted to be a part of that.</p><p>Also, and that helped although it was not the main reason, it appeared to be offering a promising career because demand was exponentially outgrowing supply.</p><p>Only 30 years later I would discover that this intersection of events is what the Japanese call <em>ikigai</em>. </p><p><strong>Ikigai<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></strong> is used to refer to a passion that gives value and joy to life, by sitting at the intersection of four pillars:</p><ol><li><p><strong>&#127758; What the world needs</strong></p></li><li><p><strong>&#10084;&#65039; What I love doing</strong></p></li><li><p><strong>&#128170; What I am good at</strong></p></li><li><p><strong>&#128176; What I can get paid for</strong></p></li></ol><p>My sustained enjoyment of this work, 30 years on, is a direct result of the inherent purpose  at the convergence of these four pillars &#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RXqB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RXqB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 424w, https://substackcdn.com/image/fetch/$s_!RXqB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 848w, https://substackcdn.com/image/fetch/$s_!RXqB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 1272w, https://substackcdn.com/image/fetch/$s_!RXqB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RXqB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png" width="1456" height="974" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:221415,&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://refactoring.fm/i/180945910?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.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_!RXqB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 424w, https://substackcdn.com/image/fetch/$s_!RXqB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 848w, https://substackcdn.com/image/fetch/$s_!RXqB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 1272w, https://substackcdn.com/image/fetch/$s_!RXqB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad84a670-d1b3-4436-88c8-60258e439c17_1890x1264.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s explore <em>how</em>, by organizing this journey into three stages:</p><ol><li><p><strong>&#127891; University &amp; Open Source</strong> &#8212; the messy beginnings!</p></li><li><p><strong>&#128268; Power Adapters and DevOps</strong> &#8212; how a lucky encounter set off my career</p></li><li><p><strong>&#128130;&#8205;&#9794;&#65039; Head of R&amp;D</strong> &#8212; growing by playing the long game, coaching, and communities.</p></li></ol><p>Let&#8217;s dive in!</p><div><hr></div><h2>&#127891; University &amp; Open Source</h2><p>While at university I did something that, when I look back at it, I would say it was pretty reckless (at least for the time, or my family): I joined the <strong>Erasmus program<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></strong>  as an exchange student. That gave me a chance to refine my English to a level that would have been otherwise unattainable. This was the end of the &#8216;90s when very few people spoke English and translators were still a booming business.</p><p>This hardly gained <strong>English fluency</strong> would prove supremely useful in the following years.</p><p>My first job out of university was glamorous (for the time) and came with a lot of wiggle room: I worked for a small tech company that dealt with large customers (mostly healthcare) and, when everybody was still writing desktop applications, was betting big on web ones. The job required sacrifices because it had a long commute, but I accepted because I intuitively grasped that it would allow me to gain experience not possible otherwise.</p><p>Having the company started out as an internet POP (point of presence), they also offered email and web presence services, which allowed me to tinker with mail servers, systems and network administration, web applications, databases, pre-sales, and even IT helpdesk.</p><p>This varied experience shaped me into an <strong>extremely versatile resource</strong>, and I still think is my greatest asset today.</p><p>They were also deeply <strong>committed to Open Source Software</strong>, which meant that I would get to play (and sometimes contribute back) to some projects we used. Spoiler: it was through one of these projects that I eventually got to know the person that would hire me at my current job.</p><p>I stayed at this job for a (relatively) long time because I liked it and it was my <em>ikigai</em>. But I was growing anxious to prove my worth outside a circle that I started finding boring.</p><p>As I said, I&#8217;ve been an avid Open Source user who contributed back as often as I could. Last time I checked&#8212;a decade ago&#8212;I had a level 2 <em>fosser</em> and Kudos rank of 8/10 on <a href="https://openhub.net/">Blackduck</a> (formerly Ohloh) which, quoted from their own page of the time was &#8220;<em>relatively uncommon, with about only 6% of the population receiving this rank</em>&#8221;.</p><p>This reinforced my desire to look for a new challenge &#128071;</p><blockquote><h4>A takeaway and a provoking thought &#128173;</h4><p><em>Pursuing a passion or doing a job you love is great, but there&#8217;s a better option: do a job that you love and that you can also make a good living out of.</em></p><p><em>When we&#8217;re aligned with the universe, everything is easier, but true innovators are those that are willing to go against the universe.</em></p></blockquote><div><hr></div><h2>&#128268; Power Adapters &amp; DevOps</h2><p>It was at an Open Source conference in Germany that a fortuitous and definitely funny situation set in motion a series of events that eventually led to my new career.</p>
      <p>
          <a href="https://refactoring.fm/p/lessons-learned-from-25-years-in">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How Graphite Ships 🚢]]></title><description><![CDATA[A deep dive into the workings of the team behind one of the most beloved dev tools.]]></description><link>https://refactoring.fm/p/how-graphite-ships</link><guid isPermaLink="false">https://refactoring.fm/p/how-graphite-ships</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 03 Dec 2025 08:02:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/afedc4c6-7a01-4f72-9a94-3c920dcbf697_2136x1420.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s a weird time for engineering teams.</p><p>The jury is still out on AI&#8217;s true impact on productivity, but at least it feels like it gave everyone <em>permission</em> to question old practices and try new things.</p><p>Nothing is sacred anymore, and everyday someone is figuring out something new: inventing workflows, debating how engineers should spend their time, and more.</p><p>The result is an incredible diversity.</p><p>Some teams are going all-in on AI, others are doubling down on fundamentals. Some are rethinking things entirely, others are skeptical that much has changed at all.</p><p>This is all fascinating&#8230; and overwhelming.</p><p>A lot of the <em>thought leadership</em> out there is necessarily short-lived, and I don&#8217;t want to be guilty of that myself, so I want to experiment with doing more of one simple thing: <strong>just sit down with leaders of elite engineering teams, and ask them how they work</strong>.</p><p>Not theory. Just: <em>what do you do, and why?</em></p><p>The goal is to learn from teams that ship great products, fast &#8212; and understand how they&#8217;re adapting to this moment. What practices are they doubling down on? What are they throwing out the window?</p><p>For this first chat, I sat down with <strong><a href="https://www.linkedin.com/in/gregmfoster">Greg Foster</a></strong>, co-founder and CTO of <strong><a href="https://graphite.dev/">Graphite</a></strong>, a beloved tool that helps engineers ship faster through stacked changes and AI-powered code reviews.</p><p>What makes Graphite especially interesting is that they&#8217;re an <strong>AI</strong> <strong>dev tool built by devs, for devs</strong>. Their engineers use the tool every day. This creates an incredibly tight feedback loop and forces them to be intentional about how they work.</p><p>During our chat, Greg shared several practices that stood out &#8212; some controversial, some deceptively simple, but all battle-tested:</p><ul><li><p>&#128640; <strong>High-agency engineers</strong> &#8212; why Graphite runs with just ~2 PMs for 30 engineers, and how they make it work.</p></li><li><p>&#127922; <strong>Onboarding roulette</strong> &#8212; randomly deleting employee accounts to dogfood their own product.</p></li><li><p>&#127959;&#65039; <strong>Boring tech == fast shipping</strong> &#8212; monorepo, single language, Postgres for everything: simple beats clever.</p></li><li><p>&#128065;&#65039; <strong>Code review in the AI era</strong> &#8212; the vision for AI deciding what needs human review, and how stacking fits in.</p></li><li><p>&#128293; <strong>Hard work as a lagging indicator</strong> &#8212; why the 996 debate misses the point entirely.</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mDkE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mDkE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 424w, https://substackcdn.com/image/fetch/$s_!mDkE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 848w, https://substackcdn.com/image/fetch/$s_!mDkE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 1272w, https://substackcdn.com/image/fetch/$s_!mDkE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mDkE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png" width="1456" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:489328,&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://refactoring.fm/i/180384931?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.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_!mDkE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 424w, https://substackcdn.com/image/fetch/$s_!mDkE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 848w, https://substackcdn.com/image/fetch/$s_!mDkE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 1272w, https://substackcdn.com/image/fetch/$s_!mDkE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eda5f36-628e-482c-934d-4f28bcd15dd9_2102x526.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/how-graphite-ships">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The AI Productivity Paradox 🏃‍♂️]]></title><description><![CDATA[Exploring why AI often falls short of expectations, and what good teams are doing to bridge the gap.]]></description><link>https://refactoring.fm/p/the-ai-productivity-paradox</link><guid isPermaLink="false">https://refactoring.fm/p/the-ai-productivity-paradox</guid><dc:creator><![CDATA[Luca Rossi]]></dc:creator><pubDate>Wed, 26 Nov 2025 08:38:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XIZb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F785891cf-4593-42c6-9683-16c31f3e67a2_1640x966.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Luca here! This is a <strong>weekly essay</strong> from Refactoring!</em> <em>To access all our articles, library, and community, subscribe to the <a href="https://refactoring.fm/about">full version</a>:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://refactoring.fm/subscribe?&quot;,&quot;text&quot;:&quot;Supercharge your tech career &#128640;&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://refactoring.fm/subscribe?"><span>Supercharge your tech career &#128640;</span></a></p><div><hr></div><p>Last week I finally caught up with the latest <a href="https://dora.dev/research/ai/">DORA Research about AI</a>. It is a massive, 140 pages doc, exploring the state of AI assisted development &#8212; and it gave me a lot to think about.</p><p>By now, there are a lot of reports out there that try to figure out how engineering teams are doing with respect to AI. Broadly speaking, there are three main areas that are important to measure:</p><ol><li><p>&#127793; <strong>Adoption</strong> &#8212; how much engineers are using AI tools.</p></li><li><p>&#129716; <strong>Productivity</strong> &#8212; how much AI is making individuals and teams work faster.</p></li><li><p>&#127795; <strong>Impact</strong> &#8212; how much all of this turns into business outcomes.</p></li></ol><p>These work as increasing levels of maturity, and increasingly better proxies for true value: adoption by itself is not very useful, productivity is somewhat better, and impact is what we truly care about.</p><p>The problem is: these topics are also in ascending order of <em>how hard</em> they are to measure. A lot of the available data is either fuzzy, or self-reported, or both, which makes it hard to trust.</p><p>So today I want to cover some of the ideas that keep surfacing in these types of research, common pitfalls to avoid, and mental models I have seen the best teams use to trend in the right direction &#8212; the one that goes from &#8220;adoption is high&#8221;, to &#8220;impact is high&#8221;.</p><p>Here is the agenda:</p><ul><li><p><strong>&#128138; Productivity placebo</strong> &#8212; are you more productive, for real?</p></li><li><p>&#9940; <strong>Bottlenecks</strong> &#8212; is the whole pipeline more productive?</p></li><li><p>&#128269; <strong>Quality traps</strong> &#8212; are you more productive at the expense of something else?</p></li><li><p>&#9876;&#65039; <strong>Collaboration sucks</strong> &#8212; an unpleasant but useful mental model.</p></li><li><p>&#129668; <strong>Making things simpler</strong> &#8212; how do you trend in the right direction?</p></li></ul><p>Let&#8217;s dive in!</p><div><hr></div>
      <p>
          <a href="https://refactoring.fm/p/the-ai-productivity-paradox">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>