<?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[Packt Deep Engineering: Newsletter Issues]]></title><description><![CDATA[Deep Engineering weekly newsletter issues for developers and software architects featuring expert-led insights, deep dives into modern systems, and clear thinking on real-world software design.]]></description><link>https://deepengineering.net/s/newsletter-issues</link><image><url>https://substackcdn.com/image/fetch/$s_!H5BJ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png</url><title>Packt Deep Engineering: Newsletter Issues</title><link>https://deepengineering.net/s/newsletter-issues</link></image><generator>Substack</generator><lastBuildDate>Wed, 12 Aug 2026 19:28:22 GMT</lastBuildDate><atom:link href="https://deepengineering.net/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Packt]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[deepengineering@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[deepengineering@substack.com]]></itunes:email><itunes:name><![CDATA[Packt]]></itunes:name></itunes:owner><itunes:author><![CDATA[Packt]]></itunes:author><googleplay:owner><![CDATA[deepengineering@substack.com]]></googleplay:owner><googleplay:email><![CDATA[deepengineering@substack.com]]></googleplay:email><googleplay:author><![CDATA[Packt]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Deep Engineering #58: Sebastian Hassinger on Where Quantum Progress is Real]]></title><description><![CDATA[On why qubit counts measure register size rather than capability, what code distance reveals that a headline number hides, and where quantum computing delivers first.]]></description><link>https://deepengineering.net/p/issue-58-sebastian-hassinger-qubit-counts</link><guid isPermaLink="false">https://deepengineering.net/p/issue-58-sebastian-hassinger-qubit-counts</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 06 Aug 2026 15:45:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c258bf82-e5d3-4213-9f0b-4beac02d7cec_2400x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Featured - <a href="https://www.eventbrite.co.uk/e/langgraph-masterclass-from-beginner-to-professional-tickets-1992773766981?aff=deepeng&amp;discount=DEEPENG50">LangGraph Masterclass: From Beginner to Professional</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/langgraph-masterclass-from-beginner-to-professional-tickets-1992773766981?aff=deepeng&amp;discount=DEEPENG50" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Nfc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!8Nfc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!8Nfc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!8Nfc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Nfc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png" width="900" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/langgraph-masterclass-from-beginner-to-professional-tickets-1992773766981?aff=deepeng&amp;discount=DEEPENG50&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!8Nfc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!8Nfc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!8Nfc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!8Nfc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dee42c8-2093-48df-bcbd-a3988a0b12af_900x300.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This hands-on masterclass takes you from <strong>LangGraph fundamentals</strong> to <strong>supervisor</strong> and <strong>hierarchical</strong> multi-agent systems, with <strong>live debugging</strong> in LangSmith throughout. </p><p style="text-align: center;"><span>Deep Engineering readers save </span><strong><span>50%</span></strong><span> with code - </span><strong>DEEPENG50</strong><span>.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/langgraph-masterclass-from-beginner-to-professional-tickets-1992773766981?aff=deepeng&amp;discount=DEEPENG50&quot;,&quot;text&quot;:&quot;Register here &#8594;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/langgraph-masterclass-from-beginner-to-professional-tickets-1992773766981?aff=deepeng&amp;discount=DEEPENG50"><span>Register here &#8594;</span></a></p><div><hr></div><p><span>&#9997;&#65039; </span><strong><span>From the editor&#8217;s desk,</span></strong></p><p><span>Welcome to the </span><strong><span>58th</span></strong><span> issue of </span><strong><span>Deep Engineering</span></strong><span>!</span></p><p>On August 3, NTT announced that it has signed a capital and business alliance with OptQC, the University of Tokyo spinout building optical quantum processors, with both companies aiming at a fault-tolerant machine of one million qubits. The <a href="https://group.ntt/en/newsrelease/2026/08/03/260803a.html">announcement from NTT</a> lays out a phased roadmap. The companies aim to complete the system architecture and key component technologies by fiscal 2027 alongside a practical 10,000 qubit system, then begin verification work in fiscal 2028 and deliver a platform for running optical and classical machines together the year after.</p><p>One million is the largest number the field has yet attached to a headline, and it arrives in a year when the reported metric already shifted once. Through the first half of 2026 vendors moved from physical qubit counts to logical qubit counts as the figure worth announcing. Both are real results, and both leave out the properties that decide what a machine can actually compute, which is where this issue picks up.</p><p><a href="https://www.linkedin.com/in/shassinger">Sebastian Hassinger</a> has read claims like these from inside the companies making them, first on the <a href="https://www.ibm.com/quantum">IBM Quantum team</a> and later leading go to market for <a href="https://aws.amazon.com/braket/">AWS Quantum Technologies</a>. He wrote <a href="https://www.packtpub.com/en-us/product/the-new-quantum-era-9781807787370">The New Quantum Era</a> for readers without a physics background, and today he walks us through which numbers carry the information and which ones do not.</p><blockquote><p>You can watch the full session or read the <a href="https://deepengineering.net/p/quantum-computing-beyond-the-hype-sebastian-hassinger">transcript here</a>.</p></blockquote><p><strong>Let&#8217;s get started.</strong> </p><div class="callout-block" data-callout="true"><h2 style="text-align: center;"><a href="https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb"><span data-color="#f97141" style="color: rgb(249, 113, 65);">Agent-written TLA+</span></a></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sw8h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sw8h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png" width="296" height="296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:300,&quot;resizeWidth&quot;:296,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sw8h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 style="text-align: center;">An agent wrote our <strong>TLA+</strong> spec. The model checker explored <strong>14.3M</strong> states and caught a real race.</p><p style="text-align: center;"></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb&quot;,&quot;text&quot;:&quot;Read the write-up&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb"><span>Read the write-up</span></a></p><p style="text-align: center;"></p></div><div><hr></div><p><strong>Expert Insight</strong></p><h2><span>Qubit Count Measures Register Size, Not Capability</span></h2><p><em>by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;e7195419-ea93-4f2b-84d4-a7959d36a209&quot;}" data-component-name="MentionToDOM"></span> with <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Sebastian Hassinger&quot;,&quot;id&quot;:535827458,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a70390e-d1ad-4e61-8e13-23bc47b2a921_144x144.png&quot;,&quot;uuid&quot;:&quot;514aa520-1a03-4ba0-9100-b5edc23133a9&quot;}" data-component-name="MentionToDOM"></span> </em></p><p><span>Three logical qubit results landed in the first half of 2026, and in each one the number worth reading is not the number in the headline. QuEra published 96 logical qubits encoded across 448 neutral atoms, a ratio near five to one. Quantinuum reported 48 logical qubits drawn from 98 trapped ions, closer to two to one. IBM&#8217;s published</span><a href="https://www.ibm.com/quantum/blog/large-scale-ftqc"><span> fault tolerance roadmap</span></a><span> targets 200 logical qubits from roughly 10,000 physical ones by 2029, a ratio near fifty to one.</span></p><p><span>Those ratios differ by an order of magnitude because the underlying codes differ, and the choice of code decides whether a logical qubit corrects errors or only detects them. A count reported on its own collapses all of that into a single integer, which is why the integer tells you very little about what the machine computes.</span></p><p><a href="https://www.linkedin.com/in/shassinger">Sebastian Hassinger</a> worked on the <strong>IBM Quantum team</strong> and later led go to market for <strong>AWS Quantum Technologies</strong>, and he wrote<span> </span><a href="https://www.packtpub.com/en-us/product/the-new-quantum-era-9781807787370">The New Quantum Era</a> <span>to give engineers without a physics background enough grounding to read results like these directly. During our interview when I asked him what actually carries information in a milestone result, he began by taking apart the metric the field has reported for a decade. &#8220;Qubit count is effectively the register size of that computer,&#8221; he said. Then came the harder line, aimed at a claim the field now repeats freely. &#8220;Anytime you hear somebody saying quantum computing is just a matter of engineering now, be suspicious of that person&#8217;s claims.&#8221;</span></p><h3><span>Register size bounds information, not computation</span></h3><p><span>The clearest demonstration that a raw count says little about capability comes from IBM&#8217;s own hardware history. And Hassinger was there for it. The technical roadmap produced a chip called Condor at just over a thousand qubits, which he describes as genuinely valuable for the research and fabrication effort it took to build. But it saw little use. Connectivity between qubits on the chip was low and the noise proved very difficult to manage, so researchers went back to the smaller machines in the 127 to 133 qubit range, which were more capable in practice.</span></p><p><span>The reason is architectural rather than numerical. Register size sets an upper bound on how much information you can load, and nothing beyond that. Hassinger points out that QuEra&#8217;s 256 qubit Aquila holds 256 bits at a time, which sounds unremarkable until you entangle those qubits and produce a state vector of two to the 256, a computational space you cannot physically recreate on classical hardware. The capability lives in the entanglement structure and in how well the problem maps onto it, so a machine with more qubits and worse connectivity computes less than a smaller machine with better ones.</span></p><p><span>That same logic now applies one level up. A logical qubit is an encoding, not a unit, and its value depends on the code family, the physical to logical ratio, and the error model the code assumes. Codes at distance two detect errors without correcting them, which is a different guarantee from correction, and the difference produced considerable argument when Microsoft and Quantinuum reported reliable logical qubits in 2024 using error detection with post-selection. Two systems reporting the same logical qubit count can therefore be doing categorically different things.</span></p><h3><span>Code distance carries the information a count discards</span></h3><p><span>Hassinger&#8217;s proposed substitute is quite specific, and it happens to be exactly the property that separates those cases. Fidelity and noise are what matter, he reasons, particularly the fidelity of one and two qubit gates, where two qubit operations mean entanglement. Those figures are hard to extract from a published result, so he offers a proxy that survives summarization.</span></p><p><span>Read the resilience of the error correction code, expressed as a </span><strong><span>distance or a d value</span></strong><span>. That is roughly how many errors the system absorbs before the encoded information collapses and the computation is lost, so a higher distance means a more resilient machine. He points to the Willow experiment as the useful reference, roughly a hundred physical qubits arranged in a surface code presenting as one logical qubit at distance seven. That snapshot carries what you need without the underlying gate fidelities, because the only two questions that determine what you can run are &#8220;how many logical qubits do I get, and how resilient is that error correction.&#8221;</span></p><p><span>Pair a logical qubit count with its code, its distance, and its encoding ratio and you have something you can reason about. Take the count alone and you have an integer that happens to increase.</span></p><h3><span>Speculation hardens into certainty before it reaches you</span></h3><p><span>There is a structural reason the public record runs ahead of the results, and it operates on the way from the lab to the summary rather than inside the science. Hassinger named the pressure that drives it, and he was unusually direct about where the gap opens.</span></p><p><span>&#8220;Since at least the beginning of the Q2B conferences put on by QCWare, there has been a recurring chorus demanding to know what are quantum computing&#8217;s use cases, how will it be useful for enterprises,&#8221; he told us. &#8220;Marketing can be tempted to take speculative ideas and present them as certainties, stretching the truth about a scientist&#8217;s speculation to reframe it as definitive. The other question is always when, so timelines are also something that marketing can take liberties with.&#8221;</span></p><p><span>Both distortions are directional, which makes them correctable. A researcher&#8217;s conditional loses its condition, and a scientific dependency acquires a date. Reading a result back through those two transformations usually recovers something close to the original claim.</span></p><h3><span>Roadmaps model engineering determinism onto unsolved physics</span></h3><p><span>The deeper issue Hassinger identifies is a category problem. A roadmap projects milestones one year out, three years, five years, and he is blunt about what kind of document that is. &#8220;That&#8217;s an engineering document,&#8221; he says, &#8220;and engineering is much more deterministic than the underlying scientific breakthroughs that are required to enable the engineering to deliver those milestones.&#8221;</span></p><p><span>Transduction is the concrete case. Superconducting qubits operate inside a dilution refrigerator near absolute zero, and a refrigerator has finite volume, so scaling past one fridge means entangling qubits across separate cryostats. That requires converting the quantum state to a photonic frequency used in telecom, carrying it over fiber as what the field calls flying qubits, then converting back at the far end. None of the known conversion methods delivers the fidelity a reliable device needs, and nobody yet knows what closing that gap requires. &#8220;It&#8217;s not just hard work,&#8221; he says of that class of problem. &#8220;It&#8217;s a lot of hard work, but it&#8217;s also luck, because we don&#8217;t know what we don&#8217;t know.&#8221;</span></p><p><span>This is the reason he treats specifications and milestone dates as the least informative part of any hardware program, and the unsolved science underneath as the part that determines whether the dates mean anything. It is also why his sharpest formulation of the field&#8217;s position lands where it does. &#8220;A qubit is a very interesting device with no intrinsic commercial value,&#8221; he says, and converting it into something useful still depends on physics nobody has finished.</span></p><h3><span>Classical simulability is the only threshold that changes anything</span></h3><p><span>Hassinger&#8217;s position does not end in skepticism, because the field is converging on one measurable target regardless of which architecture reaches it. &#8220;The consensus is we need to deliver fault tolerant logical qubits at a scale that is not simulatable by a classical computer,&#8221; he says. &#8220;That&#8217;s the North Star we&#8217;re all sailing towards.&#8221; Once a system passes the point where your laptop or your GPU cluster can reproduce its output, running it on quantum hardware becomes necessary rather than interesting, and nothing before that crossing changes what you can compute.</span></p><p><span>That threshold also tells you where the physics pays off first, and his answer is narrower than the general coverage implies. Materials science arrives first because condensed matter behaviour maps naturally onto these systems, with small molecule chemistry close behind, while</span><a href="https://deepengineering.net/p/materials-science-first-real-quantum-value"><span> optimization, cryptography, and machine learning all wait on thousands of logical qubits</span></a><span>.</span></p><p><span>So the technical reading is straightforward. When a new result publishes, work out its encoding ratio and its code distance before you compare it to anything, since those two numbers determine what the machine tolerates and the logical qubit count does not. And when a roadmap updates, separate the engineering milestones from the scientific dependencies underneath them and check which unsolved physics the far dates rest on. Then put the effort into</span><a href="https://deepengineering.net/p/boolean-thinking-barrier-quantum-adoption"><span> building quantum intuition inside your own team</span></a><span>, because recognizing the high dimensional structure in your own problems transfers whichever architecture crosses the threshold first.</span></p><div><hr></div><h2>In case you missed</h2><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8bf6bfb3-d6d4-4a75-970d-968c07e34b7d&quot;,&quot;caption&quot;:&quot;How to tell genuine quantum progress from hype, why qubit count misleads, where the technology delivers value first, and how a classical developer starts.<br />&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Quantum Computing Beyond the Hype with Sebastian Hassinger&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:535827458,&quot;name&quot;:&quot;Sebastian Hassinger&quot;,&quot;bio&quot;:&quot;Author of The New Quantum Era book and host of The New Quantum Era podcast.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a70390e-d1ad-4e61-8e13-23bc47b2a921_144x144.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-08-05T19:56:08.385Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d9f9908-0a93-4cd0-8e54-31f3e5f29800_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.net/p/quantum-computing-beyond-the-hype-sebastian-hassinger&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:209966044,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128736;&#65039; Tool of the Week</h2><p><a href="https://github.com/quantumlib/Stim"><span>Stim</span></a><span> is an open source stabilizer circuit simulator maintained under Google&#8217;s quantumlib organisation, built for analysing quantum error correction circuits at speed.</span></p><p><strong><span>Highlights</span></strong></p><ul><li><p><span>Derives a circuit&#8217;s actual code distance instead of relying on the number a vendor publishes.</span></p></li><li><p><span>Turns a noisy circuit into a detector error model ready to configure matching-based decoders.</span></p></li><li><p><span>Samples circuits with thousands of qubits and millions of operations at kilohertz rates.</span></p></li><li><p><span>Installs as a Python package and also runs as a C++ library or a command line tool.</span></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/quantumlib/Stim&quot;,&quot;text&quot;:&quot;Learn more about Stim&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/quantumlib/Stim"><span>Learn more about Stim</span></a></p><div><hr></div><h2><strong>&#128206; Tech Briefs</strong></h2><ul><li><p><a href="https://claude.com/blog/claude-enterprise-inference-hooks"><span>Anthropic ships inference hooks for Claude Enterprise</span></a><span> - Governed prompts now route to customer security servers before inference, centralizing DLP across Claude Enterprise surfaces.</span></p></li><li><p><a href="https://openai.com/index/advancing-the-price-performance-frontier-with-gpt-5-6/"><span>OpenAI cuts GPT-5.6 prices and adds Fast mode</span></a><span> - Luna and Terra get lower API pricing, while Sol Fast mode offers 2.5&#215; speed at 2&#215; cost.</span></p></li><li><p><a href="https://www.dwavequantum.com/company/newsroom/press-release/d-wave-and-nasdaq-verafin-announce-agreement-for-quantum-computing-application-development/"><span>D-Wave and Nasdaq Verafin agree a quantum proof of concept for financial crime detection</span></a><span> - Nasdaq Verafin will test D-Wave quantum-hybrid workflows on hundreds of financial-crime signals and network relationships.</span></p></li><li><p><a href="https://docs.cloud.google.com/sql/docs/postgres/release-notes"><span>Cloud SQL makes PSC reconciliation default</span></a><span> - New or newly enabled PSC instances now close existing connections after project removal from allowed lists.</span></p></li><li><p><a href="https://www.paloaltonetworks.com/blog/2026/08/prisma-airs-unified-data-protection-for-claude/"><span>Palo Alto Networks integrates Prisma AIRS with Claude Enterprise</span></a><span> - </span>Prisma AIRS can inspect Claude prompts before inference, applying existing DLP policies across Claude Enterprise surfaces.</p></li></ul><div><hr></div><div class="callout-block" data-callout="true"><p><strong>&#128227; Contribute to Deep Engineering</strong></p><p><strong>Pitch</strong><span> a </span><a href="https://deepengineering.net/s/practical-deep-dives">practical deep dive</a><span> under your </span><strong>byline</strong><span>. Or if you lead a team, we would like to </span><strong>interview</strong><span> you and build an </span><a href="https://deepengineering.net/s/engineering-leadership">engineering leadership</a><span> feature around your </span><strong>story</strong><span>.</span><br><br><strong>Subscribe</strong><span> to </span><strong>Deep Engineering</strong><span> newsletter and </span><strong>message</strong><span> us through the </span><strong>chat option</strong><span>, or email us at </span><strong>saqibj @ packt.com</strong><span>.</span></p></div><div><hr></div><p><span>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</span></p><p><span>We&#8217;ll be back next week with more expert-led content.</span></p><p><span>Keep building,</span></p><p><span>Saqib Jan</span></p><p><span>Editor-in-Chief, Deep Engineering</span></p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb"><span>speak to us about partnering</span></a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #57: Rory Preddy on Cutting Agent Costs Without Ranking Engineers]]></title><description><![CDATA[Rory Preddy of Microsoft and GitHub argues cost discipline belongs in agent profiles and per-session spend caps, not in per-engineer token leaderboards.]]></description><link>https://deepengineering.net/p/issue-57-cutting-agent-costs-without-ranking-engineers-rory-preddy</link><guid isPermaLink="false">https://deepengineering.net/p/issue-57-cutting-agent-costs-without-ranking-engineers-rory-preddy</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 30 Jul 2026 15:14:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9f94df86-bee9-49db-858e-e5ead0589bba_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Featured - <a href="https://www.eventbrite.co.uk/e/engineering-reliable-agentic-ai-systems-tickets-1992373400474?aff=deepeng">Engineering Reliable Agentic AI Systems</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/engineering-reliable-agentic-ai-systems-tickets-1992373400474?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e4Gm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e4Gm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e4Gm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e4Gm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e4Gm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg" width="800" height="267" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/engineering-reliable-agentic-ai-systems-tickets-1992373400474?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!e4Gm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e4Gm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e4Gm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e4Gm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d51f22f-96f5-4eb9-a4a8-174e664205cb_800x267.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Building an agent is easy. Building one that survives production takes architecture, verification, and stopping conditions that actually stop. Four hands-on hours with <a href="https://www.linkedin.com/in/rickhigh">Rick Hightower</a> on loop engineering, evaluation harnesses, context efficiency, and safe MCP tool integration, live on <strong>29 August</strong>.</p><p style="text-align: center;"><span>Deep Engineering readers save 40% with code - </span><strong>DEEPENG40</strong><span>.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/engineering-reliable-agentic-ai-systems-tickets-1992373400474?aff=deepeng&quot;,&quot;text&quot;:&quot;Save your seat &#8594;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/engineering-reliable-agentic-ai-systems-tickets-1992373400474?aff=deepeng"><span>Save your seat &#8594;</span></a></p><div><hr></div><p><span>&#9997;&#65039; </span><strong><span>From the editor&#8217;s desk,</span></strong></p><p><span>Welcome to the </span><strong><span>57th</span></strong><span> issue of </span><strong><span>Deep Engineering</span></strong><span>!</span></p><p><span>On 28 July, </span><a href="https://github.blog/changelog/2026-07-28-github-copilot-app-usage-metrics-now-expand-across-report-rollups/"><span>GitHub&#8217;s changelog</span></a><span> recorded a change that sounds administrative and is not. Individual Copilot app activity is now attributed to users in the enterprise-user and organization-user reports, with a per-user section reporting session counts, request counts, prompt counts, and a token usage breakdown covering output tokens, prompt tokens, and average tokens per request. Per-engineer token attribution is now a REST call against an API most enterprise administrators already query.</span></p><p><span>Nothing about that is objectionable on its own, because a team that cannot see its consumption cannot govern it. The risk lives in what gets built next, since the shortest path from per-user token data to a management artifact is a ranking. Amazon and Meta both stood up internal leaderboards ranking engineers by tokens burned, then dismantled them within a quarter once engineers began padding their usage, which we covered in </span><a href="https://deepengineering.net/p/special-issue-judgment-not-tokenmaxxing-creates-value"><span>our special issue on token maxxing</span></a><span>. The visibility has now improved considerably, and the temptation has improved with it.</span></p><p><a href="https://za.linkedin.com/in/rorypreddy"><span>Rory Preddy</span></a><span>, AI Advocate in Developer Relations at </span><strong><span>Microsoft</span></strong><span> and </span><strong><span>GitHub</span></strong><span>, worked five years in cloud advocacy watching the same question mature from how much will we spend into how much can we save, and he argues the answer was never individual behaviour. Today&#8217;s issue comes out of </span><a href="https://www.youtube.com/watch?v=tVRcYTX_HCg&amp;feature=youtu.be"><span>our live session</span></a><span>, where his position was that cost discipline belongs in the artifacts a team inherits rather than in anything resembling a performance conversation.</span></p><blockquote><p>You can also read this <a href="https://deepengineering.net/p/token-efficiency-rory-preddy-agent-token-costs">practical deep dive on the mechanics</a> of token efficiency by Preddy.</p></blockquote><p><strong>Let&#8217;s get started.</strong> </p><div class="callout-block" data-callout="true"><h2 style="text-align: center;"><a href="https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb"><span data-color="#f97141" style="color: rgb(249, 113, 65);">Agent-written TLA+</span></a></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sw8h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sw8h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png" width="296" height="296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:300,&quot;resizeWidth&quot;:296,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sw8h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!sw8h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f00ac2e-e823-441a-b835-1e729ec944e9_300x300.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 style="text-align: center;">An agent wrote our <strong>TLA+</strong> spec. The model checker explored <strong>14.3M</strong> states and caught a real race.</p><p style="text-align: center;"></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb&quot;,&quot;text&quot;:&quot;Read the write-up&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.vpdae.com/redirect/o2rdxoqtpm0p1but31d2wk9ffrb"><span>Read the write-up</span></a></p><p style="text-align: center;"></p></div><div><hr></div><p><strong>Expert Insight</strong></p><h2><span>Cost discipline belongs in the agent profile, not the performance review</span></h2><p><em>by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;e7195419-ea93-4f2b-84d4-a7959d36a209&quot;}" data-component-name="MentionToDOM"></span> with <a href="https://za.linkedin.com/in/rorypreddy">Rory Preddy</a></em></p><p><span>The logic behind a token leaderboard feels right from a distance, because agents produce measurable volume, volume varies between engineers, and variance invites comparison.</span><a href="https://za.linkedin.com/in/rorypreddy"><span> Rory Preddy</span></a><span>, AI Advocate in Developer Relations at </span><strong><span>Microsoft</span></strong><span> and </span><strong><span>GitHub</span></strong><span>, has observed this sequence play out once before in cloud, and his position is simply that &#8220;Rather than spend more, spend less.&#8221;</span></p><p><span>Coming from somebody whose job is persuading developers to adopt AI, that is a more interesting claim than it would be from a finance team, and the reasoning underneath it is what makes it useful. Preddy is not arguing for austerity or for slowing teams down. He is arguing that cost discipline is a property of the artifacts a team inherits rather than a property of the people using them, which relocates the problem from individual behavior to engineering infrastructure. For any leader currently deciding what belongs on an AI dashboard, that distinction determines whether the dashboard helps or quietly makes things worse.</span></p><h3><span>Spending less is an engineering target, not a budget instruction</span></h3><p><span>Preddy formed this view during five years as a cloud advocate, in rooms with the CTOs of banks whose balance sheets run larger than some national economies. He describes asking those CTOs what worried them most, and the answer changed shape over time in a way worth attending to. Early on they wanted to know how much they were going to spend, because a four-year hardware forecast let them buy servers and depreciate the cost against a schedule they controlled. Later the question inverted entirely, and what they wanted to know was how much they could save.</span></p><p><span>That inversion is the part that transfers to tokens, and it transfers with one difference that makes it more urgent rather than less. A server that gets over-provisioned wastes capital on a predictable schedule, and the waste appears on a depreciation line somebody reviews. An agent loop that resends its context on every iteration wastes money continuously, invisibly, and at a rate nobody set, because the cost arrives as consumption rather than as a purchase. Cloud waste taught organizations to rightsize compute against a bill they could at least forecast. Token waste removes the forecast.</span></p><p><span>Preddy&#8217;s instruction to teams starting now runs from the floor upward, so his advice is to look for &#8220;what&#8217;s the minimum and then cost save, not maximum.&#8221; The engineering content of that instruction matters more than its thrift. A team that starts at the largest model with the longest context has no baseline against which to measure any later improvement, so it cannot tell whether a change helped. A team that starts at the smallest model completing the work has a floor, a known cost, and a reason to escalate when the work genuinely demands it. The cheap path becomes the measured default rather than the fallback nobody trusts.</span></p><h3><strong><span>Discipline is arriving as a function, not a phase</span></strong></h3><p><span>That parallel with cloud is not incidental to Preddy&#8217;s argument, and he expects the rest of the pattern to follow too. &#8220;There&#8217;s a whole industry out there just for token efficiency,&#8221; he says, pointing to engineers who wrote good deployment scripts, became cloud engineers, and then watched cost optimization separate into its own discipline with its own titles and its own tooling. He puts it more flatly when he calls it &#8220;This is our industry.&#8221;</span></p><p><span>The institutional scaffolding has arrived faster this time than it did for cloud. The FinOps Foundation&#8217;s</span><a href="https://data.finops.org/"><span> State of FinOps 2026</span></a><span> reports that 98 percent of practitioners now manage AI spend, up from 31 percent two years ago, and it ranks FinOps for AI as the top forward-looking priority with AI cost management as the single skillset teams most need to develop. In June the Linux Foundation</span><a href="https://www.linuxfoundation.org/press/linux-foundation-announces-the-intent-to-launch-the-tokenomics-foundation-to-establish-open-standards-for-ai-cost-management"><span> announced its intent to launch the Tokenomics Foundation</span></a><span>, working with the FinOps Foundation on open industry standards, benchmarks, and best practices for the economics of AI infrastructure. Preddy reads that as the point where dashboards, standards, and protection mechanisms stop being individual good habits and become things an organization can be held to.</span></p><p><span>For engineering leaders the timing carries a specific implication. A function forming now will settle its conventions within a few quarters, and the organizations contributing to those conventions will be the ones already treating agent cost as an engineering concern rather than a procurement one. Teams still running enablement sessions about prompt length will inherit whatever standards other people write.</span></p><h3><span>Cost advice without a budget produces a cheaper unbounded system</span></h3><p><span>Before any of that scaffolding helps, a team has to answer a question most cost guidance skips. The sharpest moment in our conversation came when Preddy declined the premise of a question about authorization boundaries and asked something more basic in its place. &#8220;How much money do I have?&#8221; he said, and then named the assumption he keeps encountering, because &#8220;a lot of what you&#8217;re asking me assumes that you have infinite amount of tokens.&#8221;</span></p><p><span>He is identifying a real gap in how the industry discusses this. Almost all published cost guidance optimizes mechanics, so prompts get shorter, retrieval gets tuned, caches get warmed, and routing gets layered in. Very little of it starts by asking what the workload is permitted to cost. Optimization applied to an unbounded system produces a cheaper unbounded system, which still has no ceiling and still fails in the same direction. The budget has to exist before the tuning means anything, because the budget is what converts an optimization into a decision.</span></p><p><span>What makes this harder than it looks is that the system cannot supply the number for you. A study published through Microsoft Research this spring,</span><a href="https://www.microsoft.com/en-us/research/publication/how-do-ai-agents-spend-your-money-analyzing-and-predicting-token-consumption-in-agentic-coding-tasks/"><span> How Do AI Agents Spend Your Money?</span></a><span>, presents the first systematic analysis of token consumption in agentic coding tasks, and it found that runs on the same task can differ by up to 30 times in total tokens, that input rather than output tokens drive the overall cost, and that frontier models fail to predict their own token usage and systematically underestimate what a task will cost. A workload whose executor cannot estimate it will not be estimated reliably by a spreadsheet either. That finding closes off the approach most organizations reach for first, which is forecasting from measured averages, and it pushes the answer toward setting a limit and enforcing it rather than predicting a figure and hoping.</span></p><p><span>The consequences of skipping that step have landed at named companies. Forrester&#8217;s</span><a href="https://www.forrester.com/blogs/ai-cost-management-how-prepared-are-you/"><span> July analysis of AI cost management</span></a><span> cites Uber burning its AI budget in four months, Microsoft ending Claude Code licenses after also burning its yearly AI budget, Tesla limiting AI spending to 200 dollars per week, and Priceline absorbing an unexpected surge in AI development renewal costs. None of those reads as an engineering failure. Each one reads as a missing number.</span></p><h3><span>Foundation is an artifact leaders ship</span></h3><p><span>Setting the number is the first move, and the second is deciding who builds the thing that keeps teams inside it. That is where Preddy&#8217;s position turns into a leadership argument rather than a productivity tip. He reaches for the idea of a cybernetic teammate, an agent working alongside a team rather than replacing anyone, and then reframes it as something an engineering leader produces rather than something a vendor sells. The artifact is the agent profile, along with the instructions file and the container definition that travel with it, and his claim about ownership is direct. &#8220;Your leaders should go in and create the agent profiles,&#8221; he says.</span></p><p><span>His reasoning turns on availability rather than authority, and it is the more humane version of the argument. Not every engineer works somewhere they can walk to a senior colleague and admit they are burning too many tokens, and not every senior colleague is reachable at the moment the question arrives. Preddy frames the profile as the answer to that absence, describing the message it carries as &#8220;I&#8217;m not around to help you out, but I&#8217;ve created a nice agent profile&#8221; with the conventions already encoded. A profile that declares only the tools a task needs, names the model tier, and sets the compaction expectation makes the disciplined path the default path for everybody who inherits it, including the engineer who joined last week and has nobody to ask.</span></p><p><span>The second-order effect is what leaders should weigh most carefully, because it determines which of two very different programs they end up running. Token waste treated as individual behavior produces enablement sessions, then dashboards, then comparisons, then rankings, and each step follows plausibly from the last. Token waste treated as a missing artifact produces a file one person writes once and every engineer benefits from without thinking about it. The first approach asks engineers to carry knowledge that changes every quarter. The second encodes that knowledge where it survives staff turnover and stops depending on who attended which session.</span></p><p><span>One detail in Preddy&#8217;s own workflow reinforces the point. He builds these files using the cheapest model available with reasoning switched off, which means the foundation costs almost nothing to produce. The barrier to doing this properly is not budget or tooling. It is that nobody has been made accountable for it.</span></p><h3><span>A spend cap belongs with the permissions</span></h3><p><span>The foundation shapes the default, and a cap is what holds when the default gets overridden. Engineering organizations already accept that an agent&#8217;s authority needs governing, so they scope which systems it may read, which it may write to, and which credentials it holds. Preddy&#8217;s contribution is to place money in that same category rather than treating it as a separate financial concern reviewed on a different cycle by different people. A per-session budget that warns at a threshold and stops at a limit behaves exactly like any other permission, because it constrains what the agent may do without a human present.</span></p><p><span>The practical consequence is a change in when the decision gets made and by whom. Treated as finance, a spend cap arrives quarterly, applies at the account level, and reaches the engineer as a rate limit they cannot explain. Treated as authorization, it arrives at the same review where the agent&#8217;s other permissions get set, applies at the session level, and reaches the engineer as a known boundary they helped define. Preddy demonstrated the enforced version during</span><a href="https://youtu.be/tVRcYTX_HCg"><span> our session</span></a><span>, where a run halted after crossing its allocated credits and offered the operator a choice to add credits, raise the ceiling, or remove it entirely.</span></p><p><span>That halt is the whole value, and it is worth being precise about why. An agent meeting a wall has produced a decision point, with a human present, a specific task in view, and the cost of continuing visible on screen. An agent with no wall has produced an invoice, arriving weeks later, aggregated across teams, with nobody able to reconstruct which run caused it. The same money moves in both cases. Only one of them leaves an organization able to govern the next run.</span></p><h3><span>Token counts measure activity rather than relief</span></h3><p><span>A budget and a cap tell you when to stop. Neither tells you whether the spending accomplished anything, which is the question a dashboard is supposed to answer. A contributor to</span><a href="https://deepengineering.net/p/special-issue-judgment-not-tokenmaxxing-creates-value"><span> our earlier issue on token maxxing</span></a><span> offered a formulation Preddy endorsed when we put it to him, that token usage behaves like CPU utilization, so the honest unit is the cost of relieving a bottleneck rather than the volume consumed. He agreed, then complicated it usefully by pointing out that the model chosen to relieve the bottleneck changes the answer, which means the metric has to account for the routing decision rather than treating all tokens as equivalent.</span></p><p><span>The research supports him on the underlying point. The same Microsoft Research analysis found that higher token usage does not translate into higher accuracy, and that accuracy often peaks at intermediate cost before saturating as spending rises. A number that rises while the outcome does not is the definition of a metric worth distrusting.</span></p><p><span>Preddy&#8217;s own experience supplies the rest, and it is more persuasive because it is self-implicating. He assigned a merge conflict to the smallest model available, and it consumed 51 million tokens without resolving anything, a run we cover in detail in his</span><a href="https://deepengineering.net/p/token-efficiency-rory-preddy-agent-token-costs"><span> companion deep dive</span></a><span>. Read as a token count, that looks like heavy engagement from a productive engineer. Read as bottleneck relieved, it produced nothing whatsoever. Any metric unable to distinguish between those two readings will reward the wrong behavior from the day somebody starts reporting it upward, and it will do so most strongly for the engineers who least understand what they are doing.</span></p><p><span>This is also why the leaderboard fails on its own terms rather than only on cultural ones. A ranking by tokens consumed can be improved by consuming more tokens, which requires no additional value and no additional skill. A measure built on work closed, so a merge conflict resolved, an accessibility fix shipped, a suite returned to green, can only be improved by closing more work. The second measure is harder to define and harder to collect, which is exactly why organizations reach for the first. Preddy&#8217;s argument is that the difficulty is the job, because the easy number and the useful number have never been further apart than they are now.</span></p><h3><span>The principle holding it together</span></h3><p><span>What makes Preddy&#8217;s approach more than a list of preferences is the single idea running through every part of it, which is that cost control belongs in the system rather than in the person operating it. Every choice he describes follows from that.</span></p><p><span>The foundation is a file rather than a training session, because a file survives turnover and a session does not. The spend cap is a permission rather than a budget line, because a permission gets enforced at the moment of use and a budget line gets reviewed after the fact. The metric is work closed rather than tokens consumed, because an outcome cannot be inflated by burning more of the input. The smallest viable model is the default rather than the exception, because a default is what happens when nobody is paying attention, and most of the cost accrues exactly then.</span></p><p><span>That principle also explains what Preddy leaves out. He never asks engineers to be more careful, and he never suggests awareness alone fixes anything, even while arguing for visibility. His own session history showed input tokens outweighing output roughly 100 to 1, and one session climbing from 49,000 to 174,000 input tokens across 66 turns with no compaction at all. He describes himself falling into bad practices like everybody else. A discipline depending on the operator remembering will fail for the person who wrote the discipline, which is the strongest available argument for encoding it somewhere else.</span></p><h3><span>What this asks of a leader</span></h3><p><span>The sequence that follows is short enough to start this week. Write the agent profile and the instructions file yourself, or make one person accountable for them, and treat them as shared infrastructure reviewed like any other. Set a per-session budget in the same review where the agent&#8217;s permissions get set, rather than in a separate conversation with a different owner. Report the work closed rather than the tokens consumed, and decline to build the leaderboard even though the API now makes one trivial.</span></p><p><span>The deeper point for any leader standing up AI measurement is that visibility and ranking are not the same thing, and the tooling arriving now makes it very easy to confuse them. Per-user token data has legitimate uses, including chargeback, capacity planning, and helping a manager notice that a team is consuming heavily without much to show for it. It becomes destructive at the moment it gets used to compare engineers against each other, because that is the point at which the number starts changing the behavior it was meant to observe.</span></p><p><span>Preddy&#8217;s closing thought aimed at the people doing the work rather than the people measuring it, and it belongs here because burnout and cost discipline turn out to share a cause. His instruction was not to &#8220;end each day exhausted, not from the work itself, but from managing of the work.&#8221; An engineer who inherits a foundation somebody else built gives the day to the problem. An engineer who inherits nothing gives it to managing agents, and pays for the privilege in tokens. &#8220;Be kind to yourself,&#8221; he said, which for a leader translates into something concrete. Build the foundation, and there will be nothing worth ranking.</span></p><div><hr></div><h2>In case you missed</h2><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;e11c2ffb-8202-4741-a576-cefab907eb33&quot;,&quot;caption&quot;:&quot;By Rory Preddy - Cache the prefix, compact the context, route to the smallest model that fits, and put a ceiling on every loop<br />&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;I burned 51 million tokens on one merge conflict, and the model was not the problem&quot;,&quot;publishedBylines&quot;:[],&quot;post_date&quot;:&quot;2026-07-30T12:06:07.062Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb227e32-e539-4c24-a3da-5b6ba7b68be5_3200x1800.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.net/p/token-efficiency-rory-preddy-agent-token-costs&quot;,&quot;section_name&quot;:&quot;Practical Deep-Dives&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:209102293,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128736;&#65039; Tool of the Week</h2><p><strong><a href="https://github.com/langfuse/langfuse"><span>Langfuse</span></a><span> </span></strong><span>is an open source AI engineering platform that traces agent runs and attributes cost and token usage per trace. A spend cap needs a number behind it, and a per-trace cost is that number.</span></p><ul><li><p><span>Traces multi-step agent runs so cost attaches to a workflow rather than to a raw API call</span></p></li><li><p><span>Tracks token usage and cost per trace, per model, and per user for chargeback and per-team budgets</span></p></li><li><p><span>Integrates with OpenTelemetry, LangChain, LiteLLM, and the OpenAI SDK, so routing across providers stays visible in one place</span></p></li><li><p><span>Self-hostable, which keeps prompt and completion data inside your own boundary</span></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/langfuse/langfuse&quot;,&quot;text&quot;:&quot;Learn more about Langfuse&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/langfuse/langfuse"><span>Learn more about Langfuse</span></a></p><div><hr></div><h2><strong>&#128206; Tech Briefs</strong></h2><ul><li><p><a href="https://blog.modelcontextprotocol.io/posts/2026-07-28/"><span>Model Context Protocol ships its 2026-07-28 specification</span></a><span> - Sessions and initialization are removed for stateless requests, with authorization and versioned extensions now explicit.</span></p></li><li><p><a href="https://github.blog/changelog/2026-07-28-npm-publish-time-malware-scanning-and-dual-use-metadata/"><span>npm adds publish-time malware scanning and dual-use metadata</span></a><span> -  New packages now face pre-install scanning, metadata disclosure, and stricter publishing controls for security-sensitive capabilities.</span></p></li><li><p><a href="https://github.blog/changelog/2026-07-28-github-actions-holds-potentially-malicious-workflows-for-approval/"><span>GitHub Actions holds potentially malicious workflows for approval</span></a><span> - Suspicious runs pause before execution, moving CI supply-chain defense ahead of the workflow rather than after.</span></p></li><li><p><a href="https://www.kubernetes.dev/resources/release/"><span>Kubernetes v1.37 reaches code and test freeze</span></a><span> - Code changes now require exceptions, shifting attention to release-blocking tests and regressions before August&#8217;s release.</span></p></li><li><p><a href="https://newsroom.accenture.com/blogs/2026/accenture-tokenomics-launched-to-help-enterprises-manage-ai-token-spend"><span>Accenture launches a tokenomics practice for enterprise AI spend</span></a><span> - Token spend gets tied to business outcomes, making AI cost governance a consulting line item.</span></p></li></ul><div><hr></div><div class="callout-block" data-callout="true"><p><strong>&#128227; Contribute to Deep Engineering</strong></p><p><strong>Pitch</strong><span> a </span><a href="https://deepengineering.net/s/practical-deep-dives">practical deep dive</a><span> under your </span><strong>byline</strong><span>. Or if you lead a team, we would like to </span><strong>interview</strong><span> you and build an </span><a href="https://deepengineering.net/s/engineering-leadership">engineering leadership</a><span> feature around your </span><strong>story</strong><span>.</span><br><br><strong>Subscribe</strong><span> to </span><strong>Deep Engineering</strong><span> newsletter and </span><strong>message</strong><span> us through the </span><strong>chat option</strong><span>, or email us at </span><strong>saqibj @ packt.com</strong><span>.</span></p></div><div><hr></div><p><span>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</span></p><p><span>We&#8217;ll be back next week with more expert-led content.</span></p><p><span>Keep building,</span></p><p><span>Saqib Jan</span></p><p><span>Editor-in-Chief, Deep Engineering</span></p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb"><span>speak to us about partnering</span></a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #56: Peter Zaitsev on Choosing a Database Like You Can Never Leave It]]></title><description><![CDATA[Percona co-founder Peter Zaitsev on why database choices are nearly irreversible, what open source licensing actually protects, and how to match the database to the real workload]]></description><link>https://deepengineering.net/p/issue-56-choosing-a-database-like-you-can-never-leave-it</link><guid isPermaLink="false">https://deepengineering.net/p/issue-56-choosing-a-database-like-you-can-never-leave-it</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 23 Jul 2026 18:19:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8c463b80-a04b-4a3b-95f7-b1d1384ef8ec_2760x1040.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt">Capacitor - Shared memory for your team&#8217;s coding agents. </a></strong><a href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt">Searchable. Shareable. Vendor-neutral. Scored.</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ocpb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 424w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 848w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png" width="1360" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Ocpb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 424w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 848w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt">Capacitor</a></strong><span> records the session behind the work: what agents tried, what teammates rejected, what finally passed, and why it mattered. This gives you vendor-neutrality to move across multiple coding agents, multiplayer - collaboration on coding sessions, faster PR reviews, evals on code &amp; more.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt&quot;,&quot;text&quot;:&quot;Sign up for free&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt"><span>Sign up for free</span></a></p><div><hr></div><p><span>&#9997;&#65039; </span><strong><span>From the editor&#8217;s desk,</span></strong></p><p><span>Welcome to the </span><strong><span>56th</span></strong><span> issue of </span><strong><span>Deep Engineering</span></strong><span>!</span></p><p><span>The PostgreSQL Global Development Group shipped</span><a href="https://www.postgresql.org/about/news/postgresql-19-beta-2-released-3350/"><span> the second beta of PostgreSQL 19</span></a><span> on July 16, only a few months after version 18 reached general availability and began landing in production systems. A community project that already tops every major developer survey keeps compounding its lead one disciplined release at a time. Postgres has effectively become the default database, and most teams now reach for it without pausing to ask whether it fits the problem in front of them.</span></p><p><span>That ease is exactly where the trouble starts, because a decision everyone treats as obvious is a decision nobody examines. Moving off a database once an application leans on it can take years and burn through real budget, and the forces that make the choice consequential have only sharpened this year. Relicensing moves keep redefining what the words open source actually protect, and by</span><a href="https://cloud.google.com/blog/topics/threat-intelligence/ai-vulnerability-exploitation-initial-access"><span> Google&#8217;s own threat-intelligence reporting</span></a><span> attackers now weaponize many newly disclosed flaws before a patch is even available, which turns the question of where and how you run your database into a live operational risk rather than a matter of preference.</span></p><p><span>That is exactly the terrain </span><a href="https://www.linkedin.com/in/peterzaitsev"><span>Peter Zaitsev</span></a><span> has worked his whole career, an entrepreneur, author, and co-founder of </span><a href="https://www.percona.com/"><span>Percona</span></a><span>. Two decades of helping companies choose, run, and sometimes escape their databases give him a sharp read on which reasons hold up under real load and which ones fall apart the moment the system starts to matter.</span></p><p><strong><span>In today&#8217;s issue</span></strong><span>, he makes the case for treating that choice with the seriousness it earns, and for choosing as though you can never walk it back. </span></p><blockquote><p><em><span>You can also </span><a href="https://deepengineering.net/p/database-choice-lock-in-ai-rush-peter-zaitsev"><span>watch our full conversation</span></a><span> with </span><strong><span>Peter Zaitsev </span></strong><span>here</span><strong><span>.</span></strong></em></p></blockquote><p><strong>Let&#8217;s get started.</strong> </p><div class="callout-block" data-callout="true"><h2><a href="https://www.eventbrite.co.uk/e/building-intelligent-ai-agents-with-graphrag-tickets-1992756563525?aff=deepeng"><span data-color="#f85f28" style="color: rgb(248, 95, 40);">Building Intelligent AI Agents with GraphRAG</span></a></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/building-intelligent-ai-agents-with-graphrag-tickets-1992756563525?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8HGZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8HGZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8HGZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8HGZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8HGZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg" width="800" height="267" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/building-intelligent-ai-agents-with-graphrag-tickets-1992756563525?aff=deepeng&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!8HGZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8HGZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8HGZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8HGZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F807412c1-fb6b-4911-8c7f-2cd3a7f2f03d_800x267.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This <strong>Agentic Engineering live bootcamp</strong> walks you through building an agent that investigates across a knowledge graph, remembers what it found, and returns answers you can put in front of a user.</p><p><strong>Friday 31 July to Saturday 1 August, online.</strong></p><h3 style="text-align: center;"><a href="https://www.eventbrite.co.uk/e/building-intelligent-ai-agents-with-graphrag-tickets-1992756563525?aff=deepeng"><span data-color="#f85f28" style="color: rgb(248, 95, 40);">Register with code </span></a><strong><a href="https://www.eventbrite.co.uk/e/building-intelligent-ai-agents-with-graphrag-tickets-1992756563525?aff=deepeng"><span data-color="#f85f28" style="color: rgb(248, 95, 40);">DEEPENG40</span></a></strong></h3><p style="text-align: center;"></p></div><div><hr></div><p><strong>Expert Insight</strong></p><h2><span>Databases are sticky. Most teams underestimate the commitment</span></h2><p><em><span> by </span><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;e7195419-ea93-4f2b-84d4-a7959d36a209&quot;}" data-component-name="MentionToDOM"></span> <span>with </span><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Peter Zaitsev&quot;,&quot;id&quot;:12711336,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ace4d441-409d-4f22-a72a-6352b7507e61_144x144.png&quot;,&quot;uuid&quot;:&quot;2b09b703-632a-45bd-a390-8d3ffa261be0&quot;}" data-component-name="MentionToDOM"></span> </em></p><p><span>Most teams choose a database the way they choose a lunch spot, quickly and on somebody else&#8217;s recommendation. A friend runs it in production, a conference talk made it sound fast, or the cloud console offered it as the first option on the list. The 2025</span><a href="https://survey.stackoverflow.co/2025/"><span> Stack Overflow Developer Survey</span></a><span> put PostgreSQL at the top for the third year running, in use by 55.6 percent of all developers and 58.2 percent of professional ones, far ahead of second-place MySQL. The default has never been clearer. But the decision behind it still rarely gets the weight it deserves.</span></p><p><a href="https://www.linkedin.com/in/peterzaitsev"><span>Peter Zaitsev</span></a><span> has advised companies through twenty years of these choices, from the greenfield pick to the migration nobody wanted. He co-founded </span><a href="https://www.percona.com/"><span>Percona</span></a><span>, grew it from a two-person company into one of the most respected open source database companies in the industry. His view of what most teams get wrong is straightforward. &#8220;Databases are very, very sticky,&#8221; he says. Once an application leans on one, unwinding that dependency can take years and burn through budgets, which is exactly why choosing one casually is the expensive mistake.</span></p><p>The cost is not hypothetical. Sharing from his experience advising enterprises through these migrations, Zaitsev says, &#8220;They started this kind of very painful migration away from Oracle a decade ago, and many, many millions of dollars, many, many years, they&#8217;re still on it.&#8221; A database that took a weekend to adopt can take a decade to leave. That asymmetry is the reason the rest of his advice matters.</p><h3><span>Nobody owns Postgres, and that is most of why it won</span></h3><p><span>In our conversation, I asked Zaitsev why Postgres reached the top, and his answer began with the part engineers tend to skip. &#8220;PostgreSQL is truly a community database. Nobody owns Postgres,&#8221; he says, and as he sees it that governance fact, more than any feature, explains the dominance. Because no single vendor controls it, every cloud can offer it as a first-class product without handing a rival an advantage. &#8220;Amazon, Google, Microsoft, a lot of others, they can offer PostgreSQL as their own,&#8221; he points out, where promoting MySQL or SQL Server means promoting something a competitor owns.</span></p><p><span>The technical case follows the same shape. Postgres extends rather than forces migrations, so each new demand becomes an extension instead of a second database. Time-series work got its extension, and the AI wave got</span><a href="https://github.com/pgvector/pgvector"><span> pgvector</span></a><span>, the open source extension that adds vector types and similarity indexes and now ships enabled on managed Postgres from AWS RDS to Supabase. &#8220;pgvector, vector search, enabling building AI application in Postgres, that came about very quickly,&#8221; Zaitsev tells us. The base keeps getting stronger underneath all of it, and the September 2025 release of</span><a href="https://www.postgresql.org/about/news/postgresql-18-released-3142/"><span> PostgreSQL 18</span></a><span> added a new asynchronous I/O subsystem the project measured at up to three times faster on reads.</span></p><h3><span>Open source is not enough</span></h3><p>The reason to prefer the community model becomes obvious the moment a vendor changes the rules. &#8220;People even kind of lost trust in open source and started to understand that open source is not enough,&#8221; Zaitsev reflects, and he points straight at the pattern that taught them. MongoDB moved to the Server Side Public License in 2018, Elastic followed in 2021, HashiCorp adopted the Business Source License in 2023, and Redis switched to source-available terms in 2024 before adding an open license back in 2025 under community pressure. Each move left production users holding a version they could no longer upgrade under the terms they signed up for.</p><p><span>Zaitsev&#8217;s warning is that the marketing hides the trap. &#8220;A lot of companies right now are trying to trick you, using words like open source compatible,&#8221; he cautions, which usually means proprietary software wearing a thin layer of compatibility. </span><strong><span>Open core is the other tell.</span></strong><span> &#8220;There is some sort of limited, crippled version which is open source, but what they actually want is for you to buy the proprietary version,&#8221; he says. The protection he trusts is not a license badge but a market. A real open source project has many vendors, so a team unhappy with one can leave, and run a closed product like Amazon Aurora and only Amazon can support it, which puts the depth of experience and the leverage on one side of the table.</span></p><h3><span>Self-hosting now means racing the exploit clock</span></h3><p><span>Self-hosting an open source database moves the security burden onto the team, and the clock on that burden has changed. Zaitsev warns that with AI, security holes can now be found and exploited &#8220;at the speed which was never seen before,&#8221; and the incident data agrees with that. Google&#8217;s M-Trends 2026 report estimated the mean time to exploit a newly disclosed vulnerability at roughly negative seven days, meaning many flaws are weaponized before a patch exists, and</span><a href="https://cloud.google.com/blog/topics/threat-intelligence/ai-vulnerability-exploitation-initial-access"><span> Google&#8217;s threat intelligence group has reported the first zero-day it attributes to an AI-developed exploit</span></a><span>.</span></p><p><span>That pace changes what good looks like. Zaitsev argues for a layered posture and an honest plan for failure, because prevention alone never reaches certainty. &#8220;Nothing gives you a 100 percent guarantee,&#8221; he reminds us, so the real question becomes how fast a team detects and responds, not only how well it defends. For many teams the practical answer is a contract, and even those that avoid a fully managed service should have someone on the hook for patching. In regulated environments the whole subject stops being a technical choice and becomes a compliance one, which is where managed databases earn their place by letting a team push responsibility to the vendor who runs the system.</span></p><h3><span>Doing what the cool kids do is not a workload</span></h3><p><span>The pull toward document, vector, and graph stores is often social before it is technical. &#8220;A lot of engineers, they like to explore and play with new technologies,&#8221; Zaitsev says, usually after hearing about them at a conference or on a podcast. He does not moralize about curiosity, but he counts the cost. &#8220;The more technologies you introduce, the more complexity you create,&#8221; he says, and a small team running many engines pays that bill every day. &#8220;If you are a five-person company and you are self-managing 10 databases, there&#8217;s probably way too much complexity.&#8221;</span></p><p><span>His rule is to start narrow and let real limits, not fashion, force the next move. Postgres holds relational data, documents, and vectors well enough that most teams travel a long way before they need anything else, and only a genuine ceiling on scale or a missing feature should justify a dedicated store. Purpose-built systems do win when the workload is real, because a database built for one task carries a more optimized store and a better language for it. The catch with AI is speed. &#8220;The AI world is completely different. Every six months things drastically change,&#8221; Zaitsev reasons, so a team building AI features has to check the date on its advice, since guidance a year old still serves Postgres or MySQL fine and can already be stale for anything touching models.</span></p><h3><span>Choose like you cannot leave</span></h3><p><span>The through-line of Zaitsev&#8217;s advice is to match the seriousness of the decision to the difficulty of reversing it. He wants teams to write down their actual requirements rather than inherit a default, and he is happy to use the newest tool to pressure-test the old discipline. &#8220;You can actually ask AI, hey, what am I missing,&#8221; he says, treating a model as a fast second reader on a requirements list. The point is not the tool. It is that a choice this durable deserves more than an afternoon.</span></p><p><span>That is the gap he keeps returning to. Teams decide in a hurry and then live with the result for years, on infrastructure that only grows harder to change as the application matures on top of it. Postgres has made the safe default easy, and the survey numbers show most teams taking it. The harder work starts after the default, in the licensing terms, the security posture, and an honest reading of what the workload actually needs.</span></p><div><hr></div><h2><strong>In case you missed</strong></h2><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d010d390-2a04-4604-a986-457aa9993c1f&quot;,&quot;caption&quot;:&quot;Peter Zaitsev built Percona from a two-person company into one of the most respected open source database companies in the business, and he co-wrote High Performance MySQL. He now advises open source startups as a board member, and he has watched engineering teams make the same database decisions for two decades. We asked him how teams should choose a data&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Database Choice, Lock-In, and the AI Rush with Peter Zaitsev&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-07-23T17:06:10.283Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/faa482b4-7b9e-476b-acee-2f98f0a10b1e_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.net/p/database-choice-lock-in-ai-rush-peter-zaitsev&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:208177027,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p><strong><span>Industry Perspective</span></strong></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ba1f7be1-02d6-436a-ab01-662cc6d870a0&quot;,&quot;caption&quot;:&quot;Chuck McCullough on running a reliable engineering workflow with OpenAI Codex, scoping work into slices, testing first, and reviewing for whether it fits.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Codex as a Teammate, Not Autocomplete&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-07-23T17:47:28.555Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42966ef5-2fee-4228-9606-6a26d942e262_2400x1600.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.net/p/chuck-mccullough-onagentic-development-with-codex&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:208229355,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/cloudnative-pg/cloudnative-pg"><span>CloudNativePG</span></a><span>, the Kubernetes operator for running production Postgres on infrastructure you control</span></strong></p><p><span>CloudNativePG runs Postgres as a native Kubernetes workload and handles failover, backups, and rolling upgrades the way a managed service would, while the data and the control plane stay inside your own cluster.</span></p><ul><li><p><span>New DatabaseRole resources manage Postgres roles as declarative GitOps objects with password-free certificate authentication.</span></p></li><li><p><span>A Kubernetes Lease now gates primary promotion, so replicas fail over without waiting out the full timeout.</span></p></li><li><p><span>In-place major upgrades run pg_upgrade against mounted extension images, cutting version-migration downtime.</span></p></li><li><p><span>Operator and Postgres images ship signed with SBOM and provenance attestations for supply-chain verification.</span></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/cloudnative-pg/cloudnative-pg&quot;,&quot;text&quot;:&quot;Learn more about CloudNativePG&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/cloudnative-pg/cloudnative-pg"><span>Learn more about CloudNativePG</span></a></p><div><hr></div><h2><strong>&#128206; Tech Briefs</strong></h2><ul><li><p><a href="https://www.postgresql.org/about/news/postgresql-19-beta-2-released-3350/">PostgreSQL 19 Beta 2 adds native SQL/PGQ property-graph queries</a> - Postgres 19 exposes relational tables as property graphs via GRAPH_TABLE pattern matching, so fixed-depth traversals no longer need a graph database.</p></li><li><p><a href="https://www.cisa.gov/news-events/alerts/2026/07/14/cisa-urges-sharepoint-hardening-after-new-exploitations">CISA adds an actively exploited SharePoint Server RCE to its Known Exploited Vulnerabilities catalog</a> - CISA confirmed active exploitation of CVE-2026-58644, a deserialization remote-code-execution flaw in on-premises SharePoint Server, and ordered urgent patching.</p></li><li><p><a href="https://mariadb.org/mariadb-server-10-6-reaches-end-of-life-on-july-6th/">MariaDB Community Server 10.6 reaches end of life</a> - MariaDB&#8217;s last old-model LTS no longer receives bug or security fixes, so 10.6 shops now face an unavoidable migration.</p></li><li><p><a href="https://www.postgresql.org/about/news/autobase-290-released-3343/">Autobase 2.9.0 released</a>. The open source automated Postgres high-availability platform now manages cluster infrastructure after deployment, not only initial setup.</p></li><li><p><a href="https://www.cisa.gov/news-events/alerts/2026/07/07/cisa-adds-three-known-exploited-vulnerabilities-catalog">CISA flags an actively exploited authorization bypass in Langflow</a> - CISA confirmed in-the-wild exploitation of CVE-2026-55255, an authorization bypass in the open source LLM app builder Langflow.</p></li></ul><div><hr></div><div class="callout-block" data-callout="true"><p><strong>&#128227; Contribute to Deep Engineering</strong></p><p><strong>Pitch</strong><span> a </span><a href="https://deepengineering.net/s/practical-deep-dives">practical deep dive</a><span> under your </span><strong>byline</strong><span>. Or if you lead a team, we would like to </span><strong>interview</strong><span> you and build an </span><a href="https://deepengineering.net/s/engineering-leadership">engineering leadership</a><span> feature around your </span><strong>story</strong><span>.</span><br><br><strong>Subscribe</strong><span> to </span><strong>Deep Engineering</strong><span> newsletter and </span><strong>message</strong><span> us through the </span><strong>chat option</strong><span>, or email us at </span><strong>saqibj @ packt.com</strong><span>.</span></p></div><div><hr></div><p><span>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</span></p><p><span>We&#8217;ll be back next week with more expert-led content.</span></p><p><span>Keep building,</span></p><p><span>Saqib Jan</span></p><p><span>Editor-in-Chief, Deep Engineering</span></p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb"><span>speak to us about partnering</span></a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #55: Julien Dubois on Managing a Fleet of Agents to Ship in Days]]></title><description><![CDATA[On building a production Spring Boot console in 11 days, plus why an 80% demo is not a production system.]]></description><link>https://deepengineering.net/p/issue-55-julien-dubois-fleet-of-agents</link><guid isPermaLink="false">https://deepengineering.net/p/issue-55-julien-dubois-fleet-of-agents</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:45:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c80f0ecc-e86d-4147-a3c5-4ce57ef62e78_2400x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt">Capacitor - Shared memory for your team&#8217;s coding agents. </a></strong><a href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt">Searchable. Shareable. Vendor-neutral. Scored.</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ocpb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 424w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 848w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png" width="1360" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Ocpb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 424w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 848w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Ocpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15ef0cb-aea9-4ed6-9257-72ae049d9076_1360x660.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt">Capacitor</a></strong> records the session behind the work: what agents tried, what teammates rejected, what finally passed, and why it mattered. This gives you vendor-neutrality to move across multiple coding agents, multiplayer - collaboration on coding sessions, faster PR reviews, evals on code &amp; more.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt&quot;,&quot;text&quot;:&quot;Sign up for free&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.vpdae.com/redirect/t7ef1ieak6aukarvnzev5kstydt"><span>Sign up for free</span></a></p><div><hr></div><p><span>&#9997;&#65039; </span><strong><span>From the editor&#8217;s desk,</span></strong></p><p><span>Welcome to the </span><strong><span>55th</span></strong><span> issue of </span><strong><span>Deep Engineering</span></strong><span>!</span></p><p><span>OpenAI made its</span><a href="https://openai.com/index/gpt-5-6/"><span> GPT-5.6 family generally available</span></a><span> on July 9 across ChatGPT, Codex, and the API. The capability that matters here is a new ultra mode that runs concurrent subagents and synthesizes their work in a single request. This release also makes cached context far cheaper than fresh input, since cache reads keep the 90% cached-input discount. So running a fleet of agents in parallel, and paying almost nothing to reuse their context, has moved from a hand-built trick into something the platform now does by default.</span></p><p><span>That shift is why this issue matters now. When the tooling makes parallel agents this easy, the differentiator stops being model access and becomes the discipline around it, the specifications, the tests, and the review that decide whether all that speed produces software you can actually ship. Last week</span><a href="https://www.julien-dubois.com"><span> Julien Dubois</span></a><span> led a workshop for us, </span><strong><span>From Coder to Manager of Agents</span></strong><span>, where he showed how he built a real open-source product this way, measured from git history rather than memory, which makes it far more useful than another benchmark thread.</span></p><p><strong><span>Julien</span></strong><span> is Principal Manager for Developer Relations at </span><strong><span>Microsoft</span></strong><span> and </span><strong><span>GitHub</span></strong><span>, and the creator of </span><strong><a href="https://www.jhipster.tech/"><span>JHipster</span></a></strong><span>.</span></p><p><span>Let&#8217;s get started.</span></p><div><hr></div><p><strong>Featured: <a href="https://www.eventbrite.com/e/1992373400474/?discount=DEEPENG40">Loop Engineering for AI Agents</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.com/e/1992373400474/?discount=DEEPENG40" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BDF7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BDF7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BDF7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BDF7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BDF7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg" width="800" height="267" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.com/e/1992373400474/?discount=DEEPENG40&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!BDF7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BDF7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BDF7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BDF7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda255c8-7f56-4123-8294-dddb183cc933_800x267.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Stop wasting tokens on endless retries. </strong>This four-hour, hands-on workshop takes you past one-off prompting to reliable agent loops that plan, execute, verify, and stop safely, built with Claude Code, Spec-Driven Development, and MCP, with the verification gates and state management that keep autonomous agents trustworthy. </p><p style="text-align: center;">Deep Engineering readers save 40% with code <strong>DEEPENG40</strong>. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/loop-engineering-for-ai-agents-tickets-1992373400474?discount=DEEPENG40&quot;,&quot;text&quot;:&quot;Reserve your seat&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/loop-engineering-for-ai-agents-tickets-1992373400474?discount=DEEPENG40"><span>Reserve your seat</span></a></p><div><hr></div><p><strong>Practitioner's View</strong> by <a href="https://www.julien-dubois.com">Julien Dubois</a></p><h2>223 pull requests in 11 days for the project I never had time to build</h2><blockquote><p>You can read this <a href="https://deepengineering.net/p/223-pull-requests-in-11-days-julien-dubois">practical deep dive</a> based on his workshop. And here are the <a href="https://www.julien-dubois.com/conferences/building-with-ai-agents/index-en.html">slides from the talk</a>.</p></blockquote><p><span>I always wanted a real developer UI for Spring Boot. Every Spring app is a black box in development. Actuator gives you raw JSON, not a console, so what I wanted was health, metrics, security and tracing in one embedded UI.</span></p><p><span>I&#8217;d shipped a slice of this in JHipster years ago, but only for generated apps. A real console for any Spring Boot app sat on my wishlist for years. The catch is that it&#8217;s massive. Around 40 panels, each one a backend plus a frontend plus its own tests, deeply integrated across a dozen JVM subsystems. By hand, one experienced developer would need somewhere between six and a half and eight and a half months. Too big to justify, until I stopped writing the code myself.</span></p><p><span>Then I did it in 11 days. Not by typing faster. I didn&#8217;t even open my IDE. I managed a fleet of AI agents while I architected, reviewed and steered. The agents did the scaffolding, the panels and the tests. I did the judgement.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bqyI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bqyI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bqyI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bqyI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bqyI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bqyI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bqyI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bqyI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bqyI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bqyI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe52cc3c7-39b7-4a53-aeab-f052ea83c92d_1456x971.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><span>What I built, BootUI</span></h3><p><a href="https://github.com/jdubois/boot-ui"><span>BootUI</span></a><span> is a production-grade Spring Boot 4 starter that adds an embedded, local-only developer console to your app. You add one starter to your pom.xml, run locally, and open the console.</span></p><p><span>It is a five-module Maven build on Spring Boot 4 and Java 17, integrated across Actuator, Spring Security, Flyway and Liquibase, Hibernate, Micrometer with OTLP, GraalVM, OSV scanning and ArchUnit, published to Maven Central with full CI. The frontend is an embedded Vue 3 single-page app, packaged inside the starter. Each panel is endpoints plus a view plus tests.</span></p><p><span>There are around 40 feature panels. Health and metrics, a security advisor, a vulnerabilities view, tracing, and more. Those panels look a lot alike, which made them the biggest source of structural repetition in the codebase. That detail matters, and I will come back to why it made the whole thing work.</span></p><h3><span>Eleven days, and how I know the numbers are real</span></h3><p><span>The figures here are derived from git history, PR metadata and code metrics, not from time-tracking logs. Through the tagged 1.0.0 release there were around 264 commits on main and about 223 squash-merged pull requests, landing at roughly 20 a day across 11 days. That came to about 83k total tracked source lines, close to 50k of them Java across around 461 files and 81 test classes, plus 52 Vue components, 40 panels, and 35 end-to-end specs. In all, about 116 test suites.</span></p><p><span>A cadence of 20 PRs a day with an AI agent co-authoring commits is impossible to reach by hand. The agent did the typing. I dispatched many asynchronous tasks in parallel. The evidence lines up with that. The commit clock runs from around five in the morning to midnight most days, which is consistent with parallel async tasks rather than continuous typing. &#8220;Copilot&#8221; shows up as a named commit and PR author on about 44 commits, and the repo ships a copilot-instructions.md with per-panel conventions, so the workflow was explicitly agent-oriented. Even on release day I was landing a docs site, a scanner dashboard, token charts and a Hikari fix, which is itself several days of solo work.</span></p><p><span>Where my own time went was writing prompts, reviewing and merging those 223 PRs, and resolving CI failures around Spring Boot 4, Flyway 11 and OTLP. Review and orchestrate, not write every line.</span></p><p><span>The honest by-hand comparison is the part people argue about, so I ran it carefully. One experienced Spring Boot and Vue developer, with no AI codegen, would need 6.5 to 8.5 months for the same polished 1.0.0, roughly 1,100 to 1,450 hours of hands-on effort, and the 40 panels are the dominant cost. A COCOMO organic estimate on 50k lines yields more than 100 person-months, which is too high because much of the code is repetitive scaffolding, so a domain-expert solo figure of about 7.5 months is the defensible middle ground. My actual human effort on BootUI was 80 to 110 hours, about two intense solo weeks. That is a calendar speed-up of roughly 17 to 23 times, and a human-hours speed-up of roughly 12 to 17 times.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9UeI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9UeI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9UeI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9UeI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9UeI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9UeI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9UeI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9UeI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9UeI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9UeI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe032403-2b0e-420f-a041-362326fd9677_1456x971.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><span>I was the manager, not the developer</span></h3><p><span>I didn&#8217;t open my IDE. I wasn&#8217;t the developer. I was the manager. Many agents ran in parallel on the panels, the integrations, the frontend, and the CI and docs, and my job was to brief, review and merge.</span></p><p><span>Your throughput is not your keyboard. It is your briefs. What blocks a single developer is typing, and what blocks a single agent is you waiting for it to finish. Running many at once removes both, because they come back one after another and there is always something to review. You don&#8217;t type faster this way. You ship what used to take months.</span></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://deepengineering.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><strong>Subscribe for free</strong> to get expert-led deep dives, system design breakdowns, and full book chapters like this one every week.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><span>A day in the loop</span></h3><p><span>The rhythm that produced 20 merged PRs a day is a simple daily loop, and the day is the engine. I am hands-on all day. I spec, launch, review, merge and re-task, live, and most of the day&#8217;s PRs land right there.</span></p><p><span>The evening is a hand-off. Before I step away I queue a few deep, long-running plans. The night is a bonus, not the engine. A handful of deep autonomous runs finish by morning, which is the minority of the work. Repeat that for about 11 days and you reach a tagged 1.0.0. Six ingredients make the loop work.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DdaV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DdaV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DdaV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DdaV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DdaV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DdaV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DdaV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DdaV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DdaV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DdaV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38d887a9-10ae-46fb-9730-1eeff37e9fc2_1456x971.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><h4><span>Ingredient one, write the specifications</span></h4><p><span>The first thing I write is never code. It is the house rules. An AGENTS.md, which GitHub Copilot reads as copilot-instructions.md, and every agent reads it first. It sets the conventions once, the stack, the build, the tests and the style, with per-panel conventions so 40 panels come out consistent. Mine runs around 700 lines. That is about the right size, because a file that is too big pollutes the context, and it also costs tokens and money on every run.</span></p><p><span>The high-leverage move is writing the known failures into that file once. Most models were trained on Spring Boot 3, so they struggle with the reworked Jackson API in Spring Boot 4, and 10 agents trained on the same data hit the same wall at the same time. Rather than fix that by hand in each one, I write the fix down once. The same goes for operational traps, like giving every agent its own local Maven repository so parallel installs do not corrupt a shared one.</span></p><p><span>On top of the house rules I write one spec per task. What to build, where, what &#8220;done&#8221; looks like, and the acceptance test the agent must make pass. Small, self-contained, no hidden dependencies. The spec is the product now. The better the brief, the less you babysit.</span></p><h4><span>Ingredient two, build the test harness</span></h4><p><span>No agent runs without a test harness. One command compiles and runs the unit and end-to-end tests, and comes back green or red, so an agent can verify its own work before it opens a PR. No tests means you cannot trust the output.</span></p><p><span>CI is the trust layer. BootUI has about 116 test suites, 81 in Java and 35 in Playwright, and CodeQL plus the end-to-end tests gate every PR to main. The loop does the work. An agent writes code, pushes it, and GitHub Actions sends back the results. If they are red the agent reads the failure, fixes it, commits and pushes again, and the checks run once more. Dependabot keeps the dependencies current alongside all of this. A compiled, typed language like Java helps too, because a hallucinated call often fails to compile before a test ever runs, and the tests catch what the compiler misses. You cannot read every line of 223 PRs. A green build you trust is what makes the volume reviewable.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://deepengineering.net/i/207293305/ingredient-two-build-the-test-harness&quot;,&quot;text&quot;:&quot;Continue reading&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://deepengineering.net/i/207293305/ingredient-two-build-the-test-harness"><span>Continue reading</span></a></p><blockquote><p><span>The </span><a href="https://deepengineering.net/p/223-pull-requests-in-11-days-julien-dubois"><span>rest of the deep dive</span></a><span> covers the other four ingredients, the test harness and CI as the trust layer, running agents in parallel across worktrees, the overnight critic-and-vote runs, merging as the real bottleneck, and the cache math behind the roughly two thousand dollar bill, along with where the multiplier will not repeat.</span></p></blockquote><div><hr></div><p><strong><span>Industry Perspective</span></strong></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;44242028-74a5-4e04-8ca5-1f3d6f9b395f&quot;,&quot;caption&quot;:&quot;Julien Dubois shows how a fleet of agents lets one engineer move at the pace of a team. Imran Ahmad takes up the question that speed raises, whether the software those agents produce can be trusted in production. He calls the distance between an eighty percent demo and a 99.9 percent production system the Reliability Gap, and he argues you close it with a deterministic shell around the model rather than with a better model. His piece walks the failures that make the case, from an invented refund to a deleted production database, and gives the four questions he now asks in every design review.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;So Your Demo Is Lying to You&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:2260974,&quot;name&quot;:&quot;Imran Ahmad&quot;,&quot;bio&quot;:&quot;I&#8217;m a data scientist and an author&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!qXS5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b8b0819-6513-45db-b99b-ec849c945bf1_144x144.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://imran409.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://imran409.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Imran Ahmad&quot;,&quot;primaryPublicationId&quot;:5449073}],&quot;post_date&quot;:&quot;2026-07-16T15:39:12.766Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57c40ede-c31d-4327-9d91-4c7ee4fb93f6_2400x1600.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.net/p/your-demo-is-lying-to-you-imran-ahmad&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:207301930,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="callout-block" data-callout="true"><p><strong>&#128227; Contribute to Deep Engineering </strong></p><p>If you are a senior engineer with a hard-won lesson or a failure worth sharing, <strong>pitch</strong> a <a href="https://deepengineering.net/s/practical-deep-dives">practical deep dive</a> under your <strong>byline</strong>. Or if you lead a team, we would like to <strong>interview</strong> you and build an <a href="https://deepengineering.net/s/engineering-leadership">engineering leadership</a> feature around your <strong>story</strong>.<br><br><strong>Subscribe</strong> to <strong>Deep Engineering</strong> newsletter and <strong>message</strong> us through the <strong>chat option</strong>, or email us at <strong>saqibj @ packt.com</strong>.</p></div><h2>&#128736;&#65039; Tool of the Week</h2><p><strong><a href="http://github.com/ComposioHQ/agent-orchestrator"><span>Composio&#8217;s Agent Orchestrator</span></a></strong><span> is an open-source take on exactly that job. It helps developers manage fleets of coding agents for parallel work, giving each one an isolated workspace and supervising them from one place.</span></p><ul><li><p><span>Runs each agent in its own git worktree, so parallel work does not clobber shared files</span></p></li><li><p><span>Feeds CI failures, review comments, and merge conflicts back to the right agent automatically</span></p></li><li><p><span>Works with the terminal agents teams already use, including Claude Code, Codex, Cursor, and opencode</span></p></li><li><p><span>MIT licensed and self-hosted, run locally rather than as a hosted service</span></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://github.com/ComposioHQ/agent-orchestrator&quot;,&quot;text&quot;:&quot;Composio&#8217;s Agent Orchestrator&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="http://github.com/ComposioHQ/agent-orchestrator"><span>Composio&#8217;s Agent Orchestrator</span></a></p><div><hr></div><h2>&#128206; Tech Briefs</h2><ul><li><p><a href="https://code.claude.com/docs/en/changelog"><span>Claude Code changelog</span></a><span> - Agents must now confirm before entering a git worktree outside the project&#8217;s .claude/worktrees directory, and a new /doctor check flags checked-in CLAUDE.md content the model can derive from the codebase.</span></p></li><li><p><a href="https://github.com/github/copilot-cli/blob/main/changelog.md"><span>GitHub Copilot CLI changelog</span></a><span> - Plan mode can no longer run tools that modify the workspace, and the default maximum sub-agent nesting depth drops from six to four to limit runaway recursive delegation.</span></p></li><li><p><a href="https://github.blog/changelog/2026-07-14-github-copilot-for-jetbrains-expands-byok-capabilities/"><span>Copilot for JetBrains expands BYOK capabilities</span></a><span> - Adds local agent sandboxing, a Claude agent provider for custom agents and skills, and OpenAI-compatible custom endpoints, all in public preview.</span></p></li><li><p><a href="https://github.blog/changelog/2026-07-14-github-copilot-in-visual-studio-june-update/"><span>Copilot in Visual Studio, June update</span></a><span> - Visual Studio now checks each MCP server&#8217;s configuration and asset fingerprint against a trusted baseline at startup, and the C++ modernization agent reached general availability.</span></p></li><li><p><a href="https://releasebot.io/updates/anthropic/claude">Claude Code gateway for teams</a> - Anthropic shipped a self-hosted gateway for Claude Code, a stateless container that adds corporate SSO login, centrally enforced policy, role-based access, and per-user cost attribution across a team.</p></li></ul><div><hr></div><p><span>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</span></p><p><span>We&#8217;ll be back next week with more expert-led content.</span></p><p><span>Keep building,</span></p><p><span>Saqib Jan</span></p><p><span>Editor-in-Chief, Deep Engineering</span></p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb"><span>speak to us about partnering</span></a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering Specials: Judgment, Not Tokenmaxxing, Creates the Value]]></title><description><![CDATA[The next limit on engineering output is not how many tokens your teams burn. It is whether anyone can still tell motion apart from judgment.]]></description><link>https://deepengineering.net/p/special-issue-judgment-not-tokenmaxxing-creates-value</link><guid isPermaLink="false">https://deepengineering.net/p/special-issue-judgment-not-tokenmaxxing-creates-value</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Tue, 14 Jul 2026 21:52:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9fc38405-fb9a-4c2b-9966-d183b4d9694b_2400x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The next enterprise AI bottleneck is not model capability. It is whether leaders can tell the difference between a team using AI well and a team running up a number.</p><p>Over roughly a quarter in 2026, several of the largest engineering organizations in the world took down the dashboards they had built to prove their AI investments were working. Amazon shut down <a href="https://aimagazine.com/news/why-amazon-has-dropped-its-internal-ai-usage-leaderboard">KiroRank</a>, the internal leaderboard that ranked developers by how many tokens they consumed on its Kiro platform. <a href="https://www.thestreet.com/technology/amazon-joins-microsoft-in-sending-shocking-message-to-employees">Meta also dismantled a near-identical board</a>, Claudenomics, that tracked token usage among its heaviest AI users. The reason was the same everywhere. Once usage became the number that mattered, engineers found ways to run up usage, and the costs arrived long before the value did.</p><p>Amazon&#8217;s own senior vice president, Dave Treadwell, told staff to stop using AI for its own sake after employees gamed the leaderboard by padding token usage, the practice the industry had taken to calling &#8220;<a href="https://www.forbes.com/sites/timkeary/2026/04/13/is-the-cult-of-tokenmaxxingjust-another-fad-or-the-new-normal/">tokenmaxxing</a>.&#8221; Uber also said it could find no clear link between what it was spending on AI and what it was shipping, while Microsoft cancelled a division&#8217;s coding-assistant licences over cost. So, within a single quarter, the industry ran the experiment, watched it fail, and started hunting for a better question to ask.</p><p>That question is the subject of this issue, with insights from <a href="https://www.linkedin.com/in/austinlparker">Austin Parker</a>, Director of AI Strategy at <strong>Honeycomb</strong> and a co-founder of <strong>OpenTelemetry</strong>; <a href="https://www.linkedin.com/in/tom-howe-a565ab1/">Tom Howe</a>, Director of Solutions Engineering at <strong>Hydrolix</strong>; <a href="https://www.linkedin.com/in/jayeeta-putatunda">Jayeeta Putatunda</a>, Director of the AI Center of Excellence at <strong>Fitch Ratings</strong>; <a href="https://www.linkedin.com/in/satyamdhar">Satyam Dhar</a>, Staff Software Engineer at <strong>Galileo</strong> and a former engineering leader at <strong>Amazon</strong> and <strong>Adobe</strong>; and <a href="https://www.linkedin.com/in/mjjtiffany">Michael J.J. Tiffany</a>, co-founder and CEO of <strong>Fulcra Dynamics</strong>.</p><p>Let&#8217;s get started.</p><div><hr></div><p><strong><a href="https://www.vpdae.com/redirect/nck675s2gzn00ukhfu9tyrmbc3w">Social engineering is about manipulating people&#8217;s emotions. Identify the susceptibilities that hackers use to exploit people.</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.vpdae.com/redirect/nck675s2gzn00ukhfu9tyrmbc3w" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1GsN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 424w, https://substackcdn.com/image/fetch/$s_!1GsN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 848w, https://substackcdn.com/image/fetch/$s_!1GsN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 1272w, https://substackcdn.com/image/fetch/$s_!1GsN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1GsN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png" width="300" height="200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:200,&quot;width&quot;:300,&quot;resizeWidth&quot;:300,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/nck675s2gzn00ukhfu9tyrmbc3w&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1GsN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 424w, https://substackcdn.com/image/fetch/$s_!1GsN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 848w, https://substackcdn.com/image/fetch/$s_!1GsN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 1272w, https://substackcdn.com/image/fetch/$s_!1GsN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c5f841-09dd-49bd-a7bd-62a3a008ac97_300x200.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><span>This </span><strong><a href="https://www.vpdae.com/redirect/nck675s2gzn00ukhfu9tyrmbc3w">NINJIO Insights Report</a></strong><a href="https://www.vpdae.com/redirect/nck675s2gzn00ukhfu9tyrmbc3w"> </a><span>dives into the key emotional susceptibilities that make social engineering work and offers concrete steps that your security team can take to equip your workforce to resist cyberattacks.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/nck675s2gzn00ukhfu9tyrmbc3w&quot;,&quot;text&quot;:&quot;Download the Guide&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.vpdae.com/redirect/nck675s2gzn00ukhfu9tyrmbc3w"><span>Download the Guide</span></a></p><div><hr></div><p></p><p><strong>Special issue &#8212; July 2026</strong></p><h2>A token was never a unit of intelligence</h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FOUY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOUY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FOUY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FOUY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FOUY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg" width="259" height="220.75480769230768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1241,&quot;width&quot;:1456,&quot;resizeWidth&quot;:259,&quot;bytes&quot;:516860,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://deepengineering.net/i/207072610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c04aab-3cbe-4ece-9037-d5e690a530e5_1601x2400.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!FOUY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FOUY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FOUY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FOUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F051162d2-4f58-43f9-9622-0875d28ab799_1601x1365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"><em>&#8220;You can use tokens to help build solutions, but at the end of the day these are judgment calls.&#8221; &#8212; </em><a href="https://www.linkedin.com/in/austinlparker">Austin Parker</a>, Director of AI Strategy at <a href="https://www.honeycomb.io/">Honeycomb</a> and a co-founder of <a href="https://opentelemetry.io/">OpenTelemetry</a></p><div><hr></div><p>Give a modern coding model the right harness and a clear goal and it will do almost anything you ask, up to and including rewriting an entire codebase in another language and passing the tests. That capability is real, and it is seductive. It makes it easy to believe that all you need is something to keep the tokens flowing and any problem becomes tractable. Parker has observed his own engineering teams test that belief, generating a hundred variations of the same screen or twenty versions of a flow, and the lesson came back the same each time.</p><p>The variations did not move the needle. You can ask for infinite variations of a solution, and they all arrive shaped like your original conception of the problem, because that conception is the one human input the model never questions. The code and the screen and the workflow were never the things that create value for the people using them. Value lives one level up, in whether the design serves those people, whether the shape of an API fits what its consumers actually need, whether the underlying primitives have any fitness for the purpose they are being asked to serve.</p><p>Those are judgment calls, and no volume of tokens answers them. Parker sees the same pattern when he talks to other leaders, plenty of appetite for here is a problem, generate all the variations, and far less time asking whether the problem was framed correctly in the first place. His conclusion is blunt. Judgment is the finite resource now, and teams that forget it end up with more output and less of what the output was supposed to buy them.</p><h2>Leaderboards reward motion, not judgment</h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IpNN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IpNN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png 424w, https://substackcdn.com/image/fetch/$s_!IpNN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png 848w, https://substackcdn.com/image/fetch/$s_!IpNN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!IpNN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IpNN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png" width="249" height="249" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:249,&quot;bytes&quot;:3958785,&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://deepengineering.net/i/207072610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.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_!IpNN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png 424w, https://substackcdn.com/image/fetch/$s_!IpNN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png 848w, https://substackcdn.com/image/fetch/$s_!IpNN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!IpNN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64641c0-ed85-4856-924e-219cc39cebac_2000x2000.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 style="text-align: center;"><em>&#8220;The paradigm in some organizations will, undoubtedly, shift from &#8216;high token usage equals good employees&#8217; to &#8216;high token usage equals expensive employees.&#8217;&#8221; &#8212; <a href="https://www.linkedin.com/in/tom-howe-a565ab1/">Tom Howe</a>, Director of Solutions Engineering at <a href="https://hydrolix.io/">Hydrolix</a></em></p><div><hr></div><p>The collapse of the token leaderboards surprised no one who has watched a measure become a target. Hand a famously clever group of engineers a resource and grade them on how much of it they use, and they will use it. The moment a measure becomes a metric it stops being a good measure, a version of <a href="https://www.metaintro.com/blog/amazon-ai-usage-targets-inflated">Goodhart&#8217;s law that Amazon&#8217;s own leadership</a> named out loud when it wound the program down. The surprise was not that the leaderboards were gamed. It was that so few people in the decision chain saw it coming.</p><p>Howe has seen the mechanism play out from the inside, and he traces it to a subtle slippage. A company rolls out what it calls an AI usage dashboard, meant as an objective measure of how much the tooling is benefiting the business, and it quietly devolves into a leaderboard that measures how much each person is using the tool. Once employees read it as a judgment of how they work rather than of whether the tool earns its keep, the whole exercise changes character.</p><p>From there the responses split three ways, and each one erodes the thing the dashboard was supposed to protect. Some engineers game it, firing tools at low-value tasks to boost their stats, which breeds suspicion that others are gaming it too. Some avoid the tool entirely rather than expose their habits to uncontextualized data. And in the middle sits the casualty Howe cares about most, the trust that a healthy organization runs on, undermined the moment a team cannot tell how or why it is being measured.</p><p>The cost frame makes it worse. Howe describes enterprises treating tokens as close-to-free productivity, funny money, right up until the real bills and the real gains come into focus. When they do, the incentive can flip hard, from prizing heavy usage to flagging it as expense, and engineers start hedging, wary of being branded token wasters and wary of binding their workflows so tightly to a tool that a future rationing decision leaves them stranded. He points to a recent, unusually capable model that carries a known high future cost, where engineers are trying to use its power now without becoming dependent on it, as exactly the kind of bind these metrics create.</p><p>None of this means the tools do not work. Howe shares that Hydrolix has seen a revolutionary impact from how it uses them, in building products and in weaving them into products, in ways that would have been unimaginable a few years ago. The challenge is balancing productivity, cost, and trust, and learning to measure the impact through experience rather than through a scoreboard. He tells one story that captures the slope precisely, an engineer glancing at the usage board and joking that not cracking the top fifty was rookie numbers. It was a joke. But it was also a warning about how fast an innocuous metric turns into a competition.</p><div><hr></div><p><strong>Featured - <a href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng">ARC 2026: Software Architecture in the Age of AI</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a2PN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a2PN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg" width="728" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;ARC 2026: Software Architecture in the Age of AI&quot;,&quot;title&quot;:&quot;ARC 2026: Software Architecture in the Age of AI&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="ARC 2026: Software Architecture in the Age of AI" title="ARC 2026: Software Architecture in the Age of AI" srcset="https://substackcdn.com/image/fetch/$s_!a2PN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1456w" sizes="100vw" loading="lazy" 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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><span>AI is reshaping software architecture, putting new demands on scalability, governance, reliability, and observability. </span><a href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng">ARC 2026</a><span> brings together architects, CTOs, and AI practitioners for keynotes, panels, and workshops on agentic system design, modernizing enterprise apps for AI, and building governable, observable AI systems.</span></p><p style="text-align: center;"><span>&#128467;&#65039; </span><em><strong>25</strong><span> to </span><strong>26</strong><span> July, </span><strong>10:30</strong><span> am ET</span></em></p><p style="text-align: center;"><span>Use code </span><strong>DEEPENG50</strong><span> for 50% off the early bird price.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng&quot;,&quot;text&quot;:&quot;Reserve your spot&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng"><span>Reserve your spot</span></a></p><div><hr></div><h2>Skills that matter never show up on a dashboard</h2><p>Parker calls prompting, building internal alignment, and holding a complex system in your head illegible activities, and they are close cousins of the glue work that keeps organizations moving. The people who know who needs to be in a decision chain, who can hear a customer complaint and route it to the one team that can fix it, who understand that the thing frustrating you in one corner of a product is caused by something three systems away, are the reason a business can actually execute. The organizations that are genuinely good at this tend to be the ones that, lacking a clean way to measure those people, are at least careful not to penalize them.</p><p>A token metric makes that harder. It rewards the visible act of consuming AI over the invisible work of knowing what is worth building, and the invisible work is where most of the value hides. That work shows up in promo packets and career ladders because those are written by people who understand it. It does not show up in a number you can compare quarter to quarter, because, in Parker&#8217;s words, it involves &#8220;very human things like relationships and time in the system rather than timing the system.&#8221; Measure the activity and you slowly stop rewarding the thing that made the activity worth anything.</p><h2>AI widens the gap a team already has</h2><p>This is the reframing every leader watching one team pull ahead should steal. AI rarely conjures capability from nothing. It accentuates differences that already exist. When a team surges, the real story is almost never that raw intelligence solved a problem they could not solve before. It is that AI patched a hole in the team&#8217;s composition, or handed them leverage on something organizational rather than technical.</p><p>Parker&#8217;s example is the part of shipping that engineers tend to undervalue, making the case to leadership. That is usually a data-analysis argument, projections and forecasts and a slog through support tickets and sentiment data, and it happens to be something AI is very good at. A motivated engineer or designer or support person can now do the analysis a product manager used to own, cover the weak spots in their own toolkit, and come back to the org with here is what I need in order to go build the thing I am convinced is right. So the question to ask the team that pulled ahead is not which tool they used. In Parker&#8217;s words, &#8220;I never want to ask what AI has let you do. The question is what is AI giving you the excuse to do that you could not have done otherwise.&#8221;</p><p>That does not extend into a ban on measuring code output. Parker&#8217;s line is that you should measure it and refuse to make it a metric. Watching the balance of someone&#8217;s pull requests opened against reviewed tells you something real about how they work, and grading their performance on that same count is where it curdles. AI can even help here, letting a team ask which work is generating on-call burden, which is delivering customer value, and who is quietly doing the refactoring that lifts everything built on top of it.</p><h2>Point the budget inward, at developer experience</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h2WP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h2WP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h2WP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h2WP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h2WP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h2WP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg" width="251" height="264.361216730038" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:277,&quot;width&quot;:263,&quot;resizeWidth&quot;:251,&quot;bytes&quot;:18694,&quot;alt&quot;:&quot;Jayeeta Putatunda Speaking at Women in Tech Global Conference 2027&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jayeeta Putatunda Speaking at Women in Tech Global Conference 2027" title="Jayeeta Putatunda Speaking at Women in Tech Global Conference 2027" srcset="https://substackcdn.com/image/fetch/$s_!h2WP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h2WP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h2WP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h2WP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa3232fd-537a-4906-934b-abe48d3d715b_263x277.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 style="text-align: center;"><em>&#8220;If I had 90 days of AI budget to improve developer experience, I wouldn&#8217;t spend it evaluating another model. I&#8217;d spend it reducing engineering variation.&#8221; &#8212; <a href="https://www.linkedin.com/in/jayeeta-putatunda">Jayeeta Putatunda</a>, Director of the AI Center of Excellence, <a href="https://www.fitchratings.com/">Fitch Ratings</a></em></p><div><hr></div><p>For a Staff or Principal engineer who owns a platform, Parker&#8217;s first ninety days are not about output at all. They are about earning the ability to ask real questions of your own systems, and most organizations cannot, because observability was underinvested for years while other goals took priority. The mechanical work of fixing that, moving unstructured logging to structured events and spans, migrating to OpenTelemetry, is exactly the kind of task that is fungible from an intelligence point of view, which makes it a near-perfect fit for current coding models. It also comes with a natural verification step, feed the before and after to another model and let it judge whether the telemetry got better, and let it update the docs as it goes.</p><p>Putatunda took the same budget in a different direction, and her experience widens the point. Once her organization distributed AI broadly, it became clear that model capability was never the bottleneck, because every team had the same models. What differed was how teams solved the same problems, each with its own coding conventions, documentation norms, migration methods, and review expectations. So her first priority was not a better model. It was making the organization&#8217;s engineering knowledge reusable.</p><p>Her team translated coding norms, implementation templates, documentation standards, review criteria, and migration playbooks into reusable skills that work from any agentic environment, whether an engineer reaches for Claude Code, GitHub Copilot, or something else. That let them clear backlogs that had always lost the prioritization fight against feature work. The migration of a legacy Selenium test suite to Playwright, a slow and redundant manual slog across many teams, got done by pairing reusable migration skills with the organization&#8217;s own standards and validation steps, so the generated tests matched both the suite and the reviewers&#8217; expectations. The same approach carried into repository documentation, repetitive refactoring, and framework upgrades, the modernization work where consistency matters more than originality.</p><p>The deeper reason it worked speaks straight to the review bottleneck that AI creates. Models generate code faster than teams can review it, and when every change arrives in a different shape, every pull request costs the reviewer more attention. Standardizing the patterns let reviewers focus on correctness and business logic instead of style and structure. Putatunda does not measure any of this in tokens or lines generated. She measures whether projects moved faster, whether patterns got reused across teams instead of reinvented, and whether reviewers stopped correcting predictable issues, which is another way of saying she measures the same thing Parker does, whether the team can now do work it could not do reliably before.</p><h2>Spend on leverage, not on tokens</h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nxlv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nxlv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nxlv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nxlv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nxlv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nxlv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg" width="250" height="250" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:250,&quot;bytes&quot;:93192,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://deepengineering.net/i/207072610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nxlv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nxlv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nxlv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nxlv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2e4c34a-8f2b-40b2-92fe-b4f06e0c6838_800x800.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 style="text-align: center;"><em>&#8220;Just as we don&#8217;t judge an IDE by how many keystrokes it saves, we shouldn&#8217;t judge AI by how many tokens it consumed.&#8221; &#8212; <a href="https://www.linkedin.com/in/satyamdhar">Satyam Dhar</a>, Staff Software Engineer at <a href="https://galileo.ai/">Galileo</a> and a former engineering leader at Amazon and Adobe</em></p><div><hr></div><p>Local inference and model routing are making cost-per-token murkier by the month, and Parker is honest that he does not have a clean formula to replace it. What he has is better than a formula. It is an example. For most of Honeycomb&#8217;s life, dark mode was the feature customers asked for and never got, enough of a running joke that it has its own face on the twenty-sided die new hires receive. Then, in about six months, the company shipped it, mostly because of AI.</p><p>The caveat matters as much as the result. It was not only AI. Getting there took years of groundwork, a design system and an accessible component library built to support the feature. What AI closed was the mechanical gap that always stalled the project, migrating the existing app onto the new components. The way they did it is the real lesson. Instead of one team grinding through the migration, they shipped prompts and skills so anyone could run it, and pulled in an engineering director who had built a screen seven years earlier to load the skill and update his own page. Yes, it burned a lot of tokens, and a small focused team could have optimized that count down. The accounting that matters is a five-year customer request finally closed and a company full of people who learned how to use AI.</p><p>Dhar puts a name to the mistake underneath the token frame. Too many teams treat AI like another cloud bill, counting tokens because tokens are easy to count, then assuming fewer tokens means better spending. In his experience running large-scale AI systems, some of the most valuable investments were the ones token accounting punished, better model routing, evaluation pipelines, prompt versioning, and experimentation infrastructure, all of which raised spend on paper while sharply lowering the cost of iteration.</p><p>That lower cost of iteration is where Dhar locates the actual return. When engineers can compare models safely and product teams can experiment without fear of quietly degrading production, a team can validate five ideas in the time it used to take to validate one, and the business benefit dwarfs the incremental compute. He also refuses to ignore the second-order effect that never reaches a finance dashboard, the way good infrastructure changes behavior, so engineers start proposing projects that once felt too expensive or too repetitive to attempt and product conversations get more ambitious because implementation cost no longer dominates every decision. His test is a single question, whether the system helped the team build something it otherwise would not have built.</p><h2>Count only the work that clears a bottleneck</h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s07E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s07E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 424w, https://substackcdn.com/image/fetch/$s_!s07E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 848w, https://substackcdn.com/image/fetch/$s_!s07E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!s07E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s07E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg" width="250" height="250" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:316,&quot;width&quot;:316,&quot;resizeWidth&quot;:250,&quot;bytes&quot;:16246,&quot;alt&quot;:&quot;About Fulcra &#8212; The Personal Data Platform Built for You&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="About Fulcra &#8212; The Personal Data Platform Built for You" title="About Fulcra &#8212; The Personal Data Platform Built for You" srcset="https://substackcdn.com/image/fetch/$s_!s07E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 424w, https://substackcdn.com/image/fetch/$s_!s07E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 848w, https://substackcdn.com/image/fetch/$s_!s07E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!s07E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96f86630-c45d-40cf-b0d6-18f815424cb2_316x316.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 style="text-align: center;"><em>&#8220;Only the work that clears a bottleneck is progress. The rest are lightbulb filaments that didn&#8217;t work.&#8221; &#8212; <a href="https://www.linkedin.com/in/mjjtiffany">Michael J.J. Tiffany</a>, co-founder and CEO of <a href="https://fulcradynamics.com/">Fulcra Dynamics</a>.</em></p><div><hr></div><p>Tiffany offers the closest thing in this issue to a replacement unit of account, and he arrived at it by correcting himself. Token use, he argues, is a low-level metric like CPU utilization, important but meaningless in aggregate. His better frame is cost per bottleneck relieved. He started somewhere looser, counting cost per accepted unit of work such as a merged pull request or a user-visible improvement, then learned the hard way to count only the subset of work that actually clears a bottleneck.</p><p>The distinction changes what you tolerate. What you buy when you pay for AI, in Tiffany&#8217;s account, is more attempts, faster loops, more surface area explored, fewer blocked humans, and occasionally, almost at random, a capability that was not economically or psychologically feasible before. Most of that is not progress, and that is fine. The failed experiments and even the shipped features that did not matter are the filaments that did not light. You let them happen, and you measure success only by the bottlenecks that came loose, which keeps the number honest in a way a token count never can.</p><h2>Judgment is the constraint for the next two years</h2><p>The token leaderboards are already gone, and the mandate that produced them is being quietly rewritten across the industry toward outcomes that are harder to game. The deeper lesson is the one Parker keeps returning to. Every layer an agent touches was built on the assumption that the consumer brings context and judgment, and that assumption is exactly what breaks when the consumer, or the incentive, is optimizing a number.</p><p>The voices in this issue disagree on the right replacement, and the disagreement is the useful part. Howe would protect trust before any metric. Putatunda would standardize the engineering practice underneath the tooling. Dhar would ask whether the team can now build what it could not before. Tiffany would count only the bottlenecks that came loose. What they share is a refusal to accept the token as the unit of value, and a conviction that the scarce resource is the judgment to decide what is worth building in the first place. The limiting factors on agentic systems are no longer model capability alone. They are judgment, integration, and the operational discipline to tell useful work apart from motion, and that is where the most consequential engineering decisions of the next two years will be made.</p><div><hr></div><p><strong>Thank you</strong> for reading this special issue of Deep Engineering on why judgment, not tokens, creates value.</p><p>We&#8217;ll be back on Thursday with more expert-led content, and next month, on the first Tuesday of August, with another special issue.</p><p><strong>Keep building,</strong></p><p>Saqib Jan</p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb"><span>speak to us about partnering</span></a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #54: Sibasis Padhi on Governing Agentic Operations Before They Amplify Failures]]></title><description><![CDATA[Sibasis Padhi on Autonomic Reliability Governance, and how actuation budgets, blast radius limits, and reversibility keep self-healing from amplifying failure.]]></description><link>https://deepengineering.net/p/issue-54-governing-agentic-ai-operations</link><guid isPermaLink="false">https://deepengineering.net/p/issue-54-governing-agentic-ai-operations</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 02 Jul 2026 17:17:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/906c47f7-9323-4cb8-a7ab-0bb6c57756fb_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong><a href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng">ARC 2026: Software Architecture in the Age of AI</a></strong></h3><p><em>Packt&#8217;s flagship <strong>two-day</strong> virtual summit </em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a2PN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a2PN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;ARC 2026: Software Architecture in the Age of AI&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="ARC 2026: Software Architecture in the Age of AI" title="ARC 2026: Software Architecture in the Age of AI" srcset="https://substackcdn.com/image/fetch/$s_!a2PN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a2PN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef96fc39-8a27-4d7a-8ebc-f5d67d2154d9_1880x940.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>AI is reshaping software architecture, putting new demands on scalability, governance, reliability, and observability. <a href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng">ARC 2026</a> brings together architects, CTOs, and AI practitioners for keynotes, panels, and workshops on agentic system design, modernizing enterprise apps for AI, and building governable, observable AI systems.</p><blockquote><p>The lineup includes <a href="https://www.linkedin.com/in/ali-arsanjani">Dr. Ali Arsanjani</a> (Director, Applied AI, Google), <a href="https://www.linkedin.com/in/davidping">David Ping</a> (Head of Solutions Architecture, AWS), and <a href="https://www.linkedin.com/in/chi-wang-autogen">Chi Wang</a> (Google DeepMind), alongside other notable leaders distilling practical insights.</p></blockquote><p style="text-align: center;"><span>&#128467;&#65039;  </span><em><strong>25</strong> to <strong>26</strong> July, <strong>10:30</strong> am ET</em></p><p style="text-align: center;"><span>Use code </span><strong>DEEPENG50</strong><span> for 50% off the early bird price.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng&quot;,&quot;text&quot;:&quot;Reserve your spot&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/arc-2026-software-architecture-in-the-age-of-ai-tickets-1991591030384?aff=deepeng"><span>Reserve your spot</span></a></p><div><hr></div><p><span>&#9997;&#65039; </span><strong><span>From the editor&#8217;s desk,</span></strong></p><p><span>Welcome to the </span><strong><span>54th</span></strong><span> issue of </span><strong><span>Deep Engineering</span></strong><span>!</span></p><p>Site reliability engineering is already agentic, and agents are moving from the edges of the incident into its core. New Relic unveiled Autopilot at its <a href="https://finance.yahoo.com/technology/ai/articles/relic-autopilot-relic-ground-truth-130000437.html">New Relic NOW</a> event on June 23, an automated SRE agent that triages incidents, identifies root causes, and scopes remediations the moment an alert fires. &#8220;Operations are going headless,&#8221; said New Relic&#8217;s Head of AI, <a href="http://linkedin.com/in/camden-swita-54a41aa/">Camden Swita</a>, describing agents that pull what they need through APIs and act.</p><p>That is exactly when governance starts to matter more than speed. Once an agent can decide and push a remediation, the reliability question is no longer whether automation moves fast but whether its actions stay bounded. Faster, wider change across a tightly coupled system amplifies trouble as easily as it absorbs it, and the retry, scaling, and routing reflexes that steady a healthy platform can drive a cascade once it is already stressed. Tellingly, even these launches arrive wrapped in the language of guardrails and human review.</p><p>The engineers who feel that trade-off most work where a wrong automated action shows up immediately on the balance sheet. <a href="https://www.linkedin.com/in/sibasis-padhi">Sibasis Padhi</a>, a Staff Software Engineer at <a href="https://www.linkedin.com/company/walmartglobaltech/">Walmart Global Tech</a>, builds large-scale financial platforms of exactly that kind. In his Deep Engineering article &#8220;<a href="https://deepengineering.net/p/autonomic-governance-for-agentic-systems">Autonomic Governance for Agentic Systems</a>,&#8221; he argues that reliability engineering must evolve from managing distributed systems to governing the automation that manages them.</p><p>Padhi makes the case that the fix is not less automation but automation you can bound, audit, and reverse.</p><p>Let&#8217;s get started.</p><div><hr></div><p><strong><span>Featured Newsletter: </span><a href="https://thehustlingengineer.substack.com/">The Hustling Engineer</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://thehustlingengineer.substack.com/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!INnN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!INnN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!INnN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!INnN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!INnN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png" width="238" height="238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe3928da-2936-4f40-810a-caa16995c9e1_500x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:238,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://thehustlingengineer.substack.com/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!INnN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!INnN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!INnN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!INnN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe3928da-2936-4f40-810a-caa16995c9e1_500x500.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Read by <strong>25,000+</strong> software engineers, <a href="https://thehustlingengineer.substack.com/">The Hustling Engineer</a> covers career growth, AI, interviews, and productivity. Every week you get actionable insights, engineering deep dives, and lessons from top tech companies.</p><p>&#128233; Get one actionable lesson every week to accelerate your tech career.</p><p><strong><span>&#8594;</span><a href="https://thehustlingengineer.substack.com/subscribe"><span> </span>Subscribe to The Hustling Engineer</a></strong></p><div><hr></div><p>&#129504; Expert Insight</p><h2>Autonomic Governance for Agentic Systems</h2><p><em>by <a href="https://www.linkedin.com/in/sibasis-padhi">Sibasis Padhi</a></em></p><p>The incident often starts small. Usually one dependency slows, tail latency grows, and a few requests time out. And then the platform does what we trained it to do. All the while, customers automatically retry their failed requests, and very quickly there are far more retry attempts than real new customers trying to use the service. But the autoscaling system sees the growing queue and reads it as exploding traffic, so it adds more servers, often in the wrong place, which sends even more work to the spot that is already overloaded.</p><p>This eats into the bottom line and the return on engineering investment as the bill keeps mounting while the system handles less real work. Circuit breakers finally trip and try to move traffic elsewhere, but those other paths were never built to absorb a sudden flood.</p><p>Everything might still look like it is working on paper, but the whole situation keeps getting worse. Now compound that by adding agentic AI to operations, systems that recommend or execute operational actions, which increases the speed and breadth of change under conditions that are already chaotic.</p><p>AI-driven operational automation can increase fragility when it increases the rate, scope, or coupling of production actions without bounded actuation, explicit constraints, and auditability. Under governance, the same automation reduces fragility by enforcing safety envelopes and reversible decision paths.</p><p>This is not an argument against automation or AI. It is an argument that reliability engineering must evolve from managing distributed systems to governing the automation that manages them, especially under simultaneous SLO, cost, and compliance constraints. I call this discipline Autonomic Reliability Governance (ARG). ARG is not more automation. But governed automation that is policy-constrained, auditable, and rollback-capable by design. It ensures that AI-assisted or agentic operational decisions cannot escalate into amplification engines under stress.</p><h3>Why reliability automation amplifies in microservice ecosystems</h3><p>In microservice systems, outages rarely come from a single broken component. They emerge from how services interact, through feedback loops, dependencies, and cascading effects. Mechanisms that improve reliability in normal conditions can unintentionally amplify problems when the system is already under stress, which is the feedback behavior Karl Johan &#197;str&#246;m and Richard Murray formalize in <em><a href="https://press.princeton.edu/books/hardcover/9780691193984/feedback-systems">Feedback Systems</a></em> (Princeton University Press, 2008).</p><h4>Retries multiply load under stress</h4><p>Retries improve success rates when failures are transient and capacity is available. Under degradation, retries become a multiplier, the dynamic Jeffrey Dean and Luis Andr&#233; Barroso describe in <a href="https://cacm.acm.org/research/the-tail-at-scale/">&#8220;The Tail at Scale&#8221;</a> (Communications of the ACM, February 2013).</p><div class="callout-block" data-callout="true"><p>A dependency slows &#8594; timeouts increase &#8594; retries surge &#8594; downstream work increases &#8594; queues grow &#8594; latency rises &#8594; more timeouts &#8594; more retries.</p></div><p>This is how a minor regression becomes a self-inflicted flood. It can resemble a resource exhaustion event even when there is no attacker. The mechanism is simple. Unbounded retries consume the remaining capacity of an already-constrained dependency. The root issue is not that retries are bad. The issue is that unbounded retries are a powerful actuator that must be governed by system-level constraints such as SLO, cost, and blast radius.</p><h4>Autoscaling is a blunt actuator fed by ambiguous signals</h4><p>Autoscaling adds or removes capacity based on signals like CPU usage, request rate, or queue length. During incidents those signals mislead. Queue depth may grow because a dependency is slow, not because demand has grown. CPU may spike from retries and timeouts, not real workload. Request rates may rise simply because retried calls look like new traffic. A reactive autoscaler then adds capacity in the wrong place, driving up cost while putting even more pressure on the real bottleneck. The result is a system that becomes less stable and more expensive at exactly the moment it needs to recover.</p><h4>Circuit breakers carry shock-wave potential</h4><p>Circuit breakers are necessary. Without system-level coordination they create abrupt traffic shocks. If multiple clients trip simultaneously, alternate paths overload and create secondary failures that appear unrelated to the original degradation.</p><h4>The common pattern is unbounded actuation in a coupled system</h4><p>Retries, autoscaling, and circuit breakers are not mistakes. They are essential reliability tools. Problems arise when they operate like independent reflexes, without coordination or limits. When nothing controls how often they act, how broadly their actions affect the system, how easily changes can be reversed, or how clearly decisions can be explained, they unintentionally amplify failures. Managing this was already difficult with manually written rules. It becomes even more critical when AI agents make or trigger operational decisions.</p><h3>Why agentic operations change the physics</h3><p>Traditional automation such as scripts, thresholds, and fixed policies is limited in scope and relatively legible. Agentic systems expand both capability and risk because they tend to:</p><ol><li><p><strong>Increase velocity:</strong> propose actions faster than humans can validate non-local effects.</p></li><li><p><strong>Increase scope:</strong> coordinate actions across services, clusters, and regions.</p></li><li><p><strong>Optimize proxies:</strong> Charles Goodhart warned in 1975 that a statistical regularity tends to collapse once it is used as a control target, a caution later popularized as &#8220;when a measure becomes a target, it ceases to be a good measure&#8221; (&#8221;<a href="https://www.semanticscholar.org/paper/Problems-of-Monetary-Management:-The-UK-Experience-Goodhart/0ae623749b30de53a39cf05813f5f3842e422c01">Problems of Monetary Management: The U.K. Experience</a>,&#8221; 1975). Optimizing latency or cost in isolation can degrade reliability unless constraints are explicit.</p></li><li><p><strong>Operate under uncertainty: </strong>incidents produce ambiguous signals, and partial telemetry invites misdiagnosis and overcorrection.</p></li><li><p><strong>Reduce legibility unless designed otherwise:</strong> without decision traces, you cannot reconstruct why the system acted or demonstrate compliance.</p></li></ol><p>So the risk is not AI in isolation. The risk is unbounded actuation under uncertainty. ARG is the discipline designed to make agentic operations governable.</p><h3>A practical lens on amplification</h3><p>To manage automation safely, teams need a clear way to recognize when helpful mechanisms start making things worse. Amplification is that lens. A reliability mechanism helps when it improves outcomes without adding too much extra load. It becomes harmful when it multiplies load, volatility, or system-wide effects beyond what the platform can handle. In practice, retries multiply request volume, autoscaling multiplies capacity changes and cost, traffic shifts increase pressure on dependencies, and aggressive fixes create configuration churn. ARG is essentially the discipline of keeping these amplification effects under control.</p><h3>Autonomic Reliability Governance governs the automation itself</h3><p>The notion that systems can manage themselves is not new. Jeffrey Kephart and David Chess articulated that aspiration more than two decades ago in <a href="https://doi.org/10.1109/MC.2003.1160055">&#8220;The Vision of Autonomic Computing&#8221;</a> (IEEE Computer, January 2003). What is new is the velocity and scope of actuation introduced by agentic AI. Autonomic Reliability Governance is the discipline of designing and operating bounded, auditable, and reversible automation, including agentic operational decision layers, under explicit constraints.</p><ul><li><p>SLO constraints: latency ceilings, availability targets, error budgets.</p></li><li><p>Cost constraints: budget caps, unit-economics bounds, runaway scaling prevention.</p></li><li><p>Compliance constraints: auditability of decisions and actions.</p></li></ul><p>ARG is not a product. It is an operating model, automation you can trust because it is governable. ARG treats operational actuation, human or agentic, as a first-class risk surface with explicit safety envelopes..</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SqBR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SqBR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 424w, https://substackcdn.com/image/fetch/$s_!SqBR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 848w, https://substackcdn.com/image/fetch/$s_!SqBR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 1272w, https://substackcdn.com/image/fetch/$s_!SqBR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SqBR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg" width="1456" height="892" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:892,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4364,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/svg+xml&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://deepengineering.net/i/204654996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SqBR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 424w, https://substackcdn.com/image/fetch/$s_!SqBR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 848w, https://substackcdn.com/image/fetch/$s_!SqBR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 1272w, https://substackcdn.com/image/fetch/$s_!SqBR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27f56d02-5b66-4090-a0c2-ebe54b7cb49a_960x588.svg 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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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"><em>Figure 1. The ARG stack. Observe to Decide to Act, with Audit and Reversibility underneath.</em></figcaption></figure></div><h3>Governance primitives that make agentic operations safe</h3><p>ARG becomes real when it is implemented through governance primitives that align with existing reliability practice such as SLOs, error budgets, and progressive rollout, while controlling actuation velocity and blast radius.</p><h4><strong>1) Actuation budgets rate-limit change, not only traffic</strong></h4><p>Most systems rate-limit user requests. Few rate-limit operational change. ARG introduces actuation budgets, limits on how frequently high-impact actions can occur. Scaling shifts, retry escalations, routing changes, and configuration flips consume tokens from a constrained budget. When the budget is exhausted, automation may still observe and recommend, but it cannot repeatedly perturb the system. When instability rises, slow the actuators before adding more intelligence.</p><h4><strong>2) Blast radius governance scopes every action</strong></h4><p>The difference between a safe fix and an outage multiplier is often scope. ARG constrains blast radius using canaries, segmentation across cells and regions, tiered permissions, and scoped rollouts with automatic halt conditions. Even correct actions can be wrong if applied globally in one step. Autonomy must always be localized before it is generalized.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://deepengineering.net/p/autonomic-governance-for-agentic-systems?open=false#%C2%A7governance-primitives-that-make-agentic-operations-safe&quot;,&quot;text&quot;:&quot;Continue reading&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://deepengineering.net/p/autonomic-governance-for-agentic-systems?open=false#%C2%A7governance-primitives-that-make-agentic-operations-safe"><span>Continue reading</span></a></p><p></p><blockquote><p><em><strong>Continue reading </strong>- the seven governance primitives that turn ARG from principle into practice, how to validate governed automation without touching production or private data, and why agentic operations win by becoming more governable, not more intelligent.</em></p></blockquote><div><hr></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;542bb578-1f35-4bcf-a9d4-3d39eca702eb&quot;,&quot;caption&quot;:&quot;Sibasis Padhi on the discipline of bounding, auditing, and reversing agentic operational decisions so automation dampens incidents instead of amplifying them.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Autonomic Governance for Agentic Systems&quot;,&quot;publishedBylines&quot;:[],&quot;post_date&quot;:&quot;2026-07-01T18:00:00.085Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d182b3af-ffd3-4493-aa7b-1a141df2846d_1200x460.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.net/p/autonomic-governance-for-agentic-systems&quot;,&quot;section_name&quot;:&quot;Practical Deep-Dives&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:204644229,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h1><strong>&#128736;&#65039; Tool of the Week</strong></h1><p><strong><a href="https://github.com/argoproj/argo-rollouts">Argo Rollouts</a> </strong>- a progressive delivery controller for Kubernetes</p><p><strong>Highlights</strong>:</p><ul><li><p>Bounds blast radius by exposing a change to a small traffic slice first, closing the gap that standard rolling updates leave open where nothing limits exposure or triggers an automated rollback on failure.</p></li><li><p>Makes reversibility the default, since a rollback shifts traffic back to the previous version instead of triggering a fresh deploy.</p></li><li><p>Gates promotion on evidence rather than a timer, aborting automatically when success rate or latency crosses a threshold, which mirrors the confidence gates in the feature.</p></li><li><p>Fits GitOps workflows, where an automatic rollback surfaces as divergence from declared state and prompts investigation before anyone retries.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/argoproj/argo-rollouts&quot;,&quot;text&quot;:&quot;Learn more about Argo Rollouts&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/argoproj/argo-rollouts"><span>Learn more about Argo Rollouts</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/release-notes">Google makes Model Armor generally available for Agent Gateway</a> - Model Armor reaches general availability for Agent Gateway, screening agent prompts and responses against content guardrails.</p></li><li><p><a href="https://www.datadoghq.com/blog/dash-2026-new-feature-roundup-keynote/">Datadog extends Bits AI to autonomous remediation at DASH</a> - Bits AI now detects and remediates autonomously within predefined guardrails, and Agent Console tracks agent actions.</p></li><li><p><a href="https://www.cncf.io/announcements/2026/05/21/cloud-native-computing-foundation-announces-opentelemetrys-graduation-solidifying-status-as-the-de-facto-observability-standard/">OpenTelemetry graduates from the CNCF</a> - OpenTelemetry graduates from the CNCF, cementing the vendor-neutral telemetry standard that grounds agent decisions in trusted context.</p></li><li><p><a href="https://techcommunity.microsoft.com/blog/appsonazureblog/announcing-general-availability-for-the-azure-sre-agent/4500682">Microsoft makes Azure SRE Agent generally available</a> - Azure SRE Agent is generally available, with Review and Autonomous run modes gating remediation behind human approval.</p></li><li><p><a href="https://grafana.com/blog/ai-observability-for-agents-in-grafana-cloud/">Grafana previews AI Observability in Grafana Cloud</a> - Grafana previews AI Observability, treating agent sessions as first-class telemetry and alerting on policy violations and anomalies.</p></li></ul><div><hr></div><p><span>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</span></p><p><span>We&#8217;ll be back next week with more expert-led content.</span></p><p><span>Keep building,</span></p><p><span>Saqib Jan</span></p><p><span>Editor-in-Chief, Deep Engineering</span></p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb"><span>speak to us about partnering</span></a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #53: Rick Spencer on Matching the Right AI to the Right Engineering Work]]></title><description><![CDATA[Rick Spencer, GM of Product and Engineering at SUSE, on the three-tier framework his teams use to match AI tools to work, why frontier models are reserved for the hardest problems, and how to keep cost and control in the engineer's hands.]]></description><link>https://deepengineering.net/p/issue-53-rick-spencer-matching-ai-to-engineering-work</link><guid isPermaLink="false">https://deepengineering.net/p/issue-53-rick-spencer-matching-ai-to-engineering-work</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 25 Jun 2026 15:41:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5a84c1b1-7455-466d-93ef-b2d48d938c6a_2760x1240.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.eventbrite.co.uk/e/10-essential-ai-agents-every-engineer-must-build-tickets-1992470369511?aff=deepeng">A Hands-On Workshop for the Next Generation of Engineers</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/10-essential-ai-agents-every-engineer-must-build-tickets-1992470369511?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P5L3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!P5L3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!P5L3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!P5L3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P5L3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/10-essential-ai-agents-every-engineer-must-build-tickets-1992470369511?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!P5L3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!P5L3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!P5L3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!P5L3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a2b450-b55f-43a3-bf49-e7cfd2fe301d_2160x1080.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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"><em>Includes a free copy of the <strong>ebook</strong> 30 Agents Every AI Engineer Must Build and a certificate of completion.</em></figcaption></figure></div><p>A hands-on, build-along workshop where you build and run 10 production-inspired AI agents across finance, healthcare, and education. Walk away with a complete GitHub repo and implementations for OpenAI, Claude, Gemini, and local models.</p><p>&#128467;&#65039; September <strong>12th</strong> &#183; <strong>11:00</strong> AM EDT onwards</p><p>Use code <strong>DEEPENG50</strong> for 50% off the early bird price. First 10 sign-ups only.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/10-essential-ai-agents-every-engineer-must-build-tickets-1992470369511?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/10-essential-ai-agents-every-engineer-must-build-tickets-1992470369511?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p><span>&#9997;&#65039; </span><strong><span>From the editor&#8217;s desk,</span></strong></p><p><span>Welcome to the </span><strong><span>53rd</span></strong><span> issue of </span><strong><span>Deep Engineering</span></strong><span>!</span></p><p>At London Tech Week this month, <a href="https://blogs.nvidia.com/blog/uk-sovereign-ai-advancements/">NVIDIA</a> made it exceedingly clear, showcasing a wave of UK companies building AI for environments where sovereignty is not optional. Building capable AI models is no longer the hardest problem. The real challenge is running them in environments where security, compliance, and cost aren&#8217;t negotiable. Organizations want AI they can trust, control, and operate on their own terms.</p><p><span>That&#8217;s exactly the challenge </span><a href="https://www.linkedin.com/in/rickspencer3"><span>Rick Spencer</span></a><span> has been solving at </span><a href="https://www.suse.com/"><span>SUSE</span></a><span>. As General Manager for Technology and Product at SUSE, he works with the teams behind its enterprise Linux and cloud native platforms for regulated organizations. His perspective is simple: engineers will use AI wherever it helps them move faster. But the real question isn&#8217;t whether teams should adopt AI; in fact, it is how to match the right model to the right kind of work.</span></p><p><span>In today&#8217;s issue, Spencer shares the framework his teams use to make those decisions. We discuss where agentic AI is delivering real value, why frontier models should be reserved for high-impact problems, and how SUSE keeps AI adoption practical without letting costs spiral.</span></p><blockquote><p><span>You can read or watch the full Q&amp;A interview </span><a href="https://deepengineering.substack.com/p/sovereign-ai-agentic-infrastructure-rick-spencer-suse"><span>here</span></a><span>.</span></p></blockquote><p><span>Let&#8217;s get started.</span></p><div><hr></div><p style="text-align: center;"><strong><span>Featured Newsletter: </span><a href="https://aiagentssimplified.substack.com/">AI Agents Simplified</a></strong> </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aiagentssimplified.substack.com/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g3qt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png 424w, https://substackcdn.com/image/fetch/$s_!g3qt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png 848w, https://substackcdn.com/image/fetch/$s_!g3qt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png 1272w, https://substackcdn.com/image/fetch/$s_!g3qt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g3qt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png" width="256" height="256" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:256,&quot;width&quot;:256,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://aiagentssimplified.substack.com/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g3qt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png 424w, https://substackcdn.com/image/fetch/$s_!g3qt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png 848w, https://substackcdn.com/image/fetch/$s_!g3qt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.png 1272w, https://substackcdn.com/image/fetch/$s_!g3qt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c1e4e65-e79c-4dab-b3a6-93b3e23343b2_256x256.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://aiagentssimplified.substack.com/">AI Agents Simplified</a></strong> cuts through the noise with clear, actionable breakdowns of agents, automation, and what's actually worth your attention. Trusted by 58,000+ subscribers, with new issues every week and no hype.</p><p><strong>&#8594; <a href="https://aiagentssimplified.substack.com/">Subscribe to AI Agents Simplified</a></strong></p><div><hr></div><p><strong><span>Expert Insights</span></strong></p><h2><span>Not whether engineers use AI, but which AI for which work</span></h2><p><em><span>by </span><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Srishty Goyal&quot;,&quot;id&quot;:523194698,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17b92734-dbd6-43f6-ac70-f6d999200f28_144x144.png&quot;,&quot;uuid&quot;:&quot;57632cd3-565f-42c9-8a03-aba16c1a438d&quot;}" data-component-name="MentionToDOM"></span> <span>with </span><a href="https://www.linkedin.com/in/rickspencer3"><span>Rick Spencer</span></a></em></p><p>Most engineering organizations start their AI adoption conversation with limits. Should engineers use it, and how much should they be allowed to? <a href="https://www.linkedin.com/in/rickspencer3">Rick Spencer</a> sees that as the wrong question. As General Manager for Technology and Product at <a href="https://www.suse.com/">SUSE</a>, he works with the teams building enterprise Linux and cloud native infrastructure for companies operating under strict compliance requirements. His starting point is practical: engineers will use AI wherever it helps them move faster.</p><p>&#8220;It&#8217;s not like, oh, don&#8217;t use AI,&#8221; he says. &#8220;That would just not be workable.&#8221;</p><p>For Spencer, the real question is not whether engineers should use AI. It is which AI belongs to which kind of work. Getting that decision right is what separates useful AI adoption from adoption that quietly burns money, trust, and control.</p><h3><span>Three kinds of AI work, and why the distinction matters</span></h3><p><span>SUSE breaks engineering use of AI into three categories, each calling for different tools, cost profiles, and levels of oversight. Spencer describes the first as </span><strong><span>daily work</span></strong><span>: statement completion and debugging that engineers rely on throughout the day. The second is </span><strong><span>agentics</span></strong><span>, where agents take care of repetitive work and interruptions that would otherwise consume engineering time. The third is what he calls </span><strong><span>curve jumping</span></strong><span>, and it is the most consequential of the three.</span></p><p><span>&#8220;That&#8217;s like when you&#8217;re just going from zero to infinity,&#8221; he explains. &#8220;You can do things with AI that you wouldn&#8217;t have tried before, like solve really deep problems in one big step.&#8221;</span></p><p><span>The value of this distinction is that it helps teams make more deliberate tooling and cost decisions instead of relying on guesswork. As Spencer puts it, the framework helps engineering managers pattern-match the right AI to the right kind of work. If a task only needs statement completion and debugging, that points to one set of tools. If it involves data sovereignty requirements, that points to another. Frontier models, the most capable and most expensive, are reserved for curve jumping, where their cost is justified by the scale and complexity of the problem.</span></p><p><span>&#8220;It sounds very organized now, but there was a lot of experimentation, a lot of really rapid innovation from the engineers,&#8221; Spencer says of how the framework came together.</span></p><p><span>The framework emerged from engineers first. Management then built structure around what those early adopters had learned so the approach could be shared across the organization. It&#8217;s a practical reminder that successful AI frameworks often evolve from experimentation before they become formal processes.</span></p><h3><span>Frontier models are for curve jumping, not code completion</span></h3><p><span>One of Spencer&#8217;s most practical observations is about matching model capability to the task at hand. Routing every request through the most capable model is both expensive and unnecessary, and he is clear about where the line sits.</span></p><p><span>&#8220;You do not need a frontier model to understand your Python module and give you code completion,&#8221; he says. &#8220;You just don&#8217;t need it for that.&#8221;</span></p><p><span>Frontier models earn their cost in the </span><strong><span>curve</span></strong><span>-</span><strong><span>jumping</span></strong><span> category, where the problems are strategic and complex.</span></p><p><span>&#8220;We have projects where we spend tens of thousands of dollars on frontier models, but they generated, who knows, a million or two million dollars in value,&#8221; he notes.</span></p><p><span>When the value is that high, the investment makes sense. The discipline is in not using frontier models for work that a much cheaper model can handle just as well. Spencer&#8217;s teams apply the same thinking in another way. They use frontier models to build agents that later run on much cheaper models.</span></p><p><span>&#8220;We use the frontier model to create an agent that can then be run on a much lower-cost model,&#8221; he explains.</span></p><p><span>The frontier model writes the Python scripts and prepares the context the agent needs. After that, a lower-cost model handles the repeated execution. The expensive model does the design work once, while the cheaper model runs the workflow repeatedly. For teams looking to bring frontier-level capabilities into production without paying frontier-level costs every time, it&#8217;s a practical approach that balances capability with efficiency.</span></p><h3><span>Agentics is where the toil goes to die</span></h3><p><span>The agentics category is where Spencer&#8217;s examples become most concrete. More importantly, they show what relieving engineering toil looks like in a production environment rather than a demo. His favorite example isn&#8217;t about writing code at all. After a series of software supply chain attacks, SUSE&#8217;s security team built an agent that scans for newly reported compromised packages every hour.</span></p><p><span>&#8220;It finds those, and then it scans all of our open source code to see if we&#8217;re using it anywhere,&#8221; he says. &#8220;If we are, it writes a report and notifies us on Slack.&#8221;</span></p><p><span>The benefit is immediate.</span></p><p><span>&#8220;If you see a report of a tool chain attack, our agent was on it before we even knew about it,&#8221; Spencer says.</span></p><p><span>Work that once required engineers to manually search through repositories now happens automatically, often before anyone has even seen the news.</span></p><p><span>His second example focuses on CVE triage, another task that has become increasingly difficult to manage manually at enterprise scale. CVEs arrive faster than teams can assess them, and many turn out not to be relevant.</span></p><p><span>&#8220;A lot of times the CVE comes in and the package is in the repo, but it is not being exposed in any way that it would matter,&#8221; Spencer says.</span></p><p><span>An agent reviews each CVE for applicability and helps generate the VEX file that documents whether the vulnerability actually affects the product. The result is that engineers spend less time sorting through reports and more time addressing the vulnerabilities that matter.</span></p><p><span>&#8220;We&#8217;re focusing our attention not on keeping up with the crush of CVE reports, but on the actual vulnerabilities,&#8221; he explains. &#8220;Our attention is reserved for actually keeping our customers safe.&#8221;</span></p><p><span>That&#8217;s the hallmark of a good agentic use case. It removes repetitive work without taking engineers away from the decisions that require human judgment.</span></p><h3><span>The context that does not survive the session</span></h3><p><span>As engineers move from AI-assisted coding to autonomous agents, Spencer points to a challenge his senior engineers have had to learn to manage. Context that isn&#8217;t made explicit often ends up buried in conversation history. When that history disappears, the agent&#8217;s behavior changes.</span></p><p><span>&#8220;Those history sessions can embed context which you have not made explicit in your markdown,&#8221; he says. &#8220;The next time you go and you don&#8217;t have all that history, you get different behavior than you were expecting.&#8221;</span></p><p><span>The lesson, Spencer says, is to make recurring context explicit instead of letting it live inside a session that will eventually disappear.</span></p><p><span>The challenge becomes even more significant once agents begin operating autonomously. Unlike traditional infrastructure tools, agents are not deterministic.</span></p><p><span>&#8220;This is a big change in infrastructure management,&#8221; he notes. &#8220;If I give this input, I know exactly what&#8217;s going to happen.&#8221;</span></p><p><span>With conventional tools, unexpected inputs usually produce predictable failures. Agents behave differently. When they encounter something unexpected, they try to solve the problem, and that often requires additional context, including organizational policies or guidance on how a situation should be handled.</span></p><p><span>This is where MCP servers become important. They give agents a way to retrieve the right context when they need it. At that point, context management is no longer just about writing better prompts; it becomes part of the infrastructure itself.</span></p><h3><span>Cost control is a design decision, not an afterthought</span></h3><p><span>Running AI at scale makes cost something teams have to design for, not react to later. Spencer sees this as part of the architecture.</span></p><p><span>At SUSE, part of the answer is structural. Self-hosted AI gives the organization a clearer cost ceiling. The question becomes how well the team can observe and use that fixed capacity, rather than whether a usage-based bill might suddenly run away.</span></p><p><span>Spencer connects this directly to sovereignty.</span></p><p><span>&#8220;Sometimes they call it cost sovereignty,&#8221; he says, &#8220;because no one can come back later and say, oh, by the way, we&#8217;re changing our model.&#8221;</span></p><p><span>He has seen suppliers move from seat-based pricing to usage-based pricing, leaving engineering teams with a cost model they did not control. Hosting your own AI infrastructure changes that equation. It gives teams more control over where AI runs, how it is governed, and what it can cost.</span></p><p><span>The governance side of that argument, including how SUSE keeps agents and their costs inside a boundary it can stand behind, is covered in the companion piece,</span><a href="https://deepengineering.substack.com/p/how-suse-runs-ai-without-losing-control"><span> How SUSE Runs AI Without Losing Control</span></a><span>.</span></p><p><span>The more tactical layer is circuit breakers, which cap runaway agent spend in real time.</span></p><p><span>&#8220;We just noticed our Claude usage in the last minute was way too high,&#8221; he says, describing the trigger.</span></p><p><span>Spencer acknowledges the trade-off. Aggressive rate limiting can frustrate engineers who are trying to get work done, but it is a necessary safeguard when autonomous agents can generate costs without a human in the loop.</span></p><p><span>Like the three-tier framework, the goal is simple: match the cost of the tool to the value of the work and put clear limits around the situations where agents can spend without delivering value.</span></p><p><span>Ultimately, Spencer&#8217;s goal isn&#8217;t to slow engineers down. It&#8217;s to give them the confidence to use AI effectively without sacrificing governance or cost control.</span></p><p><span>&#8220;The penny drops for them that they&#8217;re in a new paradigm,&#8221; he says, describing the moment developers realize they can be ten or even a hundred times more productive.</span></p><p><span>The framework, the tooling, and the guardrails exist to support that shift, not to get in its way.</span></p><p><span>&#8220;You don&#8217;t want to stop them from getting that 100X improvement,&#8221; he says. &#8220;You need to give them the right tools for the job.&#8221;</span></p><p><span>For Spencer, that&#8217;s what successful AI adoption looks like: giving engineers the freedom to move faster while making sure the right tool is used for the right work.</span></p><div class="callout-block" data-callout="true"><p><strong>The Packt Summer Sale is live through June 30.</strong> Get 8,000+ eBooks and videos across AI, programming, data, DevOps, and cloud for $9.99 each, including <a href="https://www.packtpub.com/en-us/product/clean-architecture-with-net-9781805128021">Clean Architecture with .NET</a>, <a href="https://www.packtpub.com/en-us/product/python-illustrated-9781836646327">Python Illustrated</a>, and the <a href="https://www.packtpub.com/en-us/product/c-stl-cookbook-9781836204244">C++ STL Cookbook</a>.</p><p>&#8594; <strong><a href="https://www.packtpub.com/">Browse the sale</a></strong></p></div><div><hr></div><h2><strong>In case you missed</strong></h2><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;7a557be2-2077-42a3-8d18-22563eddcfa2&quot;,&quot;caption&quot;:&quot;Rick Spencer, GM of Product and Engineering at SUSE, on how an open source enterprise runs AI at scale while keeping control of its data, its tooling, and its costs, treating sovereignty, MCP governance, and cost predictability as one connected problem.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How SUSE Runs AI Without Losing Control&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-06-24T20:20:29.941Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c14a30e1-69ef-4264-9338-6a7b82cc9e59_2760x1240.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/how-suse-runs-ai-without-losing-control&quot;,&quot;section_name&quot;:&quot;Engineering Leadership&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:203458741,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;7a4d7ba0-6a0e-49ee-928f-cb9891bb90c6&quot;,&quot;caption&quot;:&quot;Interview with Rick Spencer on running AI disconnected from the internet, the three-tier framework SUSE uses to match tools to work, why output metrics are vanity metrics, and MCP as a control layer for enterprise infrastructure<br />&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Sovereign AI and Agentic Infrastructure with Rick Spencer&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-06-24T18:06:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/8PdtwqLL6YI&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/sovereign-ai-agentic-infrastructure-rick-spencer-suse&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:203441001,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2><span>&#128736;&#65039; </span><strong><span>Tool of the Week</span></strong></h2><p><strong><a href="https://github.com/stacklok/toolhive"><span>ToolHive</span></a></strong><span> is an open source platform from Stacklok for running and governing Model Context Protocol (MCP) servers in production.</span></p><p><strong><span>Highlights</span></strong></p><ul><li><p><strong><span>Secure isolation:</span></strong><span> Runs each MCP server in its own isolated container with minimal permissions.</span></p></li></ul><ul><li><p><strong><span>Enterprise access control:</span></strong><span> Enforces per-request identity and access policies with OIDC integration.</span></p></li></ul><ul><li><p><strong><span>Self-hosted deployment:</span></strong><span> Keeps the MCP registry, gateway, and servers on your own infrastructure.</span></p></li></ul><ul><li><p><strong><span>Lower token usage:</span></strong><span> Uses semantic tool discovery to reduce token usage by up to 85%.</span></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/stacklok/toolhive&quot;,&quot;text&quot;:&quot;ToolHive&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/stacklok/toolhive"><span>ToolHive</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://x.ai/news/grok-plugin-marketplace">Grok Build opens a plugin marketplace</a> - New plugin marketplace featuring tools from MongoDB, Vercel, Sentry, and Cloudflare.</p></li><li><p><a href="https://www.gartner.com/en/newsroom/press-releases/2026-05-19-gartner-forecasts-worldwide-ai-spending-to-grow-47-percent-in-2026">Gartner Forecasts Worldwide AI Spending </a>- Enterprise spending is expected to grow 47% year-over-year to reach $2.59 trillion in 2026.</p></li><li><p><a href="https://www.anthropic.com/research/claude-code-expertise">Anthropic study links AI coding success to domain understanding</a> - Domain expertise proved a stronger predictor of success than coding ability.</p></li><li><p><a href="https://orca.security/resources/blog/mastra-npm-supply-chain-attack/"><span>Mastra npm supply chain attack disclosed</span></a><span> - Over 144 packages were compromised through the </span><em><span>easy-day-js</span></em><span> typosquat dependency.</span></p></li><li><p><a href="https://developers.openai.com/codex/changelog"><span>OpenAI Codex adds granular internet access controls</span></a><span> - Users can now restrict internet access by domain and HTTP method.</span></p></li></ul><div><hr></div><p><span>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</span></p><p><span>We&#8217;ll be back next week with more expert-led content.</span></p><p><span>Keep building,</span></p><p><span>Saqib Jan</span></p><p><span>Editor-in-Chief, Deep Engineering</span></p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb"><span>speak to us about partnering</span></a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #52: Sam Keen on the Context Tax You Pay in Every Claude Code Session]]></title><description><![CDATA[Why every AI coding session starts from zero, and how to fix it with a system instead of a better prompt]]></description><link>https://deepengineering.net/p/issue52-context-tax-claude-code-sam-keen</link><guid isPermaLink="false">https://deepengineering.net/p/issue52-context-tax-claude-code-sam-keen</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 18 Jun 2026 16:38:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/869b39fe-96eb-403e-8485-74c8ce089864_2760x1240.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng">Claude Code for Software Engineering</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5k27!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!5k27!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png" width="900" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5k27!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!5k27!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Join this interactive workshop to learn how to turn Claude Code from a session-by-session assistant into a repeatable engineering system, using structured context, reusable skills, scoped rules, hooks, and guardrails that work across real codebases and team workflows.</p><p>&#128467;&#65039; Friday, June 20 &#183; 10:30 AM EDT onwards</p><p style="text-align: center;"><span>Use code </span><strong>DEEPENG50</strong><span> for 50% off.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p><span>&#9997;&#65039; </span><strong><span>From the editor&#8217;s desk,</span></strong></p><p><span>Welcome to the 52nd issue of Deep Engineering!</span></p><p>A <a href="https://github.com/VILA-Lab/Dive-into-Claude-Code">recent study</a> pulled apart the architecture of Claude Code and found that only 1.6 percent of the codebase is actual AI decision logic, while the remaining 98.4 percent is the deterministic infrastructure that surrounds the model, including the permission gates, the context management, the tool routing, and the recovery logic that keep the whole thing usable. The agent loop at the center of it turns out to be a simple while loop, which means the genuine engineering effort sits in the systems built around the model rather than in the model itself.</p><p><span>This analysis lines up almost exactly with what most engineers working with AI tools are discovering through daily practice, which is that the thing slowing them down is rarely the intelligence of the model and is far more often the fact that none of the context they carefully supply in one session survives into the next. Supplying that missing context has quietly become the engineer&#8217;s job, and it gets paid at the start of every single session without anyone ever counting it.</span></p><p>This week <a href="https://www.linkedin.com/in/samkeen">Sam Keen</a>, an agentic engineering researcher, and former engineer at AWS and Nike, and the author of <a href="https://www.packtpub.com/en-in/product/clean-architecture-with-python-9781836642886">Clean Architecture with Python</a>, shares a practical way to stop paying that cost for good. His piece walks through how to convert the context you re-explain on repeat into a system that compounds across sessions, using the mechanisms Claude Code already gives you, and how to recognize the moment that system starts quietly working against you rather than for you.</p><p><span>Let&#8217;s get started.</span></p><div><hr></div><p><strong><span>Featured Newsletter: </span><a href="https://engineeringatscale.substack.com/">Engineering At Scale</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://engineeringatscale.substack.com/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c8fw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c8fw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c8fw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c8fw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c8fw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg" width="292" height="291.16332378223495" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:698,&quot;resizeWidth&quot;:292,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://engineeringatscale.substack.com/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!c8fw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c8fw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c8fw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c8fw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7dac87-ecd9-4c27-a811-8cc917c7ca63_698x696.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A weekly column that makes databases, system design, and architecture easy to follow, with clear explanations, practical insights, and career advice for engineers building at scale.</p><p><strong><span>&#8594; </span><a href="https://engineeringatscale.substack.com/">Subscribe to Engineering At Scale</a></strong></p><div><hr></div><h1><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">The Hidden Cost of Starting From Scratch</span></h1><p><em>Submitted by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Sam Keen&quot;,&quot;id&quot;:11641009,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fbfbf069-838f-4d75-b1d6-b7edb01eca2c_1254x1254.png&quot;,&quot;uuid&quot;:&quot;275b7dcb-d4c4-4254-b875-4633e6ae1d7d&quot;}" data-component-name="MentionToDOM"></span></em></p><p>When you open a fresh Claude Code session, the assistant knows nothing about your project. It does not know where your tests live, it does not know the patterns this codebase uses, and it does not remember the conventions you walked it through the day before. So you explain all of it again, and then you do the same thing again tomorrow. </p><p>That re-teaching is a tax, and it is the easiest one to overlook because it never shows up on any gauge, which means you pay it at the start of every session without ever once counting what it costs you.</p><h2><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">The bottleneck isn&#8217;t the model</span></h2><p>The real limiting factor in AI-assisted development right now is not how clever the model is, because the models are already more than capable enough for the work most teams are asking of them. The limiting factor is that none of that intelligence carries from one session into the next, and the job of supplying the missing context every single time has quietly been handed to you without anyone naming it as work.</p><p>Picture a senior engineer who forgets everything about your codebase overnight, every single night, and shows up the next morning brilliant and fast and genuinely helpful but starting again from absolute zero. You would not describe that person as a force multiplier, you would describe the arrangement as exhausting, and yet that is the default relationship most people have with their coding assistant. They end up blaming the model for the drag when the actual problem is that nothing they explained yesterday is still present today.</p><h2>Write the context down once</h2><p>The fix is to stop starting from scratch, which means writing the recurring context down once in a place the harness reads automatically so that it is present in every session without you having to lift a finger. Claude Code gives you several mechanisms for doing exactly this, and three of them are foundational. The most useful way to think about the three is by the specific kind of cost each one removes from your day.</p><p><strong>Agent files</strong>, written as CLAUDE.md, are your project&#8217;s standing memory, the place where the conventions and the layout and the way things get done here all live. You write them once and they load into every session, so you stop re-explaining the project from the beginning each time. The part most people underuse is that these files load hierarchically, which means a personal file can ride along on every session on your machine, a broader file can cover all of your coding work, and a project-specific file can sit on top of both, each one layering onto the last. The thing to remember is to keep them lean, somewhere around a couple hundred lines each rather than letting them sprawl.</p><p><strong>Skills</strong> capture the procedures you would otherwise walk through by hand every time, the multi-step moves where you first do one thing and then check another before continuing. A procedure you would normally re-explain becomes a procedure you simply invoke, and because a skill is not limited to instructions alone, it can bundle the scripts the agent runs, which means the repeatable move can carry real executable code rather than prose describing what the code should do.</p><p><strong>Hooks</strong> handle the corrections you would otherwise find yourself repeating, the lint nit and the formatting rule and the check you keep having to ask for. They fire at fixed points in the harness lifecycle, before or after a tool runs for instance, and because they sit outside the model&#8217;s control they run every single time regardless of whether the model would have remembered to do them. You give the note once and then you never have to give it again.</p><p>The pattern underneath all three mechanisms is the same one, because each of them converts a recurring cost into a single one-time write. That is what compounding actually means in this context, and it is the direct opposite of starting from scratch, since the investment you make is small and the payback lands in every session that follows it.</p><h2>Your setup can rot, here is how to catch it</h2><p>There is an honest catch worth naming here, and it is the place where the /context command earns its keep, because a compounding system can quietly rot over time. You install a skill pack and then forget it is even there. A CLAUDE.md that started out tight slowly fills up with things that mattered once and no longer do. The investment turns into freight without you noticing, and freight is really just the from-scratch tax wearing a slightly nicer costume.</p><p>The /context command is how you tell the difference, and it does one genuinely useful thing, which is that it makes the invisible visible. One command gives you a colored grid and a per-category breakdown of exactly what you are carrying before the conversation has even started. You do not need to master it, you only need to glance at it often enough to notice when something is wrong.</p><p>The last time I ran it, the single biggest chunk of my standing context was not the project memory I had carefully written, it was 14.4k tokens of skill packs I had installed on a whim and then never used even once. I had assumed my context was quietly working in my favor, and a five-second look told me otherwise. Culling them took about a minute, using /skills to deactivate the ones I never reach for and /plugin to drop a whole pack that had arrived bundled with something else.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H9OX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H9OX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png 424w, https://substackcdn.com/image/fetch/$s_!H9OX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png 848w, https://substackcdn.com/image/fetch/$s_!H9OX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png 1272w, https://substackcdn.com/image/fetch/$s_!H9OX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H9OX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png" width="1302" height="492" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77111332-5499-46cb-a963-24521563f285_1302x492.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:492,&quot;width&quot;:1302,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H9OX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png 424w, https://substackcdn.com/image/fetch/$s_!H9OX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png 848w, https://substackcdn.com/image/fetch/$s_!H9OX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.png 1272w, https://substackcdn.com/image/fetch/$s_!H9OX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77111332-5499-46cb-a963-24521563f285_1302x492.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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"><em><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">My </span></em><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">/context</span><em><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);"> readout: skills were the largest slice of standing overhead, bigger than the project memory I&#8217;d actually written.</span></em></figcaption></figure></div><p>That same readout flagged a second problem with a different fix, because the CLAUDE.md in my working directory had grown to 3,500 tokens without my noticing. I sat down with Claude and compacted it, cutting the irrelevant and the quietly duplicated, and it came back at 1,200 tokens, which is the same project memory carried at roughly a third of the weight.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cuto!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cuto!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 424w, https://substackcdn.com/image/fetch/$s_!Cuto!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 848w, https://substackcdn.com/image/fetch/$s_!Cuto!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 1272w, https://substackcdn.com/image/fetch/$s_!Cuto!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cuto!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png" width="1234" height="194" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:194,&quot;width&quot;:1234,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Cuto!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 424w, https://substackcdn.com/image/fetch/$s_!Cuto!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 848w, https://substackcdn.com/image/fetch/$s_!Cuto!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 1272w, https://substackcdn.com/image/fetch/$s_!Cuto!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefe0673e-3b88-4e1c-b25b-fc2f2c54c1b8_1234x194.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Clarity helps the agent for exactly the same reason it helps a human reader, because a bloated and half-contradictory CLAUDE.md does not only cost you tokens, it actively muddies the very instructions you are leaning on to get good work out of the model. A lean file is easier for the model to follow in the same way that a tight brief is easier for a colleague to follow.</p><p>The specific number you land on does not really matter, but the habit does, so skim /context the way you would skim a credit-card statement, not obsessively but often enough to catch the recurring charge you forgot you ever signed up for.</p><h2><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">Do the upfront work once</span></h2><p>Starting from scratch feels free because the cost is smeared so thin across every session you will ever run, but it is not actually free, and it is in fact one of the largest and quietest line items in the way you work.</p><p>So put in the upfront work of writing a lean memory file, building a few skills you genuinely use, and setting a couple of hooks that hold the line for you. Then keep curating it, because models change and your projects change, and a glance at /context now and then is what tells you which parts of your setup are still earning their place. The goal was never a clever prompt. The goal is a setup that already knows your project before you say a single word to it.</p><div class="callout-block" data-callout="true"><p><strong>Ad:</strong> Join Packt&#8217;s live workshop <strong><a href="https://www.eventbrite.co.uk/e/claude-code-beyond-prompts-tickets-1988571262176?aff=aiagentsimplified">Claude Code Beyond Prompts</a></strong> by <strong>Sam Keen</strong> on <strong>June 20</strong> and learn how to turn CLAUDE.md, skills, and hooks into a compounding coding system.</p><p>Use code <strong>CLAUDE60</strong> for 60% off. Limited to the first 10 sign-ups.</p></div><h2><span>&#128736;&#65039; </span><strong><span>Tool of the Week</span></strong></h2><p><strong><a href="https://github.com/yamadashy/repomix"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">Repomix</span></a></strong><span> &#8212; an open source tool that packs an entire repository into a single, AI-friendly file ready to feed to a coding agent, with token counting built in.</span></p><p><strong><span>Highlights</span></strong></p><ul><li><p><span>Packs a whole repository into a single structured file optimized for LLM consumption, removing the manual copy-paste that eats the start of every session.</span></p></li><li><p><span>Counts tokens per file and for the whole pack, so you see what context costs before you spend it rather than after.</span></p></li><li><p><span>Ships an official skill for Claude Code, Cursor, Codex, and Copilot, letting agents run Repomix directly inside the workflow.</span></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/yamadashy/repomix&quot;,&quot;text&quot;:&quot;Learn more about Repomix&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/yamadashy/repomix"><span>Learn more about Repomix</span></a></p><div><hr></div><h2>&#128206; <strong>Tech Briefs</strong></h2><ul><li><p><strong><a href="https://www.anthropic.com/news/fable-mythos-access">Anthropic suspends Fable 5 and Mythos 5 worldwide</a></strong> - A US export control directive citing national security forced Anthropic to disable both frontier models for all customers, days after launch, with all other models unaffected.</p></li><li><p><strong><a href="https://github.com/openai/codex/releases">OpenAI Codex 0.140.0 ships</a></strong> - Codex adds Claude Code imports, unified mentions, and encrypted Amazon Bedrock API-key authentication.</p></li><li><p><strong><a href="https://github.com/github/copilot-cli/releases">GitHub Copilot CLI 1.0.63 released</a></strong> - A new <code>deferTools</code> option reduces MCP context bloat when tool search is enabled.</p></li><li><p><strong><a href="https://venturebeat.com/technology/xiaomis-new-open-source-agentic-ai-coding-harness-mimo-code-beats-claude-code-at-ultra-long-200-step-tasks">Xiaomi open-sources MiMo Code</a></strong> - Xiaomi&#8217;s terminal coding agent targets long tasks and offers free limited-time MiMo Auto access.</p></li><li><p><strong><a href="https://help.openai.com/en/articles/6825453-chatgpt-release-notes">ChatGPT adds memory summary controls</a></strong> - Users can delete memories, turn memory off, and directly correct their memory summary.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Keep building,</p><p>Saqib Jan</p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em><span>If your company wants to reach senior developers, software engineers, and technical decision-makers, </span><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">speak to us about partnering</a><span> with Deep Engineering.</span></em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #51: Francesco Ciulla on Rust, Go, and Service-Level Engineering Decisions]]></title><description><![CDATA[On Rust versus Go, latency-sensitive services, memory overhead, deployment workflows, and the backend constraints that shape language choices]]></description><link>https://deepengineering.net/p/issue51-rust-vs-go-service-level-backend-decisions</link><guid isPermaLink="false">https://deepengineering.net/p/issue51-rust-vs-go-service-level-backend-decisions</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 11 Jun 2026 13:30:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cdd4048e-b9ef-459f-8c4a-0825dd1211c6_1024x339.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.eventbrite.co.uk/e/build-production-ready-ai-applications-with-rust-claude-and-codex-tickets-1987053747248?aff=deepeng">Build Production-Ready AI Applications with Rust, Claude and Codex</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/build-production-ready-ai-applications-with-rust-claude-and-codex-tickets-1987053747248?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hTwW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hTwW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hTwW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hTwW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hTwW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg" width="800" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/build-production-ready-ai-applications-with-rust-claude-and-codex-tickets-1987053747248?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!hTwW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hTwW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hTwW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hTwW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F905c15b8-b174-4a4b-808a-965540151675_800x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Learn how to use Claude and Codex as development partners for building reliable Rust applications faster. This hands-on workshop with <strong>Francesco Ciulla</strong> shows how to scaffold, refactor, debug, test, and productionize AI-assisted Rust code with confidence.</p><p style="text-align: center;"> Use code <strong>DEEPENG50</strong> for 50% off.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/build-production-ready-ai-applications-with-rust-claude-and-codex-tickets-1987053747248?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/build-production-ready-ai-applications-with-rust-claude-and-codex-tickets-1987053747248?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>51st</strong> issue of Deep Engineering!</p><p>The Rust team <a href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/">released version 1.96.0 on May 28</a>, shipping new Copy-compatible range types, stabilized assert macros, and Cargo security fixes. It is the kind of release that tells you something important about where the language is. Now on a steady six-week release cadence, Rust&#8217;s toolchain keeps getting more integrated, and each release moves the language further from its reputation as a difficult, specialist tool and closer to something engineering teams can simply rely on.</p><p>That maturity is part of what is changing the production calculus for engineering teams this year. <a href="https://it.linkedin.com/in/francesco-ciulla-roma/en">Francesco Ciulla</a>, author of <a href="https://www.packtpub.com/en-in/product/the-rust-programming-handbook-9781836208860">The Rust Programming Handbook</a> and head of developer relations at Zerops, has used both Rust and Go in production. His view on the Rust versus Go debate is neither dismissive of Go nor evangelistic about Rust.</p><p>Ciulla discussed how Rust and Go solve different backend problems, where Go still wins, where Rust&#8217;s flat latency and binary size arguments become genuinely decisive, and why his thinking on committing to Rust for a production backend has changed.</p><blockquote><p>Today&#8217;s expert insights are based on the broader conversation about Rust adoption we had with Ciulla. You can read our <a href="https://deepengineering.substack.com/p/issue-45-francesco-ciulla-building-production-systems-rust-without-rewrite">previous issue</a> or watch the full <a href="https://deepengineering.substack.com/p/try-rust-with-your-own-hands-and-eyes-francesco-ciulla">Q&amp;A here</a>.</p></blockquote><p>Let&#8217;s get started.</p><div><hr></div><p style="text-align: center;"><strong>Featured Newsletter: <a href="https://javatipsandtricks.substack.com/">Java Tips and Tricks </a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://javatipsandtricks.substack.com/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ow34!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png 424w, https://substackcdn.com/image/fetch/$s_!ow34!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png 848w, https://substackcdn.com/image/fetch/$s_!ow34!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png 1272w, https://substackcdn.com/image/fetch/$s_!ow34!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ow34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png" width="307" height="341.48802946593" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:604,&quot;width&quot;:543,&quot;resizeWidth&quot;:307,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://javatipsandtricks.substack.com/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ow34!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png 424w, https://substackcdn.com/image/fetch/$s_!ow34!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png 848w, https://substackcdn.com/image/fetch/$s_!ow34!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.png 1272w, https://substackcdn.com/image/fetch/$s_!ow34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7854fda9-0d61-4a3c-823c-dc8db51efe93_543x604.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Subscribe to Java Tips and Tricks on Substack for practical Java insights, modern Java features, software design discussions, and updates from the Java ecosystem.</p><p><strong>&#8594; <a href="https://javatipsandtricks.substack.com/">Subscribe to Java Tips and Tricks</a></strong></p><div><hr></div><p>Expert Insights</p><h2>Rust and Go Are Better Compared Service by Service</h2><p><em>by <a href="https://in.linkedin.com/in/s-jan">Saqib Jan</a> with <a href="https://it.linkedin.com/in/francesco-ciulla-roma/en">Francesco Ciulla</a></em></p><p>Most engineering teams debating Rust versus Go for their next backend service are usually trying to answer the question too early, assuming the decision starts with the language rather than the service. </p><p><a href="https://it.linkedin.com/in/francesco-ciulla-roma/en">Francesco Ciulla</a>, author of <a href="https://www.packtpub.com/en-in/product/the-rust-programming-handbook-9781836208860">The Rust Programming Handbook</a> and head of developer relations at <a href="https://zerops.io/">Zerops</a>, thinks that framing misses the point. The useful question is not whether Rust is better than Go, or whether Go is more practical than Rust. It is whether the specific service being built has constraints that make one language&#8217;s trade-offs more valuable than the other&#8217;s.</p><p>The distinction Ciulla draws is practical. Go still earns its place in cloud infrastructure, CLI tooling, hiring, and teams that need a service working quickly without introducing a new adoption burden. Rust, in his view, becomes much harder to ignore when a service is constrained by memory use, latency predictability, high-concurrency performance, or the need to remove whole classes of runtime failure from the system. That is why the Rust versus Go debate becomes less useful the longer it stays at the language level. The decision only starts to make sense when it moves down to the service level.</p><h3>Most teams are asking the wrong question</h3><p>Most engineers who have followed the Rust versus Go conversation online will have encountered it as a tribal argument, with advocates on both sides treating the choice as a matter of identity rather than engineering judgment. Ciulla rejects that framing, and part of what makes his view useful is that he is not arguing from a Rust-only position. He currently works with Go at Zerops, where the company&#8217;s CLI is written in Go, and he has run Rust services in production on his own projects.</p><p>&#8220;I would never say that Go is a bad programming language,&#8221; Ciulla says. &#8220;You can feel how powerful Rust is because we are talking about completely different scenarios and still Rust has something to say. But that does not make Go bad.&#8221;</p><p>The more useful framing, he argues, is to stop treating Rust versus Go as a general-purpose language comparison and start treating it as a service-level engineering decision. The question is not whether an organization should adopt Rust instead of Go. The question is whether a specific service in the system has properties where Rust&#8217;s trade-offs are worth paying for, or whether Go&#8217;s simplicity, ecosystem, and hiring advantages matter more.</p><p>That reframe changes the conversation because it moves the decision away from preference and toward evidence. Once the team is looking at the service rather than the language, the relevant questions become much more concrete. Is memory use a real constraint? Is tail latency a business problem? Does the service sit on a critical path? Does the team have anyone who can review Rust code well enough to put it into production safely? Without those questions, the debate quickly becomes ideology dressed up as architecture.</p><h3>Go wins on hiring, tooling, and the Docker ecosystem</h3><p>Ciulla is careful not to turn the comparison into an anti-Go argument. Go is a natural fit for CLI tools, cloud infrastructure tooling, and the Docker and Kubernetes ecosystem. Docker is written in Go and Kubernetes is built on Go. For teams building tools that live inside that ecosystem, Go is the default for reasons that have little to do with language preference and everything to do with integration, community, and the availability of patterns the team can learn from.</p><p>The hiring argument also runs in Go&#8217;s favor, and Ciulla thinks engineering leaders should be honest about it. &#8220;In terms of finding Go engineers, probably at the moment it is easier,&#8221; he notes, &#8220;because there are probably more of them.&#8221; For a company that needs to move quickly and cannot afford a long search for specialized Rust talent, that matters. Staffing is not separate from engineering judgment. It is one of the constraints that determines whether a technical choice can survive contact with production.</p><p>Go also has lower adoption friction in general-purpose backend contexts where the performance ceiling is not the binding constraint. If a team is building a service that needs to be working by the end of the week, deployed reliably, and understood by the next engineer who touches it, Go&#8217;s simplicity and the breadth of its ecosystem are real advantages. Ciulla makes the same point more generally when talking about technology choices under deadline pressure. &#8220;When you need something simple, and you&#8217;re familiar already with Java or JavaScript, why don&#8217;t you use it?&#8221; The same principle applies to Go for teams already operating in that ecosystem.</p><p>That matters because Rust adoption is not free. It requires a different mental model, a compiler that forces decisions earlier, and at least one person on the team who knows the language well enough to validate what is being shipped. For a service that does not need Rust&#8217;s performance profile, those costs may not be worth paying.</p><div class="callout-block" data-callout="true"><p>Join <strong>Francesco Ciulla</strong> to learn how to build production-ready AI applications with Rust, Claude and Codex. <em><a href="https://www.eventbrite.co.uk/e/build-production-ready-ai-applications-with-rust-claude-and-codex-tickets-1987053747248?aff=deepeng">Register here</a></em></p></div><h3>Rust wins on performance and it is not a close contest</h3><p>Where Ciulla becomes more direct is performance. On raw performance, he does not see much ambiguity. &#8220;Check the benchmarks yourself and send me the link where Go beats Rust,&#8221; he says. &#8220;Sometimes they are at the same level. In terms of pure performance, there is no story.&#8221;</p><p>That bluntness is useful, but the more important argument in his interview is not about benchmark wins. It is about latency predictability. Languages that rely on garbage collection, including Go, Java, and Node.js, can introduce pauses when the collector runs. An HTTP request that arrives during one of those pauses may experience higher latency than one that does not, even though the service logic is identical.</p><p>&#8220;By not having a garbage collector on the backend side, you basically have flat latency,&#8221; Ciulla explains. &#8220;You don&#8217;t rely on luck, or on the user not being the unlucky one. It&#8217;s a problem that is removed.&#8221;</p><p>For most web applications running at moderate scale, that distinction may not matter enough to justify a language change. Ciulla&#8217;s point is not that every API should be rewritten in Rust. His argument is that services with strict latency requirements, high concurrency, or service-level objectives tied to consistent tail latency should be evaluated differently from ordinary backend services. In those cases, the lack of a garbage collector is not an aesthetic language feature. It changes the runtime behavior the team has to reason about.</p><p>The resource efficiency argument is equally concrete. Ciulla describes running a Rust web server in production and observing roughly four megabytes of RAM in development and five megabytes in production. On a one-gigabyte droplet, that means many small Rust services can sit idle at once without creating the same memory pressure a heavier runtime might introduce. That is not a benchmark designed to win an online argument. It is an operational fact that changes what an infrastructure team has to provision, monitor, and pay for.</p><p>That is where Rust&#8217;s case becomes strongest. Not when the team wants a language that is fashionable, and not when someone wants to win the Rust versus Go debate, but when a specific service is expensive, latency-sensitive, memory-constrained, or sitting on a path where runtime predictability matters.</p><h3>Deployment changes the operational argument</h3><p>One of the more practical points Ciulla makes is that Rust changes the shape of the deployment artifact. When you run cargo build on a Rust project, you get an architecture-specific executable binary. A Windows machine produces a Windows executable. A Mac produces a Mac executable. A Linux machine produces a Linux executable. You can also cross-compile by changing the target architecture through the compiler, which lets a team produce a Linux binary from another environment when the workflow requires it.</p><p>Ciulla&#8217;s preferred production workflow is to build the Rust binary directly inside the Docker image build process. &#8220;My flow is that I prefer to build the Rust binary directly when I build the Docker image,&#8221; he explains, &#8220;so I have something which is just deployable everywhere, a Linux executable running in a Docker container.&#8221;</p><p>The appeal is straightforward. The team gets a lightweight binary compiled for the right architecture, packaged inside a portable container. &#8220;The dream for operations is having an executable inside a Docker container,&#8221; he says. &#8220;You get something which is lightweight and can run everywhere Docker is installed.&#8221;</p><p>That matters for teams already containerizing services, which is most teams building at meaningful production scale. A Rust binary inside a container keeps the deployment artifact small while preserving the operational consistency teams expect from Docker. The container still matters because real systems rarely deploy one service by hand. They orchestrate many services, restart them, replace them, and scale them across environments. As Ciulla puts it, &#8220;We are not in the 90s anymore.&#8221;</p><p>The argument is not that Rust removes the need for containers. It is that Rust and containers fit together cleanly. Rust gives the team a compact executable artifact. Docker gives the team a repeatable deployment boundary. Together, they reduce some of the runtime and packaging overhead that teams accept as normal in other ecosystems.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://deepengineering.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and support our work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>Rust is ready for more production backends</h3><p>The most interesting part of Ciulla&#8217;s position is that it has changed. Two years ago, he would not have committed to building a paid SaaS product with a Rust backend. A year ago, he was still hedging. In 2026, he removes the qualification entirely. &#8220;If I had a paid product, I would use Rust,&#8221; he says. &#8220;Let&#8217;s remove the probably.&#8221;</p><p>That shift is not based on general enthusiasm for the language. Ciulla describes himself as skeptical by default, and his advice throughout the interview is to try technologies directly rather than rely on what advocates or critics say online. His confidence comes from the maturity he now sees in the Rust backend ecosystem, especially around Axum, which he says he would now use in production if he were building a SaaS or paid product.</p><p>The surrounding toolchain also strengthens the case. Cargo handles dependency management, building, testing, and documentation in a single integrated workflow. There is no equivalent of the npm versus yarn versus pnpm decision that JavaScript teams often navigate before they even get to the application itself. Running tests is cargo test. The integration is not a small ergonomic convenience. For teams that have spent years carrying build-system complexity, dependency churn, and fragmented tooling across projects, a coherent toolchain reduces the amount of process overhead attached to the language.</p><p>Ciulla sees that as part of why Rust&#8217;s reputation can lag behind its current reality. The language still has a learning curve, especially around ownership, lifetimes, and the borrow checker, but the ecosystem around the language has become more integrated rather than more fragmented. For experienced developers willing to learn Rust on its own terms, that changes the adoption equation.</p><h3>Start the decision with the service</h3><p>Ciulla&#8217;s adoption advice was consistent across our interview. Do not rewrite everything in Rust. Do not introduce it because the internet says it is the future. Do not make the language the strategy. Start with one service.</p><p>The right starting point, in his view, is a critical service with a real performance, latency, or memory problem. It might be a login service. It might be an API under heavy load. It might be a component that slows the rest of the system down. The point is to choose the service where Rust&#8217;s advantages are tied to an actual constraint rather than a general preference.</p><p>That is also where organizational readiness becomes unavoidable. If a team has no one who understands Rust well enough to review AI-generated code or validate a production deployment, the language can become a liability. &#8220;Who decides if the AI-generated Rust service is okay to put in production?&#8221; Ciulla asks. &#8220;You need the validation of an expert.&#8221;</p><p>That expert does not make Rust special. It makes Rust normal. Every new technology needs someone inside the organization who can tell the difference between code that compiles and code that should be shipped. Without that person, the team is not adopting a better tool. It is creating a new category of production risk.</p><p>For teams that do have the right service and the right internal expertise, Ciulla thinks the timing has changed. Rust is no longer only a systems language that backend teams admire from a distance. It is becoming a practical choice for the services where its properties matter most. The mistake is treating that as a universal recommendation. The opportunity is knowing exactly where it applies.</p><p>The Rust versus Go decision, then, is not really a Rust versus Go decision at all. It is a question about constraints. If the service needs simplicity, staffing depth, cloud tooling familiarity, and quick delivery, Go may be the better engineering choice. If the service needs predictable latency, low memory overhead, strong runtime control, and a deployment artifact that maps cleanly to containers, Rust deserves serious consideration. The senior engineering move is not to pick a side. It is to know which job each language is being asked to do.</p><div class="pullquote"><p><strong><a href="https://www.packtpub.com/en-in/product/the-rust-programming-handbook-9781836208860">Go deeper with Francesco Ciulla&#8217;s book</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.packtpub.com/en-in/product/the-rust-programming-handbook-9781836208860" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DDAG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 424w, https://substackcdn.com/image/fetch/$s_!DDAG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 848w, https://substackcdn.com/image/fetch/$s_!DDAG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 1272w, https://substackcdn.com/image/fetch/$s_!DDAG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DDAG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775" width="338" height="416.92857142857144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1796,&quot;width&quot;:1456,&quot;resizeWidth&quot;:338,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Rust Programming Handbook&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.packtpub.com/en-in/product/the-rust-programming-handbook-9781836208860&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Rust Programming Handbook" title="The Rust Programming Handbook" srcset="https://substackcdn.com/image/fetch/$s_!DDAG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 424w, https://substackcdn.com/image/fetch/$s_!DDAG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 848w, https://substackcdn.com/image/fetch/$s_!DDAG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 1272w, https://substackcdn.com/image/fetch/$s_!DDAG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe9c404-fa21-4711-886a-4f5269f7201e_2250x2775 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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.packtpub.com/en-in/product/the-rust-programming-handbook-9781836208860">The Rust Programming Handbook: An End-to-End Guide to Mastering Rust Fundamentals</a>,</strong> a practical guide to Rust&#8217;s ownership model, memory safety guarantees, concurrency patterns, trait system, and real-world use in systems and web programming.</p><p><strong><a href="https://www.packtpub.com/en-in/product/the-rust-programming-handbook-9781836208860">Explore the book here</a></strong></p></div><h3>In case you missed </h3><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;288199d3-4b2b-4952-b759-26a682e891e8&quot;,&quot;caption&quot;:&quot;View the latest HubSpot Developer Platform updates in Spring Spotlight&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Deep Engineering #45: Francesco Ciulla on Building Production Systems in Rust Without the Expensive Rewrite &quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:11407185,&quot;name&quot;:&quot;Francesco Ciulla&quot;,&quot;bio&quot;:&quot;Developer Advocate at @dailydotdev\n&#183; Docker Captain &#128051;\n&#183; Public Speaker\n&#183; Building a 1 Million Community 22%&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8c30606-10ba-4c87-a89b-af2f9dc27a01_400x400.jpeg&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://francescociulla.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://francescociulla.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Francesco's Newsletter&quot;,&quot;primaryPublicationId&quot;:1410908}],&quot;post_date&quot;:&quot;2026-04-30T16:32:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e29b888-c64d-4029-96f3-08e45522d077_656x375.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/issue-45-francesco-ciulla-building-production-systems-rust-without-rewrite&quot;,&quot;section_name&quot;:&quot;Newsletter Issues&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:195995087,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;10888e2c-73cc-4040-85d1-da5241e78d9f&quot;,&quot;caption&quot;:&quot;Francesco joined Deep Engineering Live to talk about Rust adoption strategy, organizational challenges, concurrency, deployment workflows, and where the language is headed in 2026.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Try Rust With Your Own Hands and Eyes with Francesco Ciulla&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:11407185,&quot;name&quot;:&quot;Francesco Ciulla&quot;,&quot;bio&quot;:&quot;Developer Advocate at @dailydotdev\n&#183; Docker Captain &#128051;\n&#183; Public Speaker\n&#183; Building a 1 Million Community 22%&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8c30606-10ba-4c87-a89b-af2f9dc27a01_400x400.jpeg&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://francescociulla.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://francescociulla.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Francesco's Newsletter&quot;,&quot;primaryPublicationId&quot;:1410908}],&quot;post_date&quot;:&quot;2026-06-11T10:33:12.044Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7c13c92-97ba-4fd9-949b-7a3eed180812_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/try-rust-with-your-own-hands-and-eyes-francesco-ciulla&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:201573753,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128736;&#65039; Tool of the Week</h2><p><strong><a href="https://github.com/nextest-rs/nextest">cargo-nextest</a></strong> &#8212; a next-generation test runner for Rust that replaces cargo test with faster, more reliable test execution for production Rust projects.</p><p><strong>Highlights</strong></p><ul><li><p>Runs each test in its own process, surfacing hidden state sharing and enabling better parallelism than cargo test&#8217;s single-process model.</p></li><li><p>Retries flaky tests automatically, reducing noise in CI pipelines without manual intervention.</p></li><li><p>Outputs machine-readable JUnit XML, compatible with most CI systems out of the box.</p></li><li><p>Version 0.9.137 added a JSON schema for user configuration, standardizing nextest settings across a workspace.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/nextest-rs/nextest&quot;,&quot;text&quot;:&quot;Learn more about cargo-nextest&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/nextest-rs/nextest"><span>Learn more about cargo-nextest</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://docs.docker.com/desktop/release-notes/">Docker Desktop 4.77.0 released</a> - Marketplace extensions now install by pinned manifest digest, reducing tag-mutation risk after publication.</p></li><li><p><a href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/">Rust 1.96.0 released</a> - New Copy-compatible range types, assert_matches! macro stabilization, and two Cargo security fixes for third-party registry users.</p></li><li><p><a href="https://go.dev/doc/devel/release#go1.26.4">Go 1.26.4 released</a> - Security fixes ship for crypto/x509, mime, and net/textproto alongside compiler and runtime bug fixes.</p></li><li><p><a href="https://docs.docker.com/desktop/release-notes/">Docker Desktop security update</a> - Two container-to-host code execution CVEs in the Model Runner inference backend patched, with a Linux kernel backport fixing a container privilege escalation.</p></li><li><p><a href="https://github.com/rust-lang/rust-analyzer/releases">rust-analyzer update</a> - New diagnostics, predicate evaluation, and completion fixes improve daily Rust IDE feedback loops.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Keep building,</p><p>Saqib Jan</p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company wants to reach senior developers, software engineers, and technical decision-makers, <a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">speak to us about partnering</a> with Deep Engineering.</em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #50: Brian Allbee on Building Better Python Software]]></title><description><![CDATA[Brian Allbee on why most Python developers are optimising for correctness when they should be optimising for sustainability, and what that shift actually looks like in practice.]]></description><link>https://deepengineering.net/p/issue50-building-better-python-software-brian-allbee</link><guid isPermaLink="false">https://deepengineering.net/p/issue50-building-better-python-software-brian-allbee</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 04 Jun 2026 15:11:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c2a26cd4-2f69-448c-b36a-d4cbb68058ad_690x310.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng">Claude Code for Software Engineering</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5k27!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!5k27!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png" width="900" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!5k27!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!5k27!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Join this interactive workshop to learn how to turn Claude Code from a session-by-session assistant into a repeatable engineering system, using structured context, reusable skills, scoped rules, hooks, and guardrails that work across real codebases and team workflows.</p><p>&#128467;&#65039; Friday, June 20 &#183; 10:30 AM EDT onwards</p><p style="text-align: center;"> Use code <strong>DEEPENG50</strong> for 50% off.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>50th</strong> issue of Deep Engineering!</p><p><a href="https://www.anthropic.com/news/expanding-project-glasswing">Anthropic expanded Project Glasswing on June 2</a>, extending Claude Mythos Preview to approximately 150 new organizations for codebase vulnerability scanning, after initial partners found more than 10,000 high-severity security flaws in production code. </p><p>AI can now find vulnerabilities in production systems that were presumably tested, reviewed, and shipped by engineering teams. The gap between code that compiles and code that holds up under real-world pressure is no longer theoretical.</p><p>That gap also has a cause. <a href="https://www.linkedin.com/in/brianallbee">Brian Allbee</a>, Staff Software Engineer at Cleerly and author of <a href="https://www.packtpub.com/en-us/product/hands-on-software-engineering-with-python-9781835888018">Hands-On Software Engineering with Python</a> (Packt), argues that programming focuses on the correctness of the code itself, while software engineering expands that focus to sustainability as change occurs. Too many developers optimize for code that works today, without enough attention to whether that code can be changed, tested, maintained, and handed off tomorrow.</p><blockquote><p>Allbee joined <a href="https://deepengineering.substack.com/p/hands-on-software-engineering-python-brian-allbee">Deep Engineering Live</a> to discuss what closing that gap looks like in practice. Today&#8217;s expert insights are based on that conversation, and you can read or watch the full <a href="https://deepengineering.substack.com/p/hands-on-software-engineering-python-brian-allbee">Q&amp;A here</a>.</p></blockquote><p>Let&#8217;s get started.</p><div><hr></div><p style="text-align: center;"><strong>Featured: <a href="http://daily.dev/">All the dev content that matters, in one personalized feed</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="http://daily.dev/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WB1m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png 424w, https://substackcdn.com/image/fetch/$s_!WB1m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png 848w, https://substackcdn.com/image/fetch/$s_!WB1m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png 1272w, https://substackcdn.com/image/fetch/$s_!WB1m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WB1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png" width="466" height="291.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1280,&quot;resizeWidth&quot;:466,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;http://daily.dev/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!WB1m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png 424w, https://substackcdn.com/image/fetch/$s_!WB1m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png 848w, https://substackcdn.com/image/fetch/$s_!WB1m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.png 1272w, https://substackcdn.com/image/fetch/$s_!WB1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7b61d3-2791-4eb0-9529-449c16315ca3_1280x800.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="http://daily.dev/">daily.dev</a> is a professional network for developers, built around a personalized feed of the best content from across the dev ecosystem. Millions of developers use it to stay current with their stack, discover new tools and frameworks, and connect with a global community that shares what they&#8217;re learning. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://daily.dev/&quot;,&quot;text&quot;:&quot;Join for free at daily.dev&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="http://daily.dev/"><span>Join for free at daily.dev</span></a></p><div><hr></div><p>Expert Insights</p><h2>Building Better Python Software Is Not About Writing Better Code</h2><p><em>by <a href="https://in.linkedin.com/in/s-jan">Saqib Jan</a> with <a href="https://www.linkedin.com/in/brianallbee/">Brian Allbee</a></em></p><p>Most Python developers measure their work by whether the code runs, assuming the job is done once the function returns the right value, the tests pass, and the build is green. <a href="https://www.linkedin.com/in/brianallbee/">Brian Allbee</a>, Staff Software Engineer at Cleerly and author of <em><a href="https://www.packtpub.com/en-us/product/hands-on-software-engineering-with-python-9781835888018">Hands-On Software Engineering with Python</a></em> (Packt), thinks that measure is correct but incomplete, noting that the gap between correct code and sustainable software is where most Python developers stop growing without realizing it.</p><p>The distinction Allbee draws is precise. Programming, he explained in our live interview, is focused on &#8220;the correctness of the code itself,&#8221; whereas software engineering &#8220;starts expanding out into more of a focus on sustainability as change occurs.&#8221; That shift in focus sounds subtle, but it changes almost every decision an engineer makes, from how they structure a module and handle a growing codebase to how they talk about technical debt with the people who control the roadmap.</p><h2>The discipline that architecture cannot replace</h2><p>The instinct when a Python codebase starts to grow is to reach for architecture by breaking things into services, introducing abstractions, and redesigning the data model. Allbee&#8217;s experience points in a different direction. &#8220;I think most of the paths to success in that context, at least the ones that I can think of that I&#8217;ve seen, don&#8217;t really start with the architecture, but with discipline behind the process,&#8221; he shares.</p><p>The discipline he describes is specific and unglamorous, emphasizing the need to keep things as simple as possible while wrapping repeated processes into functions or methods, stressing &#8220;that teams should agree on documentation standards and stick to them until something unexpected comes up, and that developers must write code with testability in mind from the beginning, even when there is no immediate requirement for tests.&#8221; These practices do not require a new framework or a redesign because they rely on consistency, which is often much harder to achieve than architecture.</p><p>The reason discipline comes before architecture is that architecture without discipline produces complexity without clarity. Allbee, in <a href="https://deepengineering.substack.com/p/hands-on-software-engineering-python-brian-allbee">our interview</a>, shared a vivid example with the audience from his own experience regarding a system he encountered that had been written in Python by an engineer who came from a C# background, resulting in an architecture where every function and every class had its own isolated module. The functional layers of the system were seven or eight deep depending on the context, creating a project that was &#8220;ridiculously huge,&#8221; he recalls, and &#8220;way more complicated than it needed to be, and it was hard to manage... hard to maintain.&#8221;</p><p>The problem was not the language or incompetence, but rather a mental model built for a different environment being applied wholesale to Python. Allbee points to a concept from the book <em><a href="https://www.speakingsoftwareshow.com/episodes/code-that-fits-in-your-head-1">Code That Fits In Your Head</a></em><a href="https://www.speakingsoftwareshow.com/episodes/code-that-fits-in-your-head-1"> </a>to explain why this matters, because humans can only keep &#8220;five to seven bits of information in the front of their memory at a given point in time.&#8221; A system with seven layers of depth saturates that capacity before a developer has even started reasoning about what any individual layer does. </p><p>Allbee argues that developers must &#8220;keep it simple&#8221; and &#8220;collapse things down to the point where you don&#8217;t have to have 19 different classes and 15 different instances of, you know, all these other classes to deal with something that really should be capable of being managed as a single function.&#8221;</p><h2>Technical debt is a product decision, not a technical one</h2><p>One of the more practically useful things Allbee explains about managing an evolving Python system is that technical debt is not primarily a technical problem. &#8220;Technical debt is one of those product-level priorities,&#8221; he reasons, adding that &#8220;whoever&#8217;s making the prioritization decisions is going to be in control of when those get tackled, if they get tackled.&#8221;</p><p>That framing shifts where an engineer should focus their energy when technical debt is accumulating, meaning the work is not just to identify the debt but to communicate its consequences clearly enough that the people controlling the roadmap can make an informed decision. &#8220;Making sure that you can communicate effectively, here&#8217;s what the impact of this technical debt is to your product-level people or whoever&#8217;s making those decisions, is gonna be a key thing,&#8221; he adds. That requires being able to sit down and say clearly that if the team does not deal with a bug, it is going to lead to cascading issues, and the longer they put it off, the more likely it is to lead to a really significant problem that will take even longer to get past.</p><p>The teams that handle technical debt well, in Allbee&#8217;s experience, are the ones that treat it as a first-class concern rather than an emergency. The difference between those two approaches is almost entirely about communication, where debt that gets communicated early and framed in terms of product risk gets prioritized, while debt that surfaces as a crisis gets managed badly.</p><h2>Testing is a design decision</h2><p>The most common framing of testing in Python projects is that it is something you add to code that already exists, but Allbee&#8217;s position is that testability is a property of the code itself, meaning that designing for it from the beginning changes the shape of the code in ways that make it easier to understand, change, and hand off to other engineers.</p><p>His testing approach for his own projects is a method that &#8220;exercises valid and invalid inputs for all of the parameters of every callable in the project.&#8221; He shares, &#8220;You combine that with judicious monitoring of missing lines and a code coverage report, that has served really well for me in making sure that the targets of those tests are being both thoroughly and realistically exercised.&#8221; The more important principle underneath the practice is that tests are most valuable when they reflect how the system is actually used, not just how the code is structured.</p><p>In team contexts, Allbee advocates for explicit agreement about how tests are organized and what tools are involved. &#8220;I&#8217;ve seen what happens when different engineers who aren&#8217;t communicating with each other each go their own way,&#8221; he points out, noting that &#8220;the tests that result, even if they&#8217;re rigorous and well thought out, are oftentimes difficult to follow across different test modules.&#8221; The investment in agreement upfront produces a test suite that the whole team can confidently read, maintain, and extend.</p><p>On AI-generated code in testing contexts, Allbee recommends defining a test suite that only humans are permitted to modify, making it as rigorous and complete as possible, and then allowing AI to generate implementation code that must pass that suite. He explains the boundary by stating that you can tell the AI to &#8220;write all the code you want,&#8221; but it &#8220;must pass this test suite&#8221; and it does &#8220;not get to modify that test suite.&#8221; That boundary, he reasons, provides about as much coverage as can realistically be achieved when AI is involved in production code.</p><div class="callout-block" data-callout="true"><p><strong>Bring Claude Code into real engineering workflows, not just isolated coding sessions. <a href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng2">Register here.</a></strong></p></div><h2>Concurrency is a design problem first</h2><p>Python&#8217;s performance limitations and its Global Interpreter Lock have been a recurring concern for engineers building high-throughput systems, and CPython&#8217;s free-threaded build has stirred interest in what Python might make possible beyond the GIL. Allbee is measured about expectations, highlighting that most Python code is IO-bound rather than CPU-bound, which is where the GIL has its most significant impact, though he is hopeful that the free-threaded model will open doors for more CPU-bound work to be written in Python.</p><p>The framing that matters most to many developers is not about the runtime at all. &#8220;Concurrency is a design problem before it&#8217;s a runtime problem,&#8221; he underscores, adding that having better concurrency support in the language really does not eliminate the need to understand how your processes are going to contend against each other, how to deal with data ownership at the scope of the code, or how failures can happen. His practical advice on concurrency reflects this directly by recommending that developers add it sparingly and only when there is an actual benefit that outweighs the overhead of handling errors, data contention, and coordination costs. &#8220;Optimize your clarity and correctness first,&#8221; he recommends, and &#8220;really only reach for concurrency when you understand where the time is actually being spent.&#8221;</p><h2>Cloud readiness is designing for volatility</h2><p>The question of what makes a Python application cloud-ready is one Allbee addresses in terms of design principles rather than tools or platforms. The containerized application is cloud-ready, he acknowledges, but so are function-as-a-service constructs like AWS Lambda functions, proving that the specific mechanism matters less than the underlying design orientation.</p><p>&#8220;The key concept that ties almost every cloud-resident system together, containerization, stateless design, any of those, is that they are inherently disposable,&#8221; he explains. Because a container can be killed at any time, a Lambda invocation could be terminated before it reaches a successful completion, and Kubernetes pods restarting are probably routine events, designing for that reality means building processes around the expectation that the hardware can disappear at any point in time.</p><p>Statelessness in that context is about making failure cheap. There is no state to manage and no need to write code to reacquire that state, meaning a process simply ends and is restarted, making recovery from a failure as simple as starting a new instance. &#8220;Statelessness and containerization matter more because they make failure cheap and recovery routine than for any other purpose or reason,&#8221; he says, arguing that this principle should sit near the top of the list of factors shaping design decisions for any system built to run in a cloud environment.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://deepengineering.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and support our work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>What senior engineers actually do</h2><p>The question of what separates an engineer ready for senior work from one who is not comes back to the same systems-oriented thinking that distinguishes engineering from programming, where the indicator is not technical mastery but curiosity about the system rather than just the isolated function.</p><p>&#8220;If they started demonstrating that they&#8217;re concerned with more than just is the code doing what it&#8217;s supposed to do,&#8221; he explains, &#8220;if there&#8217;s a certain amount of curiosity, why are we doing it this way, do they recognize the trade-offs, those are the things that I think start really indicating somebody is actually ready to go beyond just I&#8217;ve written this function, and it&#8217;s done, and it&#8217;s tested, and it works. Done. I&#8217;m finished.&#8221;</p><p>The senior engineers Allbee has tried to emulate and seen do their best work are not defined by the code they write but by the systems they shape and the teams they are enabling. That involves asking questions that guide less senior engineers to ask those same questions on their own, such as why the team is going down a certain road, what the benefits are, and what trade-offs exist. &#8220;There are always trade-offs,&#8221; he notes, emphasizing, &#8220;Always, always, always trade-offs.&#8221;</p><p>The advice he offers to Python developers trying to grow in an AI-accelerated world collapses to three core principles, which are to &#8220;think in systems,&#8221; to &#8220;design for change,&#8221; and to &#8220;optimize for your team.&#8221; If you come away thinking differently about why you write the code that you are writing and not just how, then that is the shift that matters. Since the language, tools, and expectations placed on Python engineers will inevitably keep growing, the engineers who hold up under those pressures are the ones who stopped measuring their work by whether the code runs and started asking what it will take for the system to survive.</p><div class="pullquote"><p><strong><a href="https://www.packtpub.com/en-us/product/hands-on-software-engineering-with-python-9781835888018">Go deeper with Brian Allbee&#8217;s book</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.packtpub.com/en-us/product/hands-on-software-engineering-with-python-9781835888018" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8VAS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 424w, https://substackcdn.com/image/fetch/$s_!8VAS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 848w, https://substackcdn.com/image/fetch/$s_!8VAS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 1272w, https://substackcdn.com/image/fetch/$s_!8VAS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8VAS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775" width="309" height="381.1565934065934" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/caa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1796,&quot;width&quot;:1456,&quot;resizeWidth&quot;:309,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Hands-On Software Engineering with Python&quot;,&quot;title&quot;:&quot;Hands-On Software Engineering with Python&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.packtpub.com/en-us/product/hands-on-software-engineering-with-python-9781835888018&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hands-On Software Engineering with Python" title="Hands-On Software Engineering with Python" srcset="https://substackcdn.com/image/fetch/$s_!8VAS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 424w, https://substackcdn.com/image/fetch/$s_!8VAS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 848w, https://substackcdn.com/image/fetch/$s_!8VAS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 1272w, https://substackcdn.com/image/fetch/$s_!8VAS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa7bb37-8ccf-4fd6-9057-c6a4f217af4c_2250x2775 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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Brian Allbee</strong> explores these ideas in more depth in <em>Hands-On Software Engineering with Python</em>, a practical guide to building Python systems that are easier to test, maintain, evolve, and hand off.</p><p><strong><a href="https://www.packtpub.com/en-us/product/hands-on-software-engineering-with-python-9781835888018">Explore the book here</a></strong></p></div><h3>In case you missed </h3><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f18d1d6b-4915-4374-94c7-b25bdf20dd98&quot;,&quot;caption&quot;:&quot;Brian Allbee joined Deep Engineering Live to talk about what separates engineering from programming, how to scale and refactor Python systems responsibly, and what it actually takes to grow into senior and staff-level roles.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Hands-On Software Engineering with Python with Brian Allbee&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-06-03T12:30:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4a795b5-9037-483c-9276-02a30b0de712_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/hands-on-software-engineering-python-brian-allbee&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:200469642,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div><hr></div><h2>&#128736;&#65039; Tool of the Week</h2><p><strong><a href="https://github.com/astral-sh/ruff">Ruff</a></strong> - fast Python linting and formatting for teams trying to keep quality gates enforceable without slowing every commit.</p><p><strong>Highlights</strong></p><ul><li><p>Consolidates linting, import sorting, upgrade checks, and formatting behind one configuration surface.</p></li><li><p>Runs fast enough for pre-commit and CI workflows, which makes quality checks more likely to stay enabled.</p></li><li><p>Supports monorepos and hierarchical configuration, helping larger teams avoid one-off project rules.</p></li><li><p>Already used across major Python projects, making it a practical default rather than a niche experiment.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/astral-sh/ruff&quot;,&quot;text&quot;:&quot;Learn more about Ruff&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/astral-sh/ruff"><span>Learn more about Ruff</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://github.blog/changelog/2026-06-02-copilot-sdk-is-now-generally-available/">Copilot SDK is now generally available</a> - GitHub made Copilot SDK stable across six languages, letting teams embed agent workflows into internal tools.</p></li><li><p><a href="https://www.anthropic.com/news/expanding-project-glasswing">Anthropic expands Project Glasswing</a> - Project Glasswing now extends to 150 organizations, shifting AI vulnerability discovery toward coordinated patching capacity.</p></li><li><p><a href="https://pypi.org/project/pip/">Python pip 26.1.2</a> - Pip 26.1.2 shipped with Trusted Publishing attestations, tightening provenance for standard Python installation workflows across teams.</p></li><li><p><a href="https://docs.astral.sh/uv/guides/integration/gitlab/">Using uv in GitLab CI/CD</a> - Astral added GitLab CI guidance for uv images and cache pruning, simplifying reproducible Python pipelines outside GitHub.</p></li><li><p><a href="https://pypi.org/project/pyright/">Pyright 1.1.410</a> - Pyright 1.1.410 refreshed the Python wrapper package, keeping CLI and editor type checks aligned automatically.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Keep building,</p><p>Saqib Jan</p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering Specials: Enterprise AI has an API problem]]></title><description><![CDATA[The next enterprise AI bottleneck is not model capability. It is whether agents can discover, understand, and safely use the systems they need to act on]]></description><link>https://deepengineering.net/p/enterprise-ai-has-an-api-problem</link><guid isPermaLink="false">https://deepengineering.net/p/enterprise-ai-has-an-api-problem</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Tue, 02 Jun 2026 16:16:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d09c63a2-7c9f-43b5-ad5f-8625b8ed2dca_690x310.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you have 30,000 APIs, you probably have 300,000 endpoints across your organization. While that sounds like a problem of scale, it is actually one of design. </p><p>With agents discovering and calling APIs at runtime rather than developers hardcoding them at build time, that design problem has become one of the most urgent infrastructure questions in enterprise engineering.</p><p><em>This month&#8217;s special issue digs into how APIs built for developers need to become discoverable, understandable, governed, and safe runtime capabilities for agents, with commentary from <a href="https://ch.linkedin.com/in/erikwilde">Erik Wilde</a>, Head of Enterprise Strategy at Jentic; <a href="https://www.linkedin.com/in/nandita-giri">Nandita Giri</a>, Senior Software Engineer at Microsoft; <a href="https://www.linkedin.com/in/swarnendurohan-gupta">Rohan Gupta</a>, Principal Product Manager at Harness; and <a href="https://www.linkedin.com/in/mayankbhola">Mayank Bhola</a>, Co-Founder and Head of Products at TestMu AI.</em></p><p>Let&#8217;s get started.</p><div><hr></div><p><strong>Special issue &#8212; June 2026</strong></p><h2>Your APIs were built for developers, not agents</h2><div class="pullquote"><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.linkedin.com/in/erikwilde/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UR3A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UR3A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UR3A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UR3A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UR3A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg" width="266" height="266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:266,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Erik Wilde (@dret) / Posts / X&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.linkedin.com/in/erikwilde/&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Erik Wilde (@dret) / Posts / X" title="Erik Wilde (@dret) / Posts / X" srcset="https://substackcdn.com/image/fetch/$s_!UR3A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UR3A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UR3A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UR3A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde33cbd7-d094-4ae1-adb8-fbd6e9427d91_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>&#8220;You don&#8217;t just look for APIs when you&#8217;re writing an app. You kind of look for APIs every time you solve a problem.&#8221; &#8212; <a href="https://ch.linkedin.com/in/erikwilde">Erik Wilde</a>, Head of Enterprise Strategy at Jentic and OpenAPI Ambassador</p></div><p>Most large enterprises have no idea how many APIs they have. Ask them and the honest answer is usually somewhere between a guess and a shrug. What they do know is that the number is large, the endpoints are larger, and the documentation is somewhere between incomplete and missing. For years that was manageable because the people consuming those APIs could compensate. They had context, experience, and enough judgment to work around the gaps in a poorly written spec or an ambiguous parameter name.</p><p>For the better part of two decades, engineering teams designed APIs for a specific kind of consumer, a developer sitting at a keyboard, reading documentation, and making deliberate decisions about which endpoints to call and in what order. That consumer had context, experience, and the judgment to fill in the gaps that a poorly written spec inevitably left open. The API did not need to be perfect because the developer compensated for its imperfections at design time, before a single line of integration code was written.</p><p>That assumption breaks down when the consumer is an agent, says <a href="https://ch.linkedin.com/in/erikwilde">Erik Wilde</a>, Head of Enterprise Strategy at <a href="https://jentic.com/">Jentic</a> and OpenAPI Ambassador. Agents do not read between the lines, compensate for ambiguous parameter names, or infer the intent behind a generic error response. They act on what the contract says, at runtime, every time they need to solve a problem, and the gap between what most enterprise APIs offer and what agents actually need is where many AI projects begin to fail before they deliver measurable value.</p><p><a href="https://cdn.sanity.io/files/4zrzovbb/website/cd77281ebc251e6b860543d8943ede8d06c4ef50.pdf">Anthropic&#8217;s 2026 State of AI Agents Report</a> found that 46% of engineering teams cite integration with existing systems as their primary challenge when deploying agents, placing it above model capability, prompt quality, and every other factor on the list. The bottleneck is infrastructure, and that infrastructure depends on APIs that were never designed for this kind of consumer.</p><div><hr></div><p><strong>Masterclass:</strong> <strong><a href="https://www.eventbrite.co.uk/e/building-ai-ready-apis-with-agent-skills-tickets-1990383757398?aff=deepeng">Building AI-Ready APIs with Agent Skills</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/building-ai-ready-apis-with-agent-skills-tickets-1990383757398?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nAr1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nAr1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nAr1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nAr1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nAr1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg" width="800" height="267" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/building-ai-ready-apis-with-agent-skills-tickets-1990383757398?aff=deepeng&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!nAr1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nAr1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nAr1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nAr1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77512a7b-9c4e-4e42-b1e0-1c12265d132b_800x267.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Join <strong>OpenAPI Ambassadors</strong> <a href="https://ch.linkedin.com/in/erikwilde">Erik Wilde</a> and <a href="https://ie.linkedin.com/in/frank-kilcommins">Frank Kilcommins</a> for a hands-on masterclass on building AI-ready APIs with agent skills, covering OpenAPI, Overlay, Arazzo, semantic discovery, deterministic workflows, and governance guardrails for agent-driven integrations. </p><p>&#128467;&#65039; July 1, 2026 &#183; 10:30 AM &#8211; 1:30 PM ET &#183; Online</p><p style="text-align: center;">Use code <strong>DEEPENG50</strong> for 50% off.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/building-ai-ready-apis-with-agent-skills-tickets-1990383757398?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/building-ai-ready-apis-with-agent-skills-tickets-1990383757398?aff=deepeng"><span>Register here</span></a></p><div><hr></div><h2>Agents discover APIs at runtime, developers do not</h2><p><a href="https://deepengineering.substack.com/p/building-agent-ready-apis-in-production">In our live interview</a>, Wilde gave one of the clearest framings for how agent consumption differs from developer consumption. Developers search for APIs when building an application, make a decision, and hardcode the integration so it stays consistent for the lifetime of the application. Agents search for APIs at runtime, every time they encounter a problem they need to solve, against a catalog that may contain hundreds of thousands of options across a large enterprise.</p><p>That changes the API problem from documentation quality to runtime selection. The consumer is no longer a skilled person who can fill in the gaps of a poorly written spec. It is a machine that acts on exactly what the contract says, nothing more and nothing less, and it does so without the accumulated context that a developer brings to the integration process.</p><p>Wilde illustrated the scale of this problem by sharing a recent experience with a car manufacturer operating roughly 50,000 APIs and 500,000 endpoints across the organization. The point is not that this number is exceptional. For a large enterprise with decades of accumulated systems and services, it is closer to the normal condition than most teams would like to admit. What changes with agents is the cost of that normal condition. When the consumer needs to find the right capability at runtime, the selection problem alone can make the API landscape effectively unusable without a serious restructuring of how capabilities are described, organized, and exposed.</p><h2>Agents cannot compensate for spec drift</h2><div class="pullquote"><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.linkedin.com/in/nandita-giri/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9qx9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9qx9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9qx9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9qx9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9qx9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg" width="266" height="266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:768,&quot;resizeWidth&quot;:266,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Profile image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.linkedin.com/in/nandita-giri/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Profile image" title="Profile image" srcset="https://substackcdn.com/image/fetch/$s_!9qx9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9qx9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9qx9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9qx9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648dfec6-6b09-4770-990c-8670faeb30ec_768x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>&#8220;Think of the API as a contract with a very literal, very curious machine.&#8221; &#8212; <a href="https://www.linkedin.com/in/nandita-giri/">Nandita Giri</a>, Senior Software Engineer at Microsoft</p></div><p><a href="https://www.linkedin.com/in/nandita-giri/">Nandita Giri</a>, Senior Software Engineer at Microsoft with prior engineering experience at Meta and Amazon, works across agentic AI and automation, and the pattern she observes across organizations working to become AI-ready is consistent and predictable. Teams invest in producing a good OpenAPI specification at launch, treat it as a first-class deliverable at the time of release, and then watch the specification and the actual API behavior silently diverge over the following months as the code evolves faster than the documentation does.</p><p>For developer-facing APIs, this drift is a manageable nuisance because developers notice the discrepancy, ask questions in Teams, Slack or a GitHub issue, and someone eventually updates the documentation before the next consumer runs into the same problem. But for agent-facing APIs, spec drift is not a nuisance. It is a silent failure mode that is exceptionally difficult to trace because agents have no mechanism for noticing the discrepancy between what the spec says and how the API actually behaves. They act on what the spec says, encounter failures they cannot interpret without the surrounding context that a developer would have, and either produce incorrect results or abandon the task entirely without surfacing a meaningful error to the system that called them.</p><p>The only way to stop that drift from compounding, Giri argues, is to treat the specification as a first-class part of the release process on every change, with CI pipelines that validate spec fidelity against actual runtime behavior before deployment proceeds, not as a quarterly audit task but as a gate that blocks release when the spec and the actual behavior have diverged.</p><p>Giri is equally specific about what good specifications actually require for agent consumption, and her examples are concrete enough to apply immediately. A field called status that returns values 1, 2, and 3 is useless to an agent unless the spec also documents that 1 means New, 2 means In Progress, and 3 means Completed, because the agent has no way to infer that mapping from the field name or the values themselves. An endpoint that documents only that it returns a 400 error for bad input, without specifying which input combinations trigger that response, leaves an agent unable to prevalidate its requests or recover gracefully when the error occurs. A rate limit that appears only in external documentation and not in the spec itself is invisible to any agent that has not been specifically trained on that external documentation. These are not edge cases that organizations can deprioritize. They are the normal state of most enterprise API specifications, and they are a primary reason why agents fail in ways that produce poor results without surfacing a clear explanation of what went wrong.</p><p>The same distinction applies on the API producer side. Standard linting tools check structure, including whether a description field exists, whether it meets a minimum length, and whether required parameters are present. That structural check is genuinely useful as a first line of defense, but it cannot evaluate whether a description is written in a way that helps an agent understand what the operation is actually for.</p><p>A field that passes every linting rule can still be useless to an agent if it describes what the endpoint does technically without explaining the intent a consumer would bring to it. Descriptions need to represent intent, including what somebody would use the operation for, what constraints apply, and how the agent should reason about the result. The gap between a description that passes a linting check and a description that an agent can act on reliably is the gap that most teams are not yet closing, and closing it requires evaluation mechanisms that go beyond pattern matching on the specification itself.</p><h2>Cross-service inconsistency breaks agent workflows</h2><div class="pullquote"><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="http://linkedin.com/in/swarnendurohan-gupta" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JvYd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png 424w, https://substackcdn.com/image/fetch/$s_!JvYd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png 848w, https://substackcdn.com/image/fetch/$s_!JvYd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png 1272w, https://substackcdn.com/image/fetch/$s_!JvYd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JvYd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png" width="270" height="270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:512,&quot;resizeWidth&quot;:270,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Explore DevOps Insights from Rohan Gupta&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;http://linkedin.com/in/swarnendurohan-gupta&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Explore DevOps Insights from Rohan Gupta" title="Explore DevOps Insights from Rohan Gupta" srcset="https://substackcdn.com/image/fetch/$s_!JvYd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png 424w, https://substackcdn.com/image/fetch/$s_!JvYd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png 848w, https://substackcdn.com/image/fetch/$s_!JvYd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.png 1272w, https://substackcdn.com/image/fetch/$s_!JvYd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aebf22c-e52c-4f63-b5c6-90dd504787af_512x512.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>&#8220;It&#8217;s not just about connecting the dots for AI agents. It&#8217;s about making sure they understand what those dots mean.&#8221; &#8212; <a href="http://linkedin.com/in/swarnendurohan-gupta">Rohan Gupta</a>, Principal Product Manager at Harness</p></div><p><a href="http://linkedin.com/in/swarnendurohan-gupta">Rohan Gupta</a>, Principal Product Manager at <a href="https://www.harness.io/">Harness</a>, approaches the same problem from the perspective of an organization managing APIs across many teams and many services. His concern extends beyond the quality of any individual specification to the consistency of API design across the entire landscape. When agents operate in enterprise environments, they rarely interact with a single service in isolation. They move through workflows that cross multiple services, passing data and decisions from one system to another, and every inconsistency between how different teams have designed their APIs adds friction at the exact points where agents need to reason about how to connect things together.</p><p>Gupta&#8217;s view is that API specifications must be well-annotated and thoroughly documented so that agents can understand and execute the tasks they are given with accuracy and clarity, and that the design sloppiness which developers could historically compensate for becomes a structural blocker when the consumer is a machine reading a schema as its only source of truth. Missing descriptions, vague parameter names, inconsistent error handling patterns, and exposed implementation quirks that make no sense outside the context of the original development team all force agents into guesswork, and agents that guess tend to fail in ways that are difficult to reproduce and harder to debug than the original error would have been.</p><p>The governance problem becomes harder at the cross-service level. If one service in an agent&#8217;s workflow provides ambiguous or outdated information, the agent can be misled into triggering actions on a completely separate system in ways that no individual team would have anticipated or authorized. Lifecycle management for APIs that agents consume cannot focus only on backward compatibility within a single service anymore. It has to account for the cross-platform consistency and auditability of changes across every service in every workflow that agents are permitted to traverse, which is a meaningful expansion of what API governance has historically required.</p><h2>APIs that work for developers fail agents in production</h2><div class="pullquote"><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.linkedin.com/in/mayankbhola/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Evb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-Evb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-Evb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-Evb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Evb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg" width="264" height="264" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:340,&quot;width&quot;:340,&quot;resizeWidth&quot;:264,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mayank Bhola &#8211; Founder, LambdaTest | Startup Profile 2026 | Inc42&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.linkedin.com/in/mayankbhola/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mayank Bhola &#8211; Founder, LambdaTest | Startup Profile 2026 | Inc42" title="Mayank Bhola &#8211; Founder, LambdaTest | Startup Profile 2026 | Inc42" srcset="https://substackcdn.com/image/fetch/$s_!-Evb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-Evb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-Evb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-Evb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc010a6b-059a-4bf2-92a6-2007b6d92dfe_340x340.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>&#8220;If you can&#8217;t explain why your agent made a decision, you&#8217;re not ready to go live.&#8221; &#8212; <a href="https://www.linkedin.com/in/mayankbhola/">Mayank Bhola</a>, Co-Founder and Head of Products at TestMu AI</p></div><p><a href="https://www.linkedin.com/in/mayankbhola/">Mayank Bhola</a>, Co-Founder and Head of Products at <a href="https://www.testmuai.com/">TestMu AI</a>, has a practitioner&#8217;s view of where the failure patterns actually surface when organizations move from building agentic systems in development to running them in production. The pattern he observes is consistent across teams and organizations. APIs that worked reliably for developer consumption fail at meaningful rates when agents start calling them, and the root cause is almost always constraints and rules that were documented in external guides or tribal knowledge rather than encoded explicitly in the specification itself, leaving agents with no mechanism for knowing those rules exist until they violate them and encounter a failure they cannot interpret.</p><p>The fix Bhola advocates for is not simply better documentation, because better documentation that lives outside the machine-readable contract is still invisible to agents. It requires rethinking how APIs surface information about their own behavior, making all constraints explicit within the spec itself and building API surfaces that are structured to reduce the cognitive overhead agents face when trying to understand what an endpoint does, when to call it, and what the consequences of calling it incorrectly might be. For organizations with established API landscapes, he recommends maintaining two parallel layers, with a legacy developer API preserving backward compatibility for existing integrations and an AI-optimized layer built on top of it that flattens nested data structures, makes all constraints and relationships explicit, and exposes capabilities at a level of abstraction that agents can act on without needing to combine multiple lower-level calls to accomplish a single business task.</p><p>Bhola believes the industry&#8217;s biggest blind spot is assuming that successful API consumption automatically leads to reliable agent behavior. In practice, many failures emerge after the API call succeeds. The agent selects the wrong tool, misinterprets context, follows an invalid reasoning path, or takes an action that technically satisfies the request but violates business intent. This is why validation infrastructure must be designed before deployment rather than after incidents occur.</p><p>Testing agentic systems requires teams to evaluate decision quality, tool selection accuracy, reasoning traceability, and behavioral consistency under changing conditions. The goal Bhola highlights is not just to verify outputs, but to understand whether the agent arrived at those outputs for the right reasons.</p><h2>Too many endpoints, not enough intent</h2><p>The structural problem underneath all of this is that most enterprise APIs are too fine-grained for agents to use reliably, even when every individual specification is perfectly written and maintained. As Wilde frames it, accomplishing anything meaningful often requires combining many different endpoints in a specific order that encodes implicit business logic which is obvious to a developer who understands the domain but entirely opaque to an agent that has only the API contracts to work from.</p><p>When doing something meaningful requires chaining thirty endpoints in the right sequence, agents become confused about how to combine them, inventive in ways that produce incorrect results, or they make errors partway through the sequence that cascade into larger failures that are difficult to unwind. Wilde&#8217;s position is that AI readiness requires reducing the number of endpoints agents are exposed to and improving the business alignment and intent-based nature of the APIs that remain, so that a workflow that wants to accomplish a task ideally needs only a single tool call rather than having to orchestrate many lower-level calls in the correct order. The solution he and his colleagues at Jentic are working toward is a workflow layer that sits above the existing fine-grained API landscape, exposing business-level capabilities that are designed for runtime discovery and agent consumption rather than for developer integration at build time.</p><p>This pattern already shows up in enterprise partner integrations. Organizations with complex APIs that they expose to partners face a specific version of the fine-grained problem, where a partner integrating with a large API surface has to understand the full landscape even when they only need a small part of it, and the engineering effort of that integration is significant enough to slow or block adoption entirely. </p><p>The solution Wilde describes is building purpose-built workflows for specific partners, so that a partner only needs to understand the workflows that were designed for their particular use cases rather than navigating the full API surface independently. The underlying APIs do not change. What changes is the layer of business-level capabilities that sits above them, designed for a specific consumer&#8217;s needs rather than for maximum flexibility across all possible consumers. The benefit for agents is the same as the benefit for partners, with fewer options to navigate, clearer intent at each step, and a much lower chance of combining things incorrectly.</p><p>The insight that makes this approach worth pursuing beyond its value for agents alone is one that Wilde makes explicit. This improvement is not only valuable for agents. Any developer who currently has to call fifteen underlying APIs to accomplish a task that should conceptually be a single operation would also benefit from a better-designed capability API on top of those underlying services. The investment in agent-readiness is an investment in the overall quality and usability of the API landscape, and the returns compound across every consumer of those APIs whether that consumer is a human developer or an autonomous agent running at runtime.</p><h2>The API layer is where the next two years are decided</h2><p>Wilde&#8217;s view of API lifecycle management is the right closing frame for this issue. Agents do not consume APIs the way developers do. They discover capabilities at runtime, decide whether a tool looks useful in the moment, and need machine-readable signals about what the API does, what constraints apply, what side effects it may trigger, and whether it is safe to keep using.</p><p>That changes how organizations need to think about versioning, deprecation, and governance. The old model assumes that a developer reads the documentation, notices a migration notice, and updates an integration on a schedule the team can manage. Agent-facing APIs need more of that information to be visible at runtime. If an API is being deprecated, if a capability is nearing sunset, or if a safer replacement exists, the consuming system needs a way to discover that signal before it makes a decision.</p><p>This is where API lifecycle management needs to move, and organizations that invest in the governance structures to support it now will be better positioned than those that wait for the pressure to become unavoidable. The agents are already in production, and the limiting factors are no longer model capability alone but integration, security, and operational scalability, which means the API layer is where the most consequential infrastructure work of the next two years will happen for most engineering organizations.</p><p>The same design assumption that broke enterprise APIs, that the consumer has context, judgment, and the ability to fill in gaps, is present in every other infrastructure layer that agents call at runtime. Wilde&#8217;s framing brings the issue back to a practical rule. Agents should not be used to compensate for infrastructure that fails to express intent, constraints, lifecycle state, or safe operating boundaries. The teams that build on infrastructure designed to make those signals explicit will ship more reliable agentic systems than those still working around infrastructure that was never designed for this kind of consumer.</p><div><hr></div><p>Thank you for reading this special issue of Deep Engineering on why the API layer has become the most consequential infrastructure problem in enterprise AI. </p><p>We&#8217;ll be back on Thursday with more expert-led content, and next month, on the first Tuesday of July, with another special issue.</p><p><strong>Keep building,<br></strong>Saqib Jan<br>Editor-in-Chief, Deep Engineering</p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #49: David Knickerbocker on Open Source Intelligence and Real-World AI Systems]]></title><description><![CDATA[Why messy, contradictory data changes how engineers should think about retrieval, judgment, and production AI]]></description><link>https://deepengineering.net/p/issue49-david-knickerbocker-open-source-intelligence-real-world-ai-systems</link><guid isPermaLink="false">https://deepengineering.net/p/issue49-david-knickerbocker-open-source-intelligence-real-world-ai-systems</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 28 May 2026 17:05:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b96406ea-9c17-4f34-9cc4-143870c16a5f_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="http://daily.dev/">All the dev content that matters, in one personalized feed</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="http://daily.dev/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b-4k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b-4k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b-4k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b-4k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b-4k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg" width="800" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;http://daily.dev/&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!b-4k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b-4k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b-4k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b-4k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4db2d351-66d6-477a-aac7-b5c9cd3ef8fe_800x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="http://daily.dev/">daily.dev</a> is a professional network for developers, built around a personalized feed of the best content from across the dev ecosystem. Millions of developers use it to stay current with their stack, discover new tools and frameworks, and connect with a global community that shares what they're learning. </p><p>Whether you're an early-career engineer levelling up or a senior dev tracking what's next, <a href="http://daily.dev/">daily.dev</a> makes sure the signal reaches you - without the noise. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://daily.dev/&quot;,&quot;text&quot;:&quot;Join for free at daily.dev&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="http://daily.dev/"><span>Join for free at daily.dev</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>49th</strong> issue of Deep Engineering!</p><p>Earlier this month, CISA and its international cybersecurity partners released <em><a href="https://www.cisa.gov/resources-tools/resources/careful-adoption-agentic-ai-services">Careful Adoption of Agentic AI Services</a></em>, a guide for organisations adopting AI systems that can plan, use tools, access data, and act across digital environments. That changes the risk model because AI systems operating inside real workflows inherit risk from the surrounding data, permissions, tools, and context.</p><p>That risk is becoming easier to understand in practice. On 23 May 2026, Rohan Pandey of DigitalOcean and Archit Bhujang of Arizona State University published <em><a href="https://arxiv.org/abs/2605.24421">Poisoning the Watchtower</a></em>, which shows how logs, alerts, URLs, payloads, DNS queries, and usernames can carry attacker written instructions into LLM assisted security workflows.</p><p>AI systems do not only consume clean prompts from users. They consume context from operational systems, open web sources, documents, logs, tools, and knowledge bases that the model does not control. Once that context includes contradiction, deception, malicious text, or attacker controlled content, relevance alone becomes an unsafe target for retrieval and summarisation.</p><p><a href="https://www.linkedin.com/in/dkjapan">David Knickerbocker</a>, founder of <a href="https://www.verdantintel.com/">Verdant Intelligence</a> and author of <a href="https://www.packtpub.com/en-us/product/network-science-with-python-9781801073691">Network Science with Python</a> (Packt), builds systems for Open Source Intelligence (OSINT) environments where messy and adversarial data is normal. His perspective matters in this issue because the systems he builds separate observing from judging, treat claims as claims rather than facts, and preserve minority signals that simpler retrieval pipelines often discard.</p><blockquote><p>In <a href="https://deepengineering.substack.com/p/issue43-building-ai-that-sees-the-world-as-it-is-david-knickerbocker">issue 43</a>, we looked at Knickerbocker&#8217;s work on real-time knowledge graphs and AI systems that treat knowledge as a live stream of claims. Today&#8217;s issue continues that conversation with what OSINT teaches engineers about messy, adversarial data. You can also watch our interview or read the full Q&amp;A <a href="https://deepengineering.substack.com/p/knowledge-graphs-graphrag-and-real">here</a>.</p></blockquote><p>Let&#8217;s get started.</p><div><hr></div><p><strong><a href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng">Claude Code for Software Engineering</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5k27!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!5k27!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png" width="900" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!5k27!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 424w, https://substackcdn.com/image/fetch/$s_!5k27!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 848w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.png 1272w, https://substackcdn.com/image/fetch/$s_!5k27!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e48a8b5-0cba-47a2-853b-baf70c32c7d7_900x300.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Learn how to structure Claude Code with context, reusable skills, scoped instructions, and guardrails so it works reliably across real codebases and team workflows.</p><p>&#128467;&#65039; Friday, June 20 &#183; 10:30 AM EDT onwards</p><p style="text-align: center;"> Use code <strong>DEEPENG50</strong> for 50% off.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/claude-code-for-software-engineering-from-prompts-to-systems-tickets-1988571262176?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p>Expert Insights</p><h2>Building AI Systems That Handle Contradiction at Scale</h2><p><em>by <a href="https://in.linkedin.com/in/s-jan">Saqib Jan</a> with <a href="https://www.linkedin.com/in/dkjapan">David Knickerbocker</a></em></p><p>Most engineers building AI systems have never had to question whether their data source is working against them. The data comes, is processed, retrieved, and the system responds. The assumption underneath all of that is that the source is cooperative, that it was created to convey information accurately, stored in a format designed for retrieval, and that what comes back when you query it is at least an honest attempt at an answer. The problem is that assumption is so embedded in how most AI systems are designed that it never gets examined.</p><p><a href="https://www.linkedin.com/in/dkjapan">David Knickerbocker</a>, founder of <a href="https://www.verdantintel.com/">Verdant Intelligence</a> and author of <a href="https://www.packtpub.com/en-us/product/network-science-with-python-9781801073691">Network Science with Python</a> (Packt), builds systems for environments where data is not clean, settled, or cooperative. His AI systems ingest from the open web, across sources that contradict each other, where some information may be misleading, incomplete, or adversarial. The engineering challenge is not only making retrieval accurate. It is making the system useful when the real world refuses to behave like a clean dataset.</p><h3>The assumption that data is helpful</h3><p>Engineers who have worked primarily with internal databases, structured APIs, or carefully assembled training sets carry a baseline assumption that data is cooperative. It was created to convey information accurately, stored in a format designed for retrieval, and accessed through interfaces that return what was asked for. The job of the retrieval system is to find the right thing efficiently.</p><p>Open-source intelligence does not work this way. When ingesting from the open web at scale, some fraction of what arrives is wrong, some is deliberately misleading, and some represents one side of a contested claim. For Knickerbocker, the ingestion layer is not the right place to decide what is true. &#8220;You can have two different groups that are in opposition from each other,&#8221; he says. &#8220;One group will say this is the truth, and another group will say this is the truth, and they will be in direct conflict with each other.&#8221; The system&#8217;s job, in that moment, is to capture what is being claimed and preserve enough context for judgment to happen later.</p><div class="pullquote"><p>&#8220;The real world is a messy space. It is not just that websites disagree with each other. Websites also have malware. If you point your servers at websites and you just download everything that is on them, then you need to be prepared for the consequences of downloading malware.&#8221;</p></div><p>The practical design response is to treat the system as an observer rather than an adjudicator. Knickerbocker draws that line clearly. &#8220;My systems do not care who is right or wrong,&#8221; he explains. &#8220;They just do not. My systems are observers.&#8221; The point is not neutrality as a value statement. It is an architectural boundary. The system captures what is being said, keeps competing claims visible, and avoids collapsing observation into judgment too early.</p><p>This distinction matters far beyond open-source intelligence. Any AI system that draws on user-generated content, social media, news, or unstructured enterprise data is working with material that was not created to be machine-readable and was not vetted before ingestion. The assumption that the data is trying to help is not just wrong in those environments. It is a liability.</p><p></p><h3>Bigger clusters are not more important than smaller ones</h3><p>One of the quieter failures in production NLP systems is the treatment of minority signals as noise. A similarity-based retrieval system returns the most representative results, which in practice means the most common results. A clustering pipeline that surfaces the largest groups first will consistently deprioritize small but significant signals. In a world where the interesting thing is often the outlier, that is a serious problem.</p><p>In open-source intelligence specifically, this failure mode has consequences. A small cluster of claims pointing toward something dangerous is not less important because it is small. A single source saying something that contradicts the majority view is not less worth capturing because it is in the minority. &#8220;Bigger clusters are not more important than smaller clusters,&#8221; Knickerbocker observes. &#8220;In open source intelligence, everything matters, top to bottom.&#8221;</p><p>Drawing from his engineering experience building these systems, Knickerbocker ensures his APIs return full context rather than a ranked shortlist. &#8220;If you use a tool to do a search to find out something, you are getting a snapshot of time,&#8221; he says. His systems are designed to capture what he calls the heartbeat of the internet. &#8220;If I use my API... it is going to come back with 10,000 things. My APIs do not return 10. They return full context.&#8221; That creates a harder downstream problem because the question is no longer how to retrieve the best few results. It is how to make a large, shifting body of claims usable without discarding the signals that do not look dominant at first.</p><p>The parallel for general AI systems is specific and direct. Any retrieval or summarisation pipeline that privileges majority signal is making a judgment call that the most common view is the most relevant one. That judgment call is often wrong, and it is invisible because the discarded minority signal never surfaces.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://deepengineering.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and support our work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>The difference between a claim and a fact</h3><p>Engineers trained on factual datasets tend to build systems that treat retrieved content as facts to be combined and presented. The underlying assumption is that if the source is credible and the retrieval is accurate, what comes back is true. In a contested information environment that assumption collapses immediately, and the design has to change with it.</p><p>Knickerbocker&#8217;s approach separates the task of capturing claims from the task of evaluating them. What a source says is observable. Whether what it says is correct requires judgment that depends on context, corroboration, and often human expertise that the system does not have. Turning that claim into an evaluated fact requires a different layer of judgment, and Knickerbocker is careful not to build that decision into the first act of ingestion. &#8220;I do not make that decision, and I do not allow my AI to make the decision what is true or what is false either,&#8221; he says. &#8220;I am more interested in what people are claiming is what is going on in the world.&#8221;</p><p>This design choice has a significant downstream consequence. It means the system can handle contradiction without breaking. Two sources saying opposite things about the same event are not a problem to resolve at the retrieval layer. They are two data points, both of which belong in the response. Knickerbocker simply logs these varied claims as parallel ribbons of information. The human or the downstream system that receives them can then apply judgment about which to act on, in what context, and with what confidence.</p><h3>The verification boundary</h3><p>One of the hardest design decisions in any AI system that works with real-world data is where to draw the line between surfacing an insight and making an actionable claim. The two feel similar at the output layer but require very different things from the system that produces them.</p><p>In our <a href="https://deepengineering.substack.com/p/knowledge-graphs-graphrag-and-real">live interview</a>, Knickerbocker was specific about where that line sits. &#8220;Everything that I do is intentional,&#8221; he shares. His real-time intelligence layer is built for awareness. It captures what is happening and surfaces it without making the final judgment on what should be done next. If a piece of intelligence looks actionable, the system does not automatically act on it. It surfaces the signal so a human or downstream process can decide whether it matters, who should see it, and what level of confidence is appropriate.</p><div class="pullquote"><p>&#8220;There are still certain parts that I like being a human being. Some things you just need to be aware of. Like, you do not need to respond to everybody. But it is good to know what is on the radar.&#8221;</p></div><p>In practice, this means that even when a piece of intelligence looks clearly actionable, the system does not act on it. It surfaces it. The routing of that intelligence to the right person or the right downstream process is a separate engineering and organisational problem, and conflating it with the retrieval problem produces systems that are either too conservative to be useful or too confident to be trusted.</p><p>This is a principle with broad application. AI systems that are asked to be both the observer and the actor tend to perform neither role well. Keeping the observation layer and the action layer separate, with a clear boundary between them, is one of the most reliable ways to build something that stays trustworthy as it scales.</p><h3>Entity extraction gets easier but never clean</h3><p>Entity extraction from clean text is comparatively well understood. The models are good, the cleanup is manageable, and the output is reliable enough for most downstream uses. Entity extraction from the open web at scale is a different challenge, not because the models are worse but because the data has properties that laboratory text does not.</p><p>Knickerbocker began this work in 2018, starting with part-of-speech tagging before NER models were mature, moving to spaCy as those models improved, and more recently using LLMs for extraction. The trajectory is one of improving reliability rather than changing fundamentals. &#8220;Entity extraction has improved a lot since 2015,&#8221; he notes. &#8220;I mostly have to just throw away less. I have less cleaning to do, and it gets things right a lot easier.&#8221;</p><p>What has not changed is the messiness. Natural language processing at scale on real-world text always produces noise. The question is how much noise is acceptable for the downstream use case and how to handle the cleaning efficiently. At the scale he describes from previous work, including entity extraction across internet-scale datasets, the cleaning cannot be purely manual. It has to be part of the pipeline rather than an editorial step applied after the fact.</p><p>He also flags a risk in the current extraction approach that is worth understanding. Older NLP models produced visible noise that engineers learned to catch and correct. LLM-based extraction produces outputs that look clean even when they are wrong, because the model is good at generating confident-looking text regardless of underlying accuracy.</p><div class="pullquote"><p>&#8220;LLMs are a little bit dangerous because the messiness goes away. People are a little bit more trusting of LLMs than older NLP. When you are using LLMs, everything just looks perfect. And that is kind of a dangerous downside too.&#8221;</p></div><p>The implication for engineers is that moving to LLMs for extraction does not reduce the need for validation. It makes validation harder to remember because the outputs no longer look like they need it.</p><h3>Building for the world that actually exists</h3><p>The thread running through Knickerbocker&#8217;s work is a commitment to grounding. He builds systems for the world as it is, not a cleaned version of it. That leads to a specific set of design choices: treat data as claims rather than facts, preserve minority signals, separate awareness from judgment, and let the system observe before any person or downstream workflow decides what to do next.</p><p>Those principles come from the kinds of environments Knickerbocker has worked in: data operations, cybersecurity, open-source intelligence, and production systems where the cost of getting something wrong is real. &#8220;The real world is a messy space,&#8221; he says. &#8220;Natural language processing is just messy. I have not seen it get really cleaned up yet.&#8221;</p><p>For engineers who have worked mostly with clean internal systems, that might sound like a warning about a narrow class of hard problems. It is broader than that. Any AI system that deals with content created by people, pulled from the web, generated by users, or routed through operational systems eventually has to confront the same condition. Real-world data is messy by default. The systems that handle it well are intentionally designed for that mess before it becomes a production failure.</p><div><hr></div><h3>In case you missed </h3><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;7b9be39e-b4b3-4942-92f8-1c092f6cf44f&quot;,&quot;caption&quot;:&quot;Real-time knowledge graphs, awareness before truth, and why an empty dataset is better than a hallucination&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Deep Engineering #43: David Knickerbocker on Building AI That Sees the World as It Is, Not as It Was&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-16T15:30:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/542c8988-3aa8-439a-94c1-20a10d857430_716x421.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/issue43-building-ai-that-sees-the-world-as-it-is-david-knickerbocker&quot;,&quot;section_name&quot;:&quot;Newsletter Issues&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:194401065,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:7,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d5bd6b9c-b1b5-4c08-84a4-9c2a022c147e&quot;,&quot;caption&quot;:&quot;This conversation with David Knickerbocker keeps returning to a single conviction: the best engineering starts with intentional problem definition, and most AI failures happen when teams rush to use a tool before understanding what they are actually trying to build.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Knowledge Graphs, GraphRAG, and Real-Time AI in Production with David Knickerbocker&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-15T12:30:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93b09a18-df5c-49af-93ca-6f4d45a26bdc_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/knowledge-graphs-graphrag-and-real&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:194390901,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/microsoft/graphrag">GraphRAG</a> &#8212; A graph-based retrieval pipeline for unstructured text</strong></p><p>GraphRAG helps teams preserve relationships across messy documents, conflicting claims, and large text collections before asking an LLM to answer.</p><p><strong>Highlights:</strong></p><ul><li><p>Builds knowledge graphs from unstructured text instead of relying only on isolated chunks.</p></li><li><p>Links entities, claims, and topics so retrieval can use structure, not just similarity.</p></li><li><p>Supports local and global search for both narrow evidence lookup and corpus-level synthesis.</p></li><li><p>Gives engineers a practical starting point for testing graph-based RAG patterns.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/microsoft/graphrag&quot;,&quot;text&quot;:&quot;Learn more about GraphRag&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/microsoft/graphrag"><span>Learn more about GraphRag</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://support.claude.com/en/articles/15167101-get-started-with-claude-compliance-api-integrations">Claude Compliance API Integrations</a> - Compliance API integrations help IT and security teams govern Claude across connected enterprise workflows.</p></li><li><p><a href="https://meet.modelcontextprotocol.io/2026/05">MCP Events Working Groups</a> - Gateway, transport, registry, and agents groups advanced protocol work around tool-connected AI systems.</p></li><li><p><a href="https://ragflow.io/docs/release_notes">RAGFlow v0.25.6</a> - Browser agents and RAPTOR AHC mode expand RAGFlow from document retrieval into web-aware ingestion workflows.</p></li><li><p><a href="https://github.com/qdrant/qdrant/releases/tag/v1.18.1">Qdrant v1.18.1</a> &#8212; Vector dimension validation before WAL writes reduces ingestion failure risk during async upserts.</p></li><li><p><a href="https://github.com/weaviate/weaviate/releases/tag/v1.38.0-rc.0">Weaviate v1.38.0-rc.0</a> - Nested object filtering and namespace support improve retrieval precision for structured, multi-tenant corpora.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Keep building,</p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #48: Erik Wilde on Agent-Ready APIs, Widespread MCP Adoption, and the OpenAPI Standards That Matter]]></title><description><![CDATA[On the abstraction level problem, the limits of linting, and why investing in your API foundation matters more than chasing the current delivery protocol]]></description><link>https://deepengineering.net/p/agent-ready-apis-mcp-adoption-openapi-standards</link><guid isPermaLink="false">https://deepengineering.net/p/agent-ready-apis-mcp-adoption-openapi-standards</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 21 May 2026 17:43:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d8a775e3-e4ed-4323-a21b-de0e1b0915e0_1266x530.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.eventbrite.co.uk/e/building-reliable-ai-agents-with-java-and-langchain4j-tickets-1987887565220?aff=deepeng">Building Reliable AI Agents with Java and LangChain4J</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/building-reliable-ai-agents-with-java-and-langchain4j-tickets-1987887565220?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xWNj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!xWNj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!xWNj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!xWNj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xWNj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/building-reliable-ai-agents-with-java-and-langchain4j-tickets-1987887565220?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!xWNj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!xWNj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!xWNj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!xWNj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9600ceae-059d-47a6-8f52-348d94ae7467_2160x1080.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A hands-on workshop covering how to build production-grade AI agents using Java and LangChain4J.</p><p>&#128467;&#65039; Friday, June 13 &#183; 10:00 AM &#8211; 1:30 PM ET &#183; Online</p><p style="text-align: center;">2 for 1 deal is live. Use code <strong>DEEPENG50</strong> for 50% off.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/building-reliable-ai-agents-with-java-and-langchain4j-tickets-1987887565220?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/building-reliable-ai-agents-with-java-and-langchain4j-tickets-1987887565220?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p>&#9997;&#65039; <strong>From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>48th</strong> issue of Deep Engineering!</p><p>Google <a href="https://blog.google/innovation-and-ai/technology/developers-tools/managed-agents-gemini-api/">announced Managed Agents in the Gemini API</a> two days ago at Google I/O, making it possible to spin up an agent that can reason, use tools, execute code, and browse the web with a single API call. The infrastructure work that previously required teams to build and manage sandboxes, scaffolding, and execution environments is being abstracted away. The capability is in public preview and Google is clear that outputs should be reviewed before use in sensitive workflows, but the direction is quite clear. Deploying agents is getting significantly easier.</p><p>What is not getting easier at the same pace is making the APIs those agents will call worth calling. APIs designed for actual developers, who can tolerate ambiguous descriptions, infer intent from sparse documentation, and navigate hundreds of operations to find the right one, do not work the same way for agents. Agents are less reliable at resolving ambiguous API semantics, choosing among many overlapping operations, and safely composing actions without machine-readable contracts and guardrails.</p><p><a href="https://ch.linkedin.com/in/erikwilde">Erik Wilde</a>, Head of Enterprise Strategy at <a href="https://jentic.com/">Jentic</a> and OpenAPI Ambassador at the <a href="https://www.openapis.org/">OpenAPI Initiative</a>, has spent considerable time on solving for that gap. We spoke with Wilde about what agent-ready actually means in practice, and he explained from his engineering purview why MCP will not fix a poorly designed API foundation, and what platform engineers should start planning for today.</p><blockquote><p>The expert insights in today's issue are based on our recent live interview with Wilde and you can read or watch the full Q&amp;A <a href="https://deepengineering.substack.com/p/building-agent-ready-apis-in-production">here</a>.</p></blockquote><p>Let&#8217;s get started.</p><div><hr></div><h4 style="text-align: center;"><strong>Featured Newsletter: <a href="https://machinelearningatscale.substack.com/">Machine Learning at Scale.</a></strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://machinelearningatscale.substack.com/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GrnZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GrnZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GrnZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GrnZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GrnZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg" width="316" height="264.21966341895484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:944,&quot;width&quot;:1129,&quot;resizeWidth&quot;:316,&quot;bytes&quot;:205590,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://machinelearningatscale.substack.com/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://deepengineering.substack.com/i/198600531?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GrnZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GrnZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GrnZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GrnZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea6adb71-dd8c-4a45-a8b2-2f452b0654fd_1129x944.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Are you a SWE looking to upskill into ML systems? Get high quality ML system design content delivered to your inbox. Learn how to design and scale Machine Learning Systems.</p><p><strong>Subscribe to <a href="https://machinelearningatscale.substack.com/">Machine Learning at Scale</a></strong></p><div><hr></div><p><strong>&#129504; Expert Insights</strong></p><h2><strong>Your APIs Are Not Ready for Agents, and MCP Will Not Fix That</strong></h2><p><em>by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;3709f44c-b30e-491a-b737-39d98482143a&quot;}" data-component-name="MentionToDOM"></span> with <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Erik Wilde&quot;,&quot;id&quot;:149691045,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87e21c23-bc24-4b52-8b8a-3146d31edbee_3024x3024.jpeg&quot;,&quot;uuid&quot;:&quot;3916d049-523c-4e50-a490-8dd50c6c08df&quot;}" data-component-name="MentionToDOM"></span> </em></p><p>The conversation about AI agents in enterprise software dominates engineering mindshare as to how agents will consume APIs and what it actually takes to make that consumption work reliably. Most organisations have taken the shortcut. They have built an MCP server, pointed it at their existing API landscape, and told themselves the agent problem is solved. <a href="https://ch.linkedin.com/in/erikwilde">Erik Wilde</a>, Head of Enterprise Strategy at <a href="https://jentic.com/">Jentic</a> and OpenAPI Ambassador at the <a href="https://www.openapis.org/">OpenAPI Initiative</a>, thinks that is the wrong bet, and his reasoning is specific enough to be useful.</p><p>&#8220;Whatever you invest in better APIs becomes useful for everybody,&#8221; Wilde affirms. &#8220;If you invest specifically in MCP, that investment is effectively scoped to LLM consumers.&#8221; The point is not that MCP is useless. It is that MCP is a delivery mechanism, and delivery mechanisms change. The API foundation underneath it does not change nearly as quickly, and if that foundation is poorly designed for the agents that will eventually consume it, no amount of tooling stacked on top of it will compensate. The organisations that will be in the strongest position in two years are the ones investing in the foundation now, not the ones chasing the current delivery protocol.</p><h3>The abstraction level problem</h3><p>The clearest way to understand what makes an API agent-ready is to look at a concrete example, and Wilde in our interview offered one that makes the problem immediately legible. The <a href="https://docs.github.com/en/rest">GitHub REST API</a> currently has around 1,100 operations. That is not unreasonable for a product as complex as GitHub. A developer can navigate 1,100 operations because they bring context, experience, and the ability to read documentation and infer intent. They know roughly what they are looking for and they can work toward it even when the path is not obvious.</p><p>An agent does not work that way. &#8220;For an agent to work directly with that GitHub API is pretty complex,&#8221; Wilde points out, &#8220;because a lot of those operations need to be combined in a certain way to result in the workflows that you really want to accomplish on GitHub.&#8221; The agent has to figure out not just what each individual operation does but how they compose, in what order, under what conditions, and with what dependencies. With 1,100 operations, the combinatorial space of possible workflows is enormous, and agents navigating it without guidance will produce unreliable results.</p><p>Now look at the GitHub MCP server, which has around 70 tools. Each of those tools represents a higher-level workflow, something a developer might actually want to accomplish on GitHub rather than a low-level operation that contributes to that accomplishment. The reduction from 1,100 to 70 is not a loss of capability. It is a gain in usability for the specific class of consumer that is trying to get things done rather than explore a surface. &#8220;What I would say,&#8221; Wilde argues on this point, &#8220;is that if you had a genuinely agent-friendly GitHub API, it might also just have around 70 operations.&#8221; The MCP server is not adding something new. It is providing the abstraction level that the underlying API should have provided in the first place.</p><p>This is the abstraction level problem, and it is the most important design question for engineering teams building API infrastructure that agents will consume. The APIs that were designed for developer flexibility, with many fine-grained operations that compose in powerful ways, are exactly the wrong shape for agents that need to accomplish specific goals reliably. The discipline of designing for agents is the discipline of asking what a consumer actually wants to accomplish and surfacing that at the API level, rather than exposing every atomic capability and leaving the composition to the consumer.</p><h3>What agent-ready actually means</h3><p>The properties that follow from the abstraction level insight are consistent and actionable. An API designed for agent consumption should not be too fine-grained, and its descriptions should be intent-based and written at a level that is meaningful for a language model rather than just technically accurate for a developer who already knows the domain. It should have examples, ideally multiple examples per operation rather than one, because examples are one of the most reliable ways for a model to understand what an operation actually does in practice. Its error messages should be meaningful enough that an agent encountering a failure has enough information to understand what happened and what it might do next.</p><p>&#8220;If an AI agent looks at a poorly described API and cannot figure out how it works, it will just move on to the next one,&#8221; Wilde notes. &#8220;It has less context. It has less experience. It does not really know as well as an actual developer what to do.&#8221; This is the practical consequence of the abstraction level problem at the description level. A developer reading a sparse API description can fill in the gaps from domain knowledge and engineering experience. An agent cannot do that reliably, and the result is not a helpful error or a clarifying question. It is a silent failure or a wrong action.</p><p>Wilde and his team have built a scoring mechanism for API readiness that makes these dimensions concrete. The scoring uses a combination of standard linting, running tools like <a href="https://stoplight.io/open-source/spectral">Spectral</a> and <a href="http://redocly.com/">Redocly</a> to check structural conditions, and LLM-based checks that evaluate whether descriptions are written in a way that is genuinely useful for an agent rather than just present. The distinction matters because a description that exists and passes a structural check may still be useless for an agent if it describes what an operation does technically without explaining what a consumer would use it to accomplish. &#8220;These descriptions need to represent intent,&#8221; Wilde highlights. &#8220;What is the intent of somebody who would use this operation?&#8221;</p><h3>Linting though necessary is not sufficient</h3><p>Linting has become standard practice in well-run API programs, and Wilde endorses it as a first line of defense. The popular tools are capable and in some cases open source, and the practice of defining shared rule sets that teams can discuss, extend, and maintain in version control is genuinely useful. But in our conversation he was clear that linting alone does not get you to agent-ready, and teams that treat it as the complete solution are leaving the most important problems unaddressed.</p><p>The structural checks that linting tools perform are exactly that. They can tell you whether a description field exists and whether it meets a minimum length requirement, but they cannot tell you whether the description is written in a way that helps an agent understand what the operation is for. They can flag a missing example but cannot evaluate whether the examples present give a model enough signal to use the operation correctly in a novel context. The gap between what linting checks and what agent readiness requires is the gap between structure and meaning, and closing it requires evaluation mechanisms that go beyond pattern matching on OpenAPI descriptions.</p><p>Wilde also makes an important point about rule set governance that is worth taking seriously. &#8220;I am not a big fan of just reusing existing rule sets,&#8221; he contends. &#8220;I would always say start owning this, build up your own in a collaborative fashion.&#8221; The Zalando and Adidas rule sets that circulate in the API community are useful references, but they were built for specific contexts and specific quality standards. Adopting them wholesale means inheriting decisions that were made for a different organisation&#8217;s constraints. The value of a rule set comes not just from the rules it contains but from the process by which those rules were agreed upon, which is a process that builds shared understanding of what good API design actually means in a particular context.</p><h3>MCP is a delivery mechanism, not a foundation</h3><p>MCP has been growing fast. It is now <a href="https://aaif.io/">under the Linux Foundation</a>, major model providers support it, and a growing number of enterprise vendors are shipping MCP servers as a standard part of their product offering. For engineers deciding where to invest, it looks like an obvious answer to the question of how to make APIs accessible to agents.</p><p>Wilde&#8217;s skepticism is not about MCP&#8217;s current momentum. It is about what MCP is and what it is not. &#8220;MCP is the current delivery mechanism,&#8221; he says. &#8220;You need a delivery mechanism, but I would not build too many things that are MCP-specific.&#8221; At Jentic, the team supports MCP because it is what the market expects right now, but they have deliberately avoided deep investment in MCP-specific infrastructure. If MCP were replaced by something else, the transition would be straightforward because the underlying work, making APIs well-described, well-structured, and semantically rich, would carry over entirely. That work is not MCP-dependent. It is foundational.</p><p>The risk for teams that invert this priority is real. Building an MCP server on top of a poorly designed API landscape means the MCP server inherits all of those same problems. Operations that are too fine-grained stay too fine-grained, descriptions that lack intent stay unreadable to a model, and error messages that tell a human nothing tell an agent even less. The wrapper changes the protocol by which those problems reach the agent, not the problems themselves.</p><h3>Open standards outlast any delivery protocol</h3><p>One of the clearest threads in Wilde&#8217;s thinking is the value of building on open standards rather than specific tools or protocols. This is not an abstract preference for openness. It is a practical argument about optionality. Teams that build their API practices on <a href="https://www.openapis.org/">OpenAPI</a>, <a href="https://www.openapis.org/arazzo-specification">Arazzo</a>, and <a href="https://learn.openapis.org/overlay/">Overlays</a> are building on specifications that are independent of any vendor, any model provider, and any current delivery protocol including MCP. When the next delivery mechanism arrives, or when the current tooling landscape shifts, the foundation remains.</p><p><a href="https://www.openapis.org/arazzo-specification">Arazzo</a> is worth understanding in this context. It is a workflow language published by the OpenAPI Initiative that allows you to describe sequences of API interactions in a standardised format. If accomplishing a particular goal requires calling five endpoints in a specific order with specific dependencies, Arazzo is the language for expressing that. For agents, which struggle with exactly this kind of multi-step composition, a well-constructed Arazzo workflow is one of the most useful things an API producer can provide. &#8220;Figuring out multi-step workflows is one of the hardest things for agents to do right now,&#8221; Wilde says, &#8220;and Arazzo is genuinely good at describing those. We just need to make it discoverable.&#8221;</p><p>Overlays, the third specification from the OpenAPI Initiative, provides a way to express changes to an OpenAPI description in a standardised diff format. &#8220;We use overlays,&#8221; Wilde shares, &#8220;to deliver improvement suggestions alongside API scores. When the scoring mechanism identifies that an API is not well-designed for AI consumption, it also produces an Overlay that shows exactly what would need to change to improve it.&#8221; That makes the gap between current state and agent-ready state concrete and actionable rather than a list of abstract recommendations.</p><h3>The APIs you design today will still be running in two years</h3><p>The practical implication of everything Wilde argues is a specific recommendation about timing. API landscapes change slowly. Whatever is designed or changed today will likely remain largely unchanged for one to three years. Agents are arriving in enterprise contexts incrementally but consistently. The customer support and HR agents that are already deployed broadly are the early wave, and the business agents with genuine decision-making authority are behind them.</p><p>&#8220;API landscapes evolve slowly,&#8221; Wilde says. &#8220;Whatever you design or change today, you will probably have around for a year or two or three before you touch it again.&#8221; The teams that start building API readiness for agents now are the teams whose infrastructure will be in the right shape when agents with more capability and more authority arrive. The teams that wait for agents to become mainstream before improving their APIs will find themselves doing expensive remediation work on a landscape that is already in production and already depended upon.</p><p>The recommendation is not to stop shipping features or to redesign everything at once. It is to make agent readiness a standard consideration in the decisions that are already being made. When writing a new operation, write the description for an agent as well as for a developer. When adding examples, add enough that a model can generalise. When defining error responses, add enough context that a consumer without domain knowledge can understand what happened. These are not large investments per decision and they compound over time into an API landscape that agents can actually use.</p><p>To this end, &#8220;All the platform people out there who are building API platforms or doing platform engineering,&#8221; Wilde says, &#8220;think about how all of this will change if you have more and more agentic actors and consumers in your organisation, and start planning for that today, even if you can say that right now you do not have it this much and it is going to be another year or two. It is going to arrive.&#8221;</p><div><hr></div><h3>In case you missed</h3><p><em>Here&#8217;s the full Q&amp;A with the interview video featuring Erik Wilde.</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;77abce22-b4ff-4d42-963d-6a98b9f31593&quot;,&quot;caption&quot;:&quot;Erik Wilde joined Deep Engineering Live interview session to talk about OpenAPI 3.2, what agent-ready APIs actually look like, and why he is more skeptical about MCP than most people expect.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Building Agent-Ready APIs in Production with Erik Wilde&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:149691045,&quot;name&quot;:&quot;Erik Wilde&quot;,&quot;bio&quot;:&quot;Erik Wilde works in digital transformation and API management. Erik is the author of many articles, books, and speaks at conferences around the globe. His \&quot;Getting APIs to Work\&quot; YouTube channel provides updates about technologies, tools, and events.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87e21c23-bc24-4b52-8b8a-3146d31edbee_3024x3024.jpeg&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://gettingapistowork.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://gettingapistowork.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Getting APIs to Work&quot;,&quot;primaryPublicationId&quot;:1702325}],&quot;post_date&quot;:&quot;2026-05-20T20:06:57.058Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/iJXKkD5ySsY&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/building-agent-ready-apis-in-production&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:198599140,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/stoplightio/spectral">Spectral</a></strong> &#8212; open-source JSON and YAML linter with built-in support for OpenAPI, Arazzo, and AsyncAPI</p><ul><li><p>Validates OpenAPI v3.1, v3.0, v2.0, Arazzo v1.0, and AsyncAPI v2.x out of the box.</p></li><li><p>Supports fully custom rule sets, letting teams build and own their own governance standards.</p></li><li><p>Integrates with VS Code, JetBrains, GitHub Actions, and Azure API Center for shift-left linting.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/stoplightio/spectral&quot;,&quot;text&quot;:&quot;Learn more about Spectral&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/stoplightio/spectral"><span>Learn more about Spectral</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://blog.google/innovation-and-ai/technology/developers-tools/managed-agents-gemini-api/">Google Managed Agents now in Gemini API</a> - A single API call now provisions an ephemeral Linux sandbox with code execution, web browsing, and tool use built in.</p></li><li><p><a href="https://www.cncf.io/blog/2026/05/05/announcing-kyverno-release-1-18/">Kyverno 1.18 released post-CNCF graduation</a> - First post-graduation release patches two SSRF CVEs and adds cleanup policy support to the Kubernetes policy engine.</p></li><li><p><a href="https://openai.com/index/dell-codex-enterprise-partnership/">OpenAI and Dell bring Codex to on-premises enterprise</a> - The partnership makes the Codex coding agent available in hybrid and air-gapped enterprise environments for the first time.</p></li><li><p><a href="https://cloud.google.com/blog/topics/developers-practitioners/io26-news-for-agent-developers-on-google-cloud">A2A protocol underpins Google&#8217;s full agent stack</a> - Agents built at any abstraction level can be called as sub-agents across the entire Google Cloud agent platform.</p></li><li><p><a href="https://www.devopsdigest.com/almost-half-of-ai-generated-code-fails-in-production">43% of AI-generated code fails in production</a> - Survey of 200 SRE leaders finds teams average three production redeploy cycles to verify a single AI-suggested fix.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you so very much for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome,</p><p>Saqib Jan</p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a><em>.</em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #47: Evan Williams on Why Experienced Developers Have the Hardest Time Learning Rust]]></title><description><![CDATA[On the borrow checker as a design tool, the object-oriented trap, and why the engineers who struggle most with Rust are often the most experienced ones]]></description><link>https://deepengineering.net/p/deep-engineering-47-why-experienced-developers-hardest-time-learning-rust</link><guid isPermaLink="false">https://deepengineering.net/p/deep-engineering-47-why-experienced-developers-hardest-time-learning-rust</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 14 May 2026 16:42:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/43a42d88-ec70-4d7f-8213-85796343b4f5_677x337.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.eventbrite.co.uk/e/eval-driven-development-for-engineers-tickets-1987673491921?aff=deepeng">Eval Driven Development for Engineers</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/eval-driven-development-for-engineers-tickets-1987673491921?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ogRK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!ogRK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!ogRK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!ogRK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ogRK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/eval-driven-development-for-engineers-tickets-1987673491921?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ogRK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!ogRK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!ogRK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!ogRK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e501442-5ce4-4dd6-b286-3b65f129b544_2160x1080.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This hands-on workshop teaches you to build reliable, production-ready AI systems using eval-driven development. Taught by <a href="https://www.linkedin.com/in/cloudanum/">Imran Ahmad</a>, Data Scientist and author of <em><a href="https://www.packtpub.com/en-us/product/50-algorithms-every-programmer-should-know-9781803246475?srsltid=AfmBOorcXTtocMMH1oL6pNvZ19CwHKuqSCqPVNf-C0khptLyBqafs9Dh">50 Algorithms Every Programmer Should Know</a></em>.</p><p>&#128467;&#65039; May 30 &#183; 11:00 AM &#8211; 3:30 PM ET </p><p style="text-align: center;">Use code <strong>EDD50</strong> for 50% off.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/eval-driven-development-for-engineers-tickets-1987673491921?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/eval-driven-development-for-engineers-tickets-1987673491921?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>47th</strong> issue of Deep Engineering!</p><p>Debian&#8217;s APT package manager is moving toward the Rust threshold its maintainers set more than six months ago. APT maintainer Julian Andres Klode<a href="https://lists.debian.org/debian-devel/2025/11/msg00188.html"> announced on the Debian developer mailing list</a> that hard Rust dependencies and Rust code would be introduced no earlier than May 2026, citing memory safety and stronger unit testing as reasons to move core parsing and signature-verification paths toward Rust and the Sequoia ecosystem. For a tool that underpins Debian, Ubuntu, and their many derivatives, this is not a marginal adoption story. It is Rust moving into infrastructure that enormous numbers of systems rely on every day.</p><p>That kind of decision does not get made because Rust is fashionable. It gets made because the language can shift whole classes of errors from production failures into compile-time constraints. That is precisely the argument <a href="https://www.linkedin.com/in/evan-williams-1512092">Evan Williams</a>, senior software engineer and author of <a href="https://www.packtpub.com/en-us/product/design-patterns-and-best-practices-in-rust-9781836209461">Design Patterns and Best Practices in Rust</a>, makes in this week&#8217;s issue. We spoke with Williams about what it actually takes to think in Rust, why the borrow checker is a design tool rather than a compiler obstacle, and why he found it harder to write bad Rust than good Rust when working on the book. You can <a href="https://deepengineering.substack.com/p/design-patterns-ownership-models-resilient-systems-rust-evan-williams">watch our interview or read the full Q&amp;A here</a>.</p><p>Let&#8217;s get started.</p><div><hr></div><h4 style="text-align: center;"><strong>Featured Newsletter: </strong><a href="https://www.devopsbulletin.com/">DevOps Bulletin</a></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vvSm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vvSm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vvSm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vvSm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vvSm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vvSm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png" width="313" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:313,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vvSm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vvSm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vvSm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vvSm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea1899b-2d52-43a6-adb8-ef38edd7ea42_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you work across DevOps, Cloud Native, AI and security and want a weekly read that surfaces the most relevant open-source tooling, stories, and insights in the space, <a href="https://www.devopsbulletin.com/">DevOps Bulletin</a> is worth adding to your reading list.</p><p><strong><a href="https://www.devopsbulletin.com/">Subscribe to DevOps Bulletin</a></strong></p><div><hr></div><p><strong>Expert Insights</strong></p><h2>Rust Makes It Harder to Write Bad Code Than Good Code</h2><p><em>by <a href="https://in.linkedin.com/in/s-jan">Saqib Jan</a> with <a href="https://www.linkedin.com/in/evan-williams-1512092">Evan Williams</a></em></p><p>Most engineers who struggle with Rust describe the same experience. The compiler rejects code that would compile without complaint in C++ or Java, and the borrow checker surfaces errors that feel arbitrary until, gradually, they start to feel like something else entirely. <a href="https://www.linkedin.com/in/evan-williams-1512092">Evan Williams</a>, author of <em><a href="https://www.packtpub.com/en-nz/product/design-patterns-and-best-practices-in-rust-9781836209461">Design Patterns and Best Practices in Rust</a></em> (Packt), has a precise name for what they are. They are design feedback, not feedback about syntax or style, but about the structure of the program itself, the shape of data flow, the discipline of ownership, and the decisions about who controls what and for how long. &#8220;Rust is your partner in doing that,&#8221; Williams says. &#8220;You can still write code with bugs in it, but Rust makes it harder to do that and easier to write code that&#8217;s going to be solid.&#8221;</p><p>That framing changes how to think about the borrow checker, and it changes how to think about what Rust actually is. Most languages make it easy to write code that works in isolation. Rust makes it hard to write code that fails in combination, and the difference matters more as systems grow.</p><h3>The borrow checker is enforcing design, not syntax</h3><p>Most engineers who pick up Rust treat borrow checker errors as obstacles to route around. The instinct is understandable because in Java or Python, the path from a failing compiler error to working code runs through adjustment: find what the compiler dislikes, change it, move on. Rust works differently, and engineers who apply the same strategy find that routing around the borrow checker is possible in the short term and damaging in the long term.</p><p>&#8220;The borrow checker is your friend because it prevents you from making a messy design. It prevents you from making a broken design. It prevents you from writing whole classes of bugs that you will then spend many hours trying to find,&#8221; Williams says. &#8220;I have found it to be an incredible partner in writing code that allows me to sleep at night.&#8221;</p><p>The reason the borrow checker behaves this way is structural. Java and Python allow data to be accessed from many places at once, which gives engineers flexibility but leaves the responsibility of managing that access entirely with the programmer. Rust removes that flexibility. A value has one owner. References are either shared and immutable or exclusive and mutable, never both at the same time. This constraint forces the programmer to be explicit about who owns what and when, because the compiler will not let the program proceed otherwise. The practical consequence is that programs which compile in Rust tend to have a quality that programs in other languages achieve only through discipline: their data flows are explicit. You can read a Rust program and understand, without running it, who controls which piece of state, when that control transfers, and what happens at the boundary.</p><p>&#8220;The principles that the borrow checker forces you to adhere to in Rust are the exact principles that you should be using in every programming language,&#8221; Williams reasons. &#8220;But you don&#8217;t have to. So it&#8217;s very easy to not think about those things.&#8221;</p><h3>The object-oriented trap</h3><p>The single most common mistake engineers make when getting started with Rust is treating it as an object-oriented language. It resembles one superficially, with structs, methods, and something that looks like encapsulation, but it has no inheritance, no abstract base classes, and no shared mutable state by default. An engineer who brings a Java or C++ mental model will find that the things they reach for instinctively are either unavailable or actively counterproductive.</p><p>&#8220;If you carry with you an object-oriented language mindset, then you&#8217;re going to have nothing but trouble,&#8221; Williams says. &#8220;The more experienced you are, the more years you have doing something in some other language, the more trouble you&#8217;re likely to have, because you have patterns of thought that come from those languages that you don&#8217;t even realize are there.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.packtpub.com/en-in/product/rust-for-c-developers-9781836206514" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1avs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1avs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1avs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1avs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1avs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg" width="317" height="391.3862815884477" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:277,&quot;resizeWidth&quot;:317,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Rust for C++ Developers: Leverage your C++ expertise to write safer and faster systems code in Rust&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.packtpub.com/en-in/product/rust-for-c-developers-9781836206514&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Rust for C++ Developers: Leverage your C++ expertise to write safer and faster systems code in Rust" title="Rust for C++ Developers: Leverage your C++ expertise to write safer and faster systems code in Rust" srcset="https://substackcdn.com/image/fetch/$s_!1avs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1avs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1avs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1avs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d048692-ae54-47fa-9dfa-9c28d2b605a0_277x342.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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"><strong><a href="https://www.packtpub.com/en-in/product/rust-for-c-developers-9781836206514">Rust for C++ Developers</a></strong></figcaption></figure></div><p>This is a precise observation about how expertise transfers, or fails to. An engineer with ten years in Java has a large inventory of solutions to common problems, and most of those solutions depend on inheritance, shared mutable references, or runtime polymorphism through interfaces. In Rust, none of those approaches work as expected. The patterns are not wrong in their original context. They are wrong for this one, and the difficulty is that the engineer applying them does not recognize the mismatch until the borrow checker makes it unavoidable.</p><p>The design patterns that experienced engineers carry into Rust need to be examined before use, not applied by default. Some evolve into new forms because Rust&#8217;s enums and advanced generics make several classical patterns either less necessary or unnecessary entirely. Others require fundamental rethinking. The Singleton pattern, useful enough in Java and Python that engineers reach for it without deliberation, tends to become either redundant or actively problematic in Rust. &#8220;In Rust, it tends to be either completely unnecessary because other features of the language make it unneeded, or it tends to encourage designs that are really not necessary and where a much better approach could be used,&#8221; Williams says.</p><p>The replacement for inheritance in most cases is traits, which provide polymorphism without the coupling that comes from sharing a class hierarchy. The discipline required to work with traits well is the same discipline the borrow checker enforces on data: think about the boundaries, be explicit about what crosses them, and design the structure before writing the code.</p><h3>Ownership as architecture</h3><p>The ownership model does more than prevent bugs at the function level. It shapes the architecture of the system, because the rules that apply to individual values apply at every level of scale. A program that handles data ownership correctly in a single function has to handle it correctly across modules, across threads, and across the boundaries between components. The borrow checker enforces this at compile time, which means architectural decisions that in other languages can be deferred until the system grows large enough to break start being made from the beginning.</p><p>&#8220;You need to think about who controls what, how it is controlled, and you need to start from the very beginning thinking about the boundaries of your program and the system architecture, dividing things up into areas of responsibility,&#8221; Williams says. &#8220;Because unlike Python or Java, you can&#8217;t have links going all over the place. The borrow checker is never going to accept that.&#8221;</p><p>This constraint produces a specific architectural tendency in well-written Rust systems: data flows in one direction. Rather than components that hold references to each other in a web of mutual dependency, Rust systems tend toward chains of ownership that move in one direction and do not loop back. &#8220;By saying, I have a chain of ownership that moves down but never moves back up, you are now much more likely to have a system that is going to work,&#8221; Williams says. &#8220;Data flowing down is something that feels natural and smooth and just works. Data trying to fight the stream back up is going to end up giving you problems because the borrow checker is not going to like you.&#8221;</p><p>The architectural benefit of this tendency is legibility as much as correctness. A system where data flows in one direction is a system where behavior is predictable from the structure, and debugging does not require reconstructing who might have modified a value and when, because the ownership model makes that history explicit. </p><p>Williams illustrates this with an <a href="https://www.packtpub.com/en-nz/product/design-patterns-and-best-practices-in-rust-9781836209461">example from his book</a>, a miniature publish-and-subscribe system built to resemble Kafka at a much smaller scale. &#8220;Because Rust has move semantics, you know that if something leaves here and goes here, it&#8217;s now not here anymore. It&#8217;s there. There&#8217;s no question about things like having references dangling or anything like that. The clarity of things moving through the system, the clarity of being able to have immutable data in a lot of places and knowing who can and can&#8217;t modify any piece of data, it just makes the design of the system so clear and it makes it so much harder to make a system that doesn&#8217;t work,&#8221; he says.</p><h3>The typestate pattern</h3><p>The most underutilized expression of this architectural discipline in Rust is one that Williams returns to with visible enthusiasm. The typestate pattern uses the type system to encode the state of a value at compile time in a way that makes invalid state transitions not just errors but programs that will not compile.</p><p>&#8220;It&#8217;s a way of developing state machines and systems that have state that evolves where invalid state transitions aren&#8217;t just errors, they&#8217;re impossible to write. The compiler won&#8217;t compile them,&#8221; Williams says. &#8220;It represents a huge advance in the way that such systems are written because now instead of runtime errors, you have a state machine that is guaranteed to work because every transition either is a valid transition or it won&#8217;t even compile. That&#8217;s an amazing thing.&#8221;</p><p>The typestate pattern was not invented for Rust, but the language&#8217;s ownership system and its handling of types make it practical in a way that other languages do not. The result is that a class of bugs that normally surfaces at runtime, invalid transitions through a state machine, surfaces instead at compile time, before the program runs. For systems where correctness is not optional, this is a material improvement. &#8220;Not invented for Rust, but it fits Rust so perfectly, it&#8217;s hard to believe it,&#8221; Williams says.</p><h3>What this requires in practice</h3><p>None of this comes without a cost. The discipline that Rust enforces at compile time is discipline that engineers have to supply at design time, and for teams moving from other languages the transition is genuinely difficult. Williams is specific about where the difficulty concentrates. Velocity drops during the learning period, often enough that teams take it as a signal that the decision was wrong, and it usually is not. &#8220;Once the team becomes very well acquainted with Rust, velocity can increase dramatically, but there is a period of time where it seems like things have gotten worse,&#8221; he says.</p><p>The answer for most teams is to start with a small, non-critical piece of work rather than a rewrite of an existing system, with the goal of building familiarity in a context where the cost of roadblocks is low and then expanding from there. &#8220;What you don&#8217;t want to do is jump into saying, we&#8217;re just going to rewrite our project in Rust now. Pick a small piece, focus on that, gain confidence and mastery of the language, and then use that to build upon it and start bringing in more things,&#8221; Williams says.</p><p>There are also cases where Rust is the wrong tool. Prototyping benefits from the flexibility that Python provides and that Rust does not. Environments where the tooling is incomplete are not the right place to fight the language and the Rust ecosystem, while growing rapidly, still has gaps where Java or C libraries are well established. User interfaces are the clearest current example. But in systems where failure is expensive, where correctness cannot be approximated, and where the code has to remain understandable as the team around it changes, Rust&#8217;s constraints are not a cost. They are the point.</p><h3>The harder thing to write</h3><p>The most revealing observation Williams made came not from a question about patterns or architecture but from the experience of writing the early chapters of his book, the ones about what not to do. He went back and tried to write bad Rust deliberately, the kind of code that would illustrate the mistakes he was cautioning against, and it was harder than he expected.</p><p>&#8220;When I went back and tried to write bad code in Rust, it was much harder than writing the good code,&#8221; Williams says. &#8220;That&#8217;s an interesting perspective that just didn&#8217;t even occur to me.&#8221;</p><p>That observation captures something important about what the language is doing. Rust is not just a language with a strict compiler. Its constraints push code toward a specific shape, one that is explicit about data flow, deliberate about ownership, and structured around clear boundaries of responsibility. The engineers who find Rust most difficult are often the engineers with the most experience, because they have the most deeply held instincts to unlearn. And the engineers who find it most rewarding tend to be the ones who stop treating the borrow checker as an obstacle and start reading it as design feedback. The language is not rejecting their code. It is asking them to think more clearly about what the code is actually doing.</p><div><hr></div><h3>In case you missed </h3><p><em>Here&#8217;s the full Q&amp;A with the interview video featuring Evan Williams.</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;140e7e87-c811-4a40-a09c-86b76c37b154&quot;,&quot;caption&quot;:&quot;Evan Williams has been writing software for more than 40 years, across every layer of the stack and more programming languages than most engineers will encounter in a career. He recently sat down with Deep Engineering to talk about what that shift requires, which traditional patterns break in Rust, the typestate pattern he finds almost impossible to stop talking about, and why he discovered it is harder to write bad Rust than good Rust.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Design Patterns, Ownership Models, and Building Resilient Systems in Rust with Evan Williams&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-13T18:07:20.569Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/-ElpmT7DCX4&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/design-patterns-ownership-models-resilient-systems-rust-evan-williams&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:197553608,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/rust-lang/rust-analyzer">rust-analyzer</a></strong> &#8212; Rust language server that provides IDE functionality for writing Rust programs.</p><p><strong>Highlights:</strong></p><ul><li><p>Surfaces Rust diagnostics, including ownership and borrow-checker errors from compiler checks, inline during editing.</p></li><li><p>Supports major LSP-compatible editors such as VS Code, Vim, Emacs, and Zed, with regular stable releases.</p></li><li><p>Widely used across the Rust ecosystem as the standard Rust IDE backend, including in workflows at organizations that build with Rust.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/rust-lang/rust-analyzer&quot;,&quot;text&quot;:&quot;Learn more about rust-analyzer&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/rust-lang/rust-analyzer"><span>Learn more about rust-analyzer</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://ubuntu.com/blog/dirty-frag-linux-vulnerability-fixes-available">Dirty Frag vulnerabilities disclosed in the Linux kernel</a> - Two CVEs in Linux ESP/IPsec and RxRPC components allow unprivileged local users to gain root on affected systems.</p></li><li><p><a href="https://lwn.net/Articles/1071776/">Linux 7.0.5 stable released with partial Dirty Frag fix</a> - Linux 7.0.5 ships a partial XFRM/ESP patch for Dirty Frag, with a second required fix still in development at release time.</p></li><li><p><a href="https://github.blog/changelog/2026-05-05-secret-scanning-with-github-mcp-server-is-now-generally-available/">GitHub secret scanning via MCP Server now generally available</a> - Credential scanning is now available in MCP-compatible coding agents before commits or pull requests, requiring GitHub Secret Protection to be enabled on the repository.</p></li><li><p><a href="https://www.neowin.net/news/linux-71-rc2-lands-as-ai-generated-patches-and-kvm-oddities-shake-up-the-kernel/">Linux 7.1-rc2 published</a> &#8212; KVM selftest renaming drove the unusual patch volume in rc2, with functional work covering driver and networking fixes throughout the tree.</p></li><li><p><a href="https://blogs.oracle.com/mysql/mysql-9-7-0-lts-is-now-available-expanded-community-capabilities-and-dynamic-data-masking-for-enterprise">MySQL 9.7.0 LTS generally available</a> - New MySQL LTS line ships the Hypergraph Optimizer in Community Edition, with Dynamic Data Masking remaining Enterprise-only in this release.</p></li></ul><div><hr></div><p></p><p>That&#8217;s all for today. Thank you so very much for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome, </p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p><p>Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and help grow our work.</p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #46: Jim Ledin on Modern Computer Architecture and the AI Infrastructure Layer]]></title><description><![CDATA[Memory bandwidth, GPU trade-offs, and the infrastructure decisions that determine whether AI systems are resilient up in production]]></description><link>https://deepengineering.net/p/issue-46-jim-ledin-computer-architecture-ai-infrastructure-layer</link><guid isPermaLink="false">https://deepengineering.net/p/issue-46-jim-ledin-computer-architecture-ai-infrastructure-layer</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 07 May 2026 15:03:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8adf3738-2898-4207-9a54-e3709b1e9c3c_850x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><a href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6">View the latest HubSpot Developer Platform updates in Spring Spotlight</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hxs6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 424w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 848w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png" width="728" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e807db93-d946-4468-b471-e473ec937fe7_1320x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1320,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Hxs6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 424w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 848w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>See what&#8217;s new for the <a href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6">HubSpot Developer Platform! </a></strong></p><p>Ship faster with AI coding tools like Cursor, Claude Code, and Codex. Build MCP-powered AI connectors, run serverless functions with support for UI extensions, and use date-based versioning to streamline roadmap planning.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6&quot;,&quot;text&quot;:&quot;Explore Updates&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6"><span>Explore Updates</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>46th</strong> issue of Deep Engineering!</p><p>This week, InfoQ analyzed what it actually took for <a href="https://www.infoq.com/news/2026/05/cloudflare-llm-infrastructure/">Cloudflare to run large language models efficiently on their global network</a>. The team built a custom inference engine called <a href="https://blog.cloudflare.com/cloudflares-most-efficient-ai-inference-engine/">Infire</a> from scratch in Rust, split model processing into two separate hardware stages because a single machine could not handle both efficiently, and compressed model weights by 15 to 22 percent to reduce what GPUs need to load and move during inference. The reason they had to do all of this is the same one that matters to every engineering team building AI systems: the hardware layer is not an abstraction you can ignore. It is the constraint that every other architectural decision is made around.</p><p>This pattern, where standard approaches to running AI workloads break down under real production constraints and the fix requires going back to the hardware layer, is one most engineering teams will eventually encounter. The engineers who avoid it are the ones who understood the hardware constraints before they started building, not after they hit them. Cloudflare&#8217;s <a href="https://blog.cloudflare.com/high-performance-llms/">engineering blog post</a> goes into the technical detail for teams who want to dig further.</p><p>This week we are featuring <a href="https://www.linkedin.com/in/jimledin">Jim Ledin</a>, CEO of <a href="https://ledin.com/">Ledin Engineering</a> and author of <a href="https://www.packtpub.com/en-us/product/modern-computer-architecture-and-organization-9781806028023">Modern Computer Architecture and Organization</a>, now in its third edition published by Packt. Ledin has over thirty years of experience working on embedded systems, safety-critical hardware, and cybersecurity. In this issue he breaks down what engineers building AI systems get wrong about the hardware layer and why it costs them.</p><p>Let&#8217;s get started.</p><div><hr></div><h3><a href="https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng">Architecting Production-Ready APIs for Agents</a></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TMPf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 424w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 848w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 1272w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TMPf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png" width="960" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!TMPf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 424w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 848w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 1272w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most API ecosystems were not built for autonomous agent usage. This hands-on masterclass covers governed API design, OpenAPI specifications, and multi-API workflow modelling with Arazzo so your platform stays predictable and safe under automated usage.</p><p><em><strong>2 FOR 1</strong> deal is also live. Bring a colleague free and learn how to design AI-ready, governed APIs</em></p><p style="text-align: center;">Use code <strong>DEEPENG50</strong> for 50% off. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p><strong>Expert Insights</strong></p><h2>Hardware Is Not Someone Else&#8217;s Problem </h2><p><em>by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;b6d1db25-f28c-44b6-b061-76c13060f148&quot;}" data-component-name="MentionToDOM"></span> with </em><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Jim Ledin&quot;,&quot;id&quot;:284339563,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:null,&quot;uuid&quot;:&quot;63f4d055-a492-421d-bb86-877ea9e10086&quot;}" data-component-name="MentionToDOM"></span></p><p>For most software engineers working in the cloud, hardware is an abstraction managed by someone else. You provision compute, write code, deploy, and pay the bill. What happens between the instruction and the silicon is not your concern. That assumption has always had a cost. In an AI-accelerated world, that cost is becoming visible in ways that are harder to ignore.</p><p>Jim Ledin, CEO of Ledin Engineering, has been working at the boundary where software meets silicon for over thirty years. His entry point into computer architecture was not a formal computer science curriculum. It was a Commodore 64, a joystick, and a drawing program so slow you could watch it move one pixel at a time.</p><blockquote><p>&#8220;That episode really cemented for me how important it is to understand what is going on in the hardware of a system, and not just write what you want to do in your favourite language,&#8221; Ledin reflects.</p></blockquote><p>He rewrote the inner loops of that drawing program in 6502 assembly, poking opcodes directly into memory, and the line shot across the screen faster than he could see. The lesson stayed with him across thirty years of embedded systems work, electric vehicle software, and cybersecurity testing on safety-critical hardware. Understanding what the hardware is actually doing is not an optimization exercise. It is the difference between software that works and software that works reliably under real constraints.</p><p>That distinction matters more now than it ever has, because the hardware layer is where most AI system performance problems actually live, and most of the engineers building those systems have never had to care about it before.</p><h3>Where the GPU consensus breaks down</h3><p>The idea that GPUs are the right architecture for AI workloads has become so widely accepted that most teams treat it as settled. Ledin&#8217;s view is more specific, and the specificity matters. For local and personal use, running models on a consumer GPU like an Nvidia RTX 4090, GPUs are the right choice. For large-scale deployments running the largest models, the picture is different.</p><p>The distinction comes down to what GPUs were actually designed to do. The &#8220;G&#8221; in GPU stands for graphics, and consumer GPUs still carry silicon dedicated to real-time video generation and gaming workloads. TPUs, by contrast, are built entirely around the tensor operations that dominate AI model processing. At least 80% of the execution time in a transformer-based model is matrix multiplications, and TPUs concentrate every transistor on exactly that work.</p><p>The more pressing constraint, though, is memory bandwidth. &#8220;AI workloads are becoming increasingly memory bandwidth limited. That means it is taking more time to bring data into the GPU or TPU memory than it is taking for the computation itself to complete,&#8221; Ledin explains.</p><p>This is the reason high-end AI systems use high bandwidth memory, or HBM, stacked RAM modules with far higher data rates than anything available on a consumer GPU. &#8220;It is also,&#8221; Ledin notes, &#8220;part of why DDR5 is becoming harder to find. Production capacity for memory is increasingly going into HBM modules for AI infrastructure rather than into consumer components.&#8221;</p><p>And so, for engineering teams choosing hardware for AI deployments, the implication is concrete: the GPU consensus is correct for a specific part of the problem space, and incomplete for the rest of it.</p><h3><strong>Data movement is the real cost</strong></h3><p>The performance conversation in AI engineering tends to focus on compute: cores, clock speed, parallelization. Ledin redirects it toward something that gets less attention and causes more problems.</p><p>&#8220;Data movement can often be more expensive than the actual computation steps. The latency of moving large data structures across different levels of the memory hierarchy can dominate and leave a lot of compute bandwidth idle,&#8221; he emphasizes.</p><p>This is not a new insight in systems engineering, but it is one that most application developers have never had to internalize because the abstractions they work with hide it. In a modern PC, reading a single byte from DRAM causes 64 bytes to be transferred into the CPU cache. If the code then bounces to other memory locations, causes those to be loaded into cache, and pushes that first block out, the next access to that original data requires fetching it again from DRAM. The latency compounds across every cache miss, and in AI workloads operating on large data structures, those misses accumulate fast.</p><p>The practical recommendation follows directly. Iterating across large data structures multiple times in an algorithm should be avoided wherever possible. Working through memory linearly, in a way that keeps recently accessed data in cache rather than evicting it, is the single most impactful optimization available to most AI system code. It does not require a new framework or a different hardware platform. It requires understanding what the hardware is doing with the data you give it.</p><p>In cloud environments, this understanding has a direct financial translation. &#8220;You are paying for the usage of the system whether the CPU is actually crunching instructions or sitting idle waiting for a data item to come in from memory,&#8221; Ledin warns. This is because inefficient memory access patterns do not just slow down a system. They inflate the bill for it.</p><h3>When abstraction becomes the problem</h3><p>Abstractions are one of the most effective tools available to software teams. They accelerate development, limit mistakes, and allow large teams to work on complex systems without every engineer needing to understand every layer. Ledin does not dispute any of this. His concern is more specific: abstractions that obscure hardware costs, in performance-critical applications, are not just unhelpful. They actively create risk.</p><p>&#8220;Where it becomes dangerous is when abstraction obscures what is happening with the data layout in memory and the execution patterns, basically how the processor is interacting with data as the algorithm proceeds,&#8221; he cautions.</p><p>The failure mode is not that abstractions break. It is that they make costs invisible until those costs produce an incident. An engineer works within an abstraction layer, the code looks correct at that level, and the performance problem lives underneath it in a layer the abstraction was designed to hide. By the time the problem surfaces in production, the context needed to diagnose it is buried.</p><p>Ledin&#8217;s recommendation is a two-layer design. Use the most expressive code at the edges of the system, where the abstractions are doing the most valuable work. Use performance-aware code in the core, where the hardware interaction is most consequential. The boundary between those layers is not fixed, and finding it requires benchmarking rather than intuition. But knowing the boundary needs to exist is the starting point. Teams that treat the expressive outer layer as the whole system tend to discover, under load, that the core was never designed for the hardware it runs on.</p><h3>The CPU versus GPU distinction, for engineers who have never had to care</h3><p>Most senior software engineers working today have built careers without ever needing to think about the difference between a CPU and a GPU. That is changing, and Ledin&#8217;s framing of the distinction is the most useful one available for engineers coming to it for the first time.</p><p>A CPU is optimized for low-latency execution of complex branching code. It is built to handle conditional logic, to predict branches and recover when predictions are wrong, and to minimize the latency cost of that work. A GPU is optimized for high-throughput execution of linear code across massively parallel workloads, and it works best when it is running the same instruction across thousands of data streams simultaneously with as little branching as possible.</p><p>The implication, therefore, for algorithm design is practical. &#8220;The GPU only really becomes attractive when you have enough work for it to do that it can be parallelised, and enough that it will amortise the costs associated with moving data onto the GPU, launching the kernels to execute the code, and doing the management work to transfer data to and from the GPU,&#8221; he points out.</p><p>That last point is the one most teams miss. A GPU is not a general purpose computer. It cannot run a program on its own. It needs to be started and managed from a CPU, and the overhead of moving data onto the GPU, scheduling the kernels, and moving results back is real. If the workload is not large enough and parallel enough to amortize that overhead, the CPU implementation wins, not because GPUs are slow, but because the cost of using them correctly exceeds the benefit for that specific workload.</p><p>Knowing where that line sits, for a specific algorithm running on specific hardware, is the kind of judgment that requires understanding what the hardware is actually doing. It cannot be read off from a benchmark or inferred from a framework&#8217;s documentation. It comes from the same place Ledin&#8217;s understanding came from: going one level deeper than the abstraction, and learning what happens when the instruction meets the silicon.</p><div><hr></div><h3>In case you missed </h3><p><em>Here&#8217;s the full Q&amp;A with the interview video featuring Jim Ledin.</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;17d0842b-96a6-4cfa-a547-e1dd0c21f97b&quot;,&quot;caption&quot;:&quot;Jim Ledin has been thinking about what happens between the instruction and the silicon for over thirty years.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Computer Architecture in an AI-accelerated World with Jim Ledin&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-06T18:15:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f371179-665a-4e1b-939b-ad7b5b50839d_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/computer-architecture-in-an-ai-accelerated-world&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:196755940,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>If the hardware layer argument resonates, the article below by <a href="https://www.linkedin.com/in/leejpeterson">Lee Peterson</a>, VP of Secure WAN Product Management at <a href="https://www.cisco.com/">Cisco</a>, covers the same constraint from the networking and distributed compute angle.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0c1e012e-2447-4eb9-aa91-095c03638118&quot;,&quot;caption&quot;:&quot;Artificial intelligence is entering a new phase with agentic AI, where autonomous systems perceive, decide, act, and learn without constant human oversight, operating independently across distributed environments while collaborating with other agents in real time.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Agentic AI Is Redefining Edge Infrastructure&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-03-25T18:13:57.493Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/280cd0a1-f0d5-42aa-8e78-90ac44439a30_1200x628.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/agentic-ai-is-redefining-edge-infrastructure&quot;,&quot;section_name&quot;:&quot;Thought Leadership&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:192122268,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/vllm-project/vllm">vLLM</a></strong> - high-throughput, memory-efficient inference and serving engine for large language models</p><p><em>Cloudflare referenced it as the baseline they benchmarked their custom Infire engine against when building hardware-optimized inference at scale.</em></p><p><strong>Highlights:</strong></p><ul><li><p>PagedAttention eliminates the memory waste that causes most GPU out-of-memory failures in production inference.</p></li><li><p>Continuous batching processes requests in a dynamic stream rather than static batches, keeping GPUs saturated under real load.</p></li><li><p>Disaggregated prefill/decode runs compute-bound and memory-bound stages on separate hardware for better throughput.</p></li><li><p>Supports tensor parallelism, FP8 and NVFP4 quantization across multi-GPU deployments.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/vllm-project/vllm&quot;,&quot;text&quot;:&quot;Learn more about vLLM&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/vllm-project/vllm"><span>Learn more about vLLM</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://www.theregister.com/2026/05/03/inference_is_giving_ai_chip/">Inference gives AI chip startups a second chance</a> - Disaggregated inference, splitting prefill and decode across purpose-built silicon, is making GPU-only inference architectures look like the wrong default for large-scale production deployments.</p></li><li><p><a href="https://openai.com/index/mrc-supercomputer-networking/">OpenAI releases MRC for AI training networks</a> - OpenAI&#8217;s MRC shows frontier training now depends on failure-tolerant network design, making the interconnect layer a first-class engineering constraint rather than an infrastructure afterthought.</p></li><li><p><a href="https://claude.com/blog/claude-security-public-beta">Anthropic opens Claude Security public beta</a> - Claude Security moves vulnerability scanning closer to code review, triage, and patch creation, shifting security work earlier into the engineering workflow rather than treating it as a downstream audit step.</p></li><li><p><a href="https://workspaceupdates.googleblog.com/2026/05/agent-tools-and-security-updates-for-workspace-developers.html">Google opens Workspace MCP server preview</a> - Google is turning enterprise agents into a governed API and access-control problem, with MCP making the boundary between agent capability and enterprise data policy the next infrastructure challenge for platform teams.</p></li><li><p><a href="https://github.com/vllm-project/vllm/releases">vLLM v0.20.1 ships with DeepSeek V4 stabilization and FP4 improvements</a> - The patch release stabilizes DeepSeek V4 serving and improves FP32-to-FP4 conversion speed.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome, </p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p><p>Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and help grow our work.</p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #45: Francesco Ciulla on Building Production Systems in Rust Without the Expensive Rewrite ]]></title><description><![CDATA[Memory safety, the borrow checker as your most patient teacher, and how to introduce Rust without the disruptive migration project that puts teams off]]></description><link>https://deepengineering.net/p/issue-45-francesco-ciulla-building-production-systems-rust-without-rewrite</link><guid isPermaLink="false">https://deepengineering.net/p/issue-45-francesco-ciulla-building-production-systems-rust-without-rewrite</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 30 Apr 2026 16:32:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6e29b888-c64d-4029-96f3-08e45522d077_656x375.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><a href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6">View the latest HubSpot Developer Platform updates in Spring Spotlight</a></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hxs6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 424w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 848w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png" width="717" height="358.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e807db93-d946-4468-b471-e473ec937fe7_1320x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1320,&quot;resizeWidth&quot;:717,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Hxs6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 424w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 848w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Hxs6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe807db93-d946-4468-b471-e473ec937fe7_1320x660.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>See what&#8217;s new for the <a href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6">HubSpot Developer Platform! </a></strong></p><p>Ship faster with AI coding tools like Cursor, Claude Code, and Codex. Build MCP-powered AI connectors, run serverless functions with support for UI extensions, and use date-based versioning to streamline roadmap planning.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6&quot;,&quot;text&quot;:&quot;Explore Updates&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.vpdae.com/redirect/oxmujewa9r6jmrhyz62em0cftb6"><span>Explore Updates</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>45th</strong> issue of Deep Engineering!</p><p>The<a href="https://www.tiobe.com/tiobe-index/"> TIOBE Index for April 2026</a> puts Rust at number 16, up from 18 last year. While the community widely expected it to break into the top 10, that momentum has slowed. TIOBE attributes this to adoption friction, noting that broader mainstream uptake has proven harder to achieve than the language&#8217;s early trajectory suggested.</p><p>The institutional picture, however, tells a different story. The<a href="https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/4223298/nsa-and-cisa-release-csi-highlighting-importance-of-memory-safe-languages-in-so/"> NSA and CISA issued joint guidance in June 2025</a> urging organisations to adopt memory-safe languages for national security systems and critical infrastructure.<a href="https://security.googleblog.com/2025/11/rust-in-android-move-fast-fix-things.html"> Google&#8217;s Android security team </a>reported that memory safety vulnerabilities, which accounted for 76% of Android bugs in 2019, fell below 20% for the first time in 2025 after the team prioritised writing new code in memory-safe languages.</p><p>The Linux kernel maintainers also made <a href="https://thenewstack.io/rust-goes-mainstream-in-the-linux-kernel/">Rust permanent</a>, making it a core part of the kernel. The argument about whether memory-safe systems programming languages belong in production is settled at the institutional level. The harder argument, therefore, is how engineering teams adopt it without the expensive, disruptive projects that give the language an undeserved reputation for being hard to introduce.</p><p><a href="https://it.linkedin.com/in/francesco-ciulla-roma/en">Francesco Ciulla</a>, author of <a href="https://www.packtpub.com/en-us/product/the-rust-programming-handbook-9781836208860">The Rust Programming Handbook</a> and head of developer relations at <a href="https://zerops.io/">Zerops</a>, directly challenges that perception. His framework starts not with the language&#8217;s strengths but with the one service in your system where Rust would make an undeniable, measurable difference. That is what this issue covers.</p><p>Let&#8217;s get started.</p><div><hr></div><h3><a href="https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng">Architecting Production-Ready APIs for Agents</a></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TMPf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 424w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 848w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 1272w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TMPf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png" width="960" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!TMPf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 424w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 848w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.png 1272w, https://substackcdn.com/image/fetch/$s_!TMPf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6d1f4f-46df-4942-b020-8b23edfc5c39_960x480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most API ecosystems were not built for autonomous agent usage. This hands-on masterclass covers governed API design, OpenAPI specifications, and multi-API workflow modelling with Arazzo so your platform stays predictable and safe under automated usage.</p><p><em><strong>2 FOR 1</strong> deal is also live. Bring a colleague free and learn how to design AI-ready, governed APIs</em></p><p style="text-align: center;">Use code <strong>DEEPENG50</strong> for 50% off. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng&quot;,&quot;text&quot;:&quot;Register here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.eventbrite.co.uk/e/architecting-production-ready-apis-for-agents-tickets-1986966927568?aff=deepeng"><span>Register here</span></a></p><div><hr></div><p><strong>Expert Insights</strong></p><h2>Rust Does Not Need to Replace Your Stack to Make It Better</h2><p><em>by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;b6d1db25-f28c-44b6-b061-76c13060f148&quot;}" data-component-name="MentionToDOM"></span> with <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Francesco Ciulla&quot;,&quot;id&quot;:11407185,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8c30606-10ba-4c87-a89b-af2f9dc27a01_400x400.jpeg&quot;,&quot;uuid&quot;:&quot;cb0919f2-0c70-4b1f-8f6d-f4d5565d29c3&quot;}" data-component-name="MentionToDOM"></span> </em></p><p>Every engineering team that considers Rust tends to circle the same concerns. The language is difficult to learn, expensive to adopt, and more practically useful to systems programmers than to the teams building and running services at scale.</p><p><a href="https://www.linkedin.com/in/francesco-ciulla-roma">Francesco Ciulla</a>, author of <a href="https://www.amazon.in/Rust-Beginner-Professional-practical-proficient/dp/1836208871">The Rust Programming Handbook</a>, Docker Captain and head of developer relations at <a href="https://zerops.io/">Zerops</a>, says, "I've heard that conversation many times, and my response has always been that the framing is wrong from the start."</p><p>Ciulla has been building with Rust since 2022, has spoken about it internationally at conferences, and his perspective on Rust adoption is shaped less by enthusiasm for the language and more by a practitioner&#8217;s view of where it actually earns its place in a production system. That starting point matters, he says, because the teams that struggle with Rust adoption tend to start from the wrong question.</p><h3><strong>A joke that contains a kernel of truth</strong></h3><p>People in the Rust community have long joked about rewriting everything in Rust, and the memes around it have become something of a cultural shorthand for over-enthusiastic adoption. Like most good jokes, Ciulla acknowledges, it contains a kernel of truth. But the practical lesson is the opposite of what it implies. &#8220;The best way to introduce Rust in a big project is to find that hard part that is slowing things down, the bottleneck of all your services, and try to write one single service in Rust.&#8221; The rewrite everything instinct is how adoption projects become expensive and difficult to justify. The bottleneck-first instinct is how teams get a proof of concept that demonstrates real value before committing to anything broader.</p><p>The practical implication is that the adoption decision is not a language decision at the organizational level. It is an engineering decision at the service level. The question is not whether the organization should adopt Rust. The question is whether there is one service in the system that is slow, resource-intensive, or difficult to keep stable, where the properties Rust offers would make a measurable difference. If that service exists, it is the right place to start. If it does not, the case for introducing Rust at all is weaker than it might appear.</p><p>Ciulla&#8217;s production experience makes this concrete. Running a Rust web server on his own machine, he shared during our conversation that it used four megabytes of RAM in development and five in production. On a one-gigabyte droplet, that means more than 200 services running simultaneously in idle. That number is the kind of resource profile that changes what is economically viable to deploy, and it is the kind of argument that lands differently with an ops team than a language comparison ever could.</p><h3><strong>Flat latency is a real engineering argument</strong></h3><p>One of the most underappreciated technical arguments for Rust in production systems is not about speed in the raw throughput sense. It is about predictability. Languages that rely on garbage collection, including Go, Java, and Node.js, introduce periodic pauses when the collector runs. Those pauses can last hundreds of milliseconds. An HTTP request that arrives during a GC cycle experiences higher latency than one that does not. The user on the receiving end did not do anything differently. They were just unlucky.</p><p>Ciulla is candid about what this means in practice. &#8220;By not having a garbage collector on the back end side, you basically have flat latency. You don&#8217;t rely on luck, or on the user not being the unlucky one. It&#8217;s a problem that is removed.&#8221; For most web applications running at moderate scale, this distinction is invisible. For services with strict latency requirements, high concurrency, or SLAs that depend on consistent tail latency rather than average response time, it is one of the more significant architectural arguments available.</p><p>This connects to a broader point about where Rust earns its place and where it does not. The resource efficiency and latency predictability are not arguments for using Rust everywhere. They are arguments for using Rust in the specific services where those properties matter. A service that scrapes a website once a month does not need flat latency. A service handling a million concurrent users does. Knowing the difference is what separates a good adoption strategy from an expensive experiment.</p><h3><strong>Rust, when it is the wrong choice</strong></h3><p>Ciulla is honest about the cases where Rust is not the right tool, which is part of what makes his advocacy for it credible. If a team needs something simple and the deadline is tomorrow, Rust is probably the wrong choice. If a developer needs a working API by the end of the day and has no Rust experience, this is not the moment to start learning the language under delivery pressure. &#8220;When you need something simple, and you&#8217;re familiar already with Java or JavaScript, why don&#8217;t you use it?&#8221; The question is not rhetorical. It is the right question to ask before any technology adoption decision.</p><p>The ecosystem argument is also honest. Python has better libraries for data science. JavaScript has a larger package ecosystem for certain kinds of web work. Rust integrates well with other languages, but if what a team needs is native to another ecosystem, that is a real constraint rather than a preference. Good engineers use the right tool for the problem. The case for Rust is strongest when the problem involves performance, memory efficiency, or concurrency at a level where other languages start showing their limits.</p><h3><strong>The shepherd principle</strong></h3><p>One of the more practical observations Ciulla makes about organizational adoption is about knowledge rather than tooling. The bottleneck to Rust adoption at scale is rarely the language itself. It is whether the organization has someone who knows it deeply enough to validate the work being done in it. He draws the parallel to Docker adoption at the European Space Agency, where he worked and observed the tool move slowly not because of anything wrong with Docker, but because it was not well understood internally. The technology is never the problem, he points out. The knowledge is.</p><p>&#8220;You need the validation of an expert,&#8221; Ciulla says. In the era of AI-accelerated development, this point is sharper than it has ever been. Teams can now generate Rust code with AI assistance far faster than their ability to validate it has grown. That gap between generation speed and validation depth is where production incidents come from. Having at least one engineer on the team who understands the ownership model, the borrow checker, and the concurrency primitives well enough to review what the AI produces is not a nice-to-have. It is the thing that determines whether the Rust service is a genuine improvement or a liability waiting to surface.</p><h3><strong>Concurrency without the trauma</strong></h3><p>Most engineers who have worked with concurrency in Java or C++ carry a specific kind of wariness about it. The mental model for concurrency in older languages is that it is an advanced topic requiring extra care, specialized libraries, and a heightened awareness of race conditions and deadlocks. Ciulla describes learning concurrency in Java at university as the final, difficult session of the course, something treated as inherently dangerous and saved for the end of the degree.</p><p>His first attempt at a concurrency example in Rust produced the opposite experience. &#8220;When I had to teach concurrency in Rust in a YouTube video, I made an example in three minutes. I was done. I say okay, the basic example really lasted like two or three minutes because you just declare a couple of threads and literally done.&#8221; That experience reflects something structural about how Rust was designed. The language was created after multi-core processors were already standard. Concurrency was not retrofitted onto a model designed for single-threaded execution. It was built in from the start, and the ownership system that prevents data races at compile time is the same ownership system that governs memory safety everywhere else in the language. There is no separate concurrency model to learn. The properties that make Rust memory safe are the same properties that make concurrent code safe.</p><p>For teams building services that need to use available CPU resources efficiently, this is not a minor ergonomic improvement. It means that the gap between writing concurrent code and writing correct concurrent code is substantially smaller in Rust than in the languages most engineers have used before. The cost of concurrency, measured in debugging time and production incidents rather than lines of code, is genuinely lower.</p><h3><strong>The compiler is the most patient teacher on your team</strong></h3><p>The reputation Rust has for being difficult to learn is real, and Ciulla does not dismiss it. But his explanation for where the difficulty actually comes from is different from the common framing. The problem is not that the concepts are inherently harder than those in other languages. It is that Rust forces you to unlearn patterns that other languages allowed. Engineers who have spent years in C++ or JavaScript carry assumptions about how memory works, how mutability is managed, and what the runtime will silently fix for them. Rust does not fix those things silently. It surfaces them at compile time and requires you to address them explicitly before the code runs.</p><p>That shift in where the pain lands is the key insight. &#8220;Rust is not hard to learn,&#8221; Ciulla says. &#8220;It&#8217;s different. And this is how we should advocate for it.&#8221; The difficulty is front-loaded by design, because the language makes a deliberate trade of more friction during development in exchange for fewer failures in production. Teams that have spent significant time debugging null pointer exceptions, race conditions, or memory leaks in production understand this trade intuitively. The hours lost to a null pointer exception in production dwarf the hours spent fighting the borrow checker upfront.</p><p>The Rust compiler, which is the primary source of that upfront friction, is also the primary teaching tool the language provides. Error messages in Rust are unusually detailed and specific. They do not just tell you that something is wrong. They explain what rule was violated, show the relevant code, and often suggest a fix. Ciulla describes the compiler as a teacher rather than a gatekeeper, one that overcommunicates in the same way a good mentor does. &#8220;The errors in Rust are basically tutorials. They are helping you to write better code.&#8221; For teams introducing Rust to engineers who have not used it before, this property matters practically. The compiler is doing a significant part of the knowledge transfer work that would otherwise fall on the senior Rust engineer on the team.</p><h3><strong>Rust in the Linux kernel is paying off</strong></h3><p>The decision by the Linux kernel maintainers to not only allow Rust in the kernel but to plan for components that require it going forward is the kind of institutional endorsement the language community has been waiting for. Ciulla frames it clearly. Even if the experiment had failed, just the fact that Rust was considered a viable option for kernel-level work would have been a meaningful milestone. The language was competing in a domain that had been exclusively C and C++ territory for decades, and it earned a permanent place there.</p><p>For engineering leaders tracking where the industry is moving, this matters beyond the kernel itself. Government systems, military applications, and other security-critical domains are beginning to treat Rust as a default rather than an experiment. &#8220;Rust is slowly getting adopted at bigger and bigger levels,&#8221; Ciulla says. The adoption curve is not linear, but the direction is consistent. Teams that build internal expertise now are not chasing a trend. They are positioning ahead of a transition that is already underway in the most demanding environments in the industry.</p><h3><strong>The ecosystem argument is changing</strong></h3><p>One of the historically valid objections to Rust for web development was tooling maturity. Two years ago, Ciulla would not have committed to shipping a production SaaS product in Rust. Today he would, and the reason is specific rather than general. The <a href="https://docs.rs/axum/latest/axum/">Axum framework</a> has matured to the point where it is a production-grade choice for web APIs, and the broader ecosystem around async Rust has improved substantially. &#8220;In 2026, I will use it,&#8221; he says of building a paid product with Rust as the backend, dropping the qualification he would have applied even a year earlier.</p><p>The toolchain story is also one of Rust&#8217;s genuine advantages for teams evaluating the full cost of adoption. <a href="https://doc.rust-lang.org/cargo/">Cargo</a> handles dependency management, building, testing, and documentation in a single integrated tool. There is no equivalent of the npm versus yarn versus pnpm decision that teams arriving to JavaScript have to navigate before writing a single line of code. Running tests is cargo test. The integration is native to the language, not an ecosystem of competing choices layered on top of it. For teams that have spent time debugging JavaScript build configurations, this is not a small thing.</p><h3><strong>Rust in the AI accelerated development era</strong></h3><p>Ciulla makes an argument about Rust and AI that is worth sitting with. The claim is not that Rust is better for writing AI applications, though he has views on that too. The claim is that Rust may be one of the best languages to work in during the current period of AI-assisted development, specifically because of what it requires from the engineer reviewing AI-generated code.</p><p>When AI writes Rust code, the engineer validating it still has to understand ownership, borrowing, and the type system well enough to know whether the generated code is correct. The compiler will catch a large category of errors, but the human reviewer still needs to understand why the compiler is happy with a piece of code before shipping it. &#8220;If you have no control, either you are useless or you cause a problem. So in both cases, it&#8217;s not a good time for you.&#8221; That discipline, the requirement to understand what the code actually does rather than just accepting output that compiles, is not a burden unique to Rust. But it is more explicitly enforced by the language than in most alternatives, and that enforcement is valuable at a moment when the volume of AI-generated code is increasing faster than the average team&#8217;s ability to review it carefully.</p><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/bahdotsh/wrkflw">wrkflw</a></strong> &#8212; open-source tool for validating and running GitHub Actions locally</p><p>wrkflw lets you validate and execute GitHub Actions workflows on your local machine before pushing, catching configuration errors and pipeline failures before they reach CI. Version 0.8.0 shipped this week. Built in Rust.</p><ul><li><p>Validates GitHub Actions workflow syntax locally before pushing to CI</p></li><li><p>Runs multi-step jobs and matrix builds without cloud dependency</p></li><li><p>Fast startup and low resource overhead from Rust&#8217;s binary compilation model</p></li><li><p>Catches pipeline failures early, reducing the feedback loop between code and CI</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/bahdotsh/wrkflw&quot;,&quot;text&quot;:&quot;Learn more about wrkflw&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/bahdotsh/wrkflw"><span>Learn more about wrkflw</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://www.ghacks.net/2026/04/13/linux-7-0-released-with-official-rust-support-and-new-code-for-sparc-and-alpha-cpus/">Linux 7.0 ships with Rust as an official core kernel language</a> - Rust loses its experimental tag in Linux 7.0, reaching full parity with C for kernel development after the Linux Kernel Maintainers Summit decision in December 2025.</p></li><li><p><a href="https://blog.rust-lang.org/2026/04/16/Rust-1.95.0/">Rust 1.95.0 released</a> - The latest stable release introduces <code>cfg_select!</code>, a compile-time macro for conditional configuration, and removes unstable support for custom target specifications on stable toolchains.</p></li><li><p><a href="https://blog.rust-lang.org/inside-rust/2026/04/17/crates-io-svelte-public-testing/">crates.io opens new Svelte-based frontend for public testing</a> - The Rust team invites the community to test the rebuilt crates.io frontend ahead of the planned production migration.</p></li><li><p><a href="https://github.com/rust-lang/cargo/pull/16796">Cargo stabilises build.warnings configuration</a> - The build.warnings field is now stable, giving teams a standardised way to configure compiler warning behaviour across workspace builds.</p></li><li><p><a href="https://zed.dev/blog/zed-1-0">Zed 1.0 ships</a> - The Rust-built code editor reaches stable release with GPU-accelerated rendering, real-time collaborative editing, Git integration, and native AI assistant support across macOS, Windows, and Linux.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome, </p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p><p>Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and help grow our work.</p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #44: Sándor Dargó on C++26, Adoption Traps, Compiler Gap, and Maintainability]]></title><description><![CDATA[On C++26 adoption decisions, the fallback plan most teams skip, what the compiler gap costs in practice, and keeping large C++ systems maintainable]]></description><link>https://deepengineering.net/p/issue44-cpp-26-adoption-traps-compiler-gaps-maintainability</link><guid isPermaLink="false">https://deepengineering.net/p/issue44-cpp-26-adoption-traps-compiler-gaps-maintainability</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 23 Apr 2026 16:31:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/efb9ba36-137d-4762-93d8-c394bc1fe4da_681x277.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><a href="https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tickets-1978960034736?aff=deepeng">Building an AI-Powered Internal Developer Platform from Scratch</a></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tickets-1978960034736?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X-O7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X-O7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tickets-1978960034736?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!X-O7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Hone your skills to design, implement, and ship an AI-powered internal developer platform from scratch with <a href="https://www.linkedin.com/in/chankramath/">Ajay Chankramath</a>.</p><p>&#128197; <strong>25th</strong> and <strong>26th</strong> April 2026 | <strong>11:00 AM</strong> to <strong>3:00 PM</strong> ET</p><p>Use code<strong> DEEPENG50 </strong>for<strong> 50% off, </strong>or grab the<strong> 2-for-1 </strong>deal</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tick%E2%80%A6&quot;,&quot;text&quot;:&quot;Register now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tick%E2%80%A6"><span>Register now</span></a></p><p><em>Includes access to <a href="https://www.packtpub.com/en-us/product/the-platform-engineers-handbook-9781806380121">The Platform Engineer&#8217;s Handbook</a> by Ajay Chankramath upon release (eBook worth $35.99)</em></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>44th</strong> issue of <em><strong>Deep Engineering</strong>!</em></p><p><a href="https://www.infoq.com/news/2026/04/cpp-26-reflection-safety-async/">C++ just had its most consequential standard in years finalized</a>. Contracts and static reflection are expected after a decade of committee work, and the async execution model is in. This has the conference circuit energised, blog posts are multiplying, and most production teams are continuing to ship C++17 or C++20 while they wait for compiler support to catch up and patterns to settle.</p><p>The ISO C++ Foundation also opened its<a href="https://isocpp.org/blog/2026/04/2026-annual-cpp-developer-survey-lite1"> 2026 annual developer survey</a> this week, the single biggest opportunity the global C++ community gets each year to tell the standards committee and tooling vendors what actually matters in practice. If you write C++ at any scale it is worth ten minutes of your time before it closes next week.</p><p>This week we are featuring <a href="https://www.linkedin.com/in/sandor-dargo/">S&#225;ndor Darg&#243;</a>, senior software engineer at <a href="https://engineering.atspotify.com/about">Spotify</a>, on what responsible C++26 adoption decisions should look like in production, what most teams get wrong, why fallback plans need to be on every adoption checklist, and what the gap between a finalized standard and a production system actually costs. The feature is based on our live interview with him and you can watch or read the full Q&amp;A<a href="https://deepengineering.substack.com/p/clean-c-code-and-the-hidden-cost"> here</a>.</p><blockquote><p>Darg&#243; also spoke at length in that session about clean code, cognitive load, and what it actually costs teams to optimize for the wrong things. We have collated those insights alongside our previous conversation with <a href="https://uk.linkedin.com/in/morleys90">Sam Morley</a>, mathematician and C++ researcher at the <a href="https://www.maths.ox.ac.uk/">University of Oxford</a>, into this separate piece &#8220;<a href="https://deepengineering.substack.com/p/clean-code-trap-decompose-for-performance-physics">Clean Code Is a Trap, Decompose Instead for Physics and Performance</a>&#8221; published this week.</p></blockquote><p>Let&#8217;s get started.</p><div><hr></div><h4>View the latest <a href="https://www.vpdae.com/redirect/u3qwp467xevuba5rxtpp16lir2u">HubSpot Developer Platform</a> updates in Spring Spotlight</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.vpdae.com/open/28773e7b.gif?opens=1" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9x1C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 424w, https://substackcdn.com/image/fetch/$s_!9x1C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 848w, https://substackcdn.com/image/fetch/$s_!9x1C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 1272w, https://substackcdn.com/image/fetch/$s_!9x1C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9x1C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png" width="467" height="237.34588235294117" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:216,&quot;width&quot;:425,&quot;resizeWidth&quot;:467,&quot;bytes&quot;:142277,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.vpdae.com/open/28773e7b.gif?opens=1&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://deepengineering.substack.com/i/195242079?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.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_!9x1C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 424w, https://substackcdn.com/image/fetch/$s_!9x1C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 848w, https://substackcdn.com/image/fetch/$s_!9x1C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 1272w, https://substackcdn.com/image/fetch/$s_!9x1C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c477a6-ed05-42d2-ad4c-7e8cecf8c781_425x216.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>See what&#8217;s new for the <strong><a href="https://www.vpdae.com/redirect/u3qwp467xevuba5rxtpp16lir2u">HubSpot Developer Platform</a></strong>! </p><p>Ship faster with AI coding tools like Cursor, Claude Code, and Codex. Build MCP-powered AI connectors, run serverless functions with support for UI extensions, and use date-based versioning to streamline roadmap planning.</p><p><strong>Check </strong>&#8594;<strong> <a href="https://www.vpdae.com/redirect/u3qwp467xevuba5rxtpp16lir2u">HubSpot Developer Platform</a></strong></p><div><hr></div><h2>Most C++ Teams Get Feature Adoption Wrong, and What the Pragmatic Ones Do Differently</h2><p><em>by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;009808d6-9a61-4f08-bf0d-ba6566a6b426&quot;}" data-component-name="MentionToDOM"></span> with <a href="https://www.linkedin.com/in/sandor-dargo/">S&#225;ndor Darg&#243;</a></em></p><p>C++26 is heading to its final approval ballot. Contracts and static reflection are expected. The feature set is the largest the language has seen in years, and the C++ community is already deep into discussing what it means. And yet, while they wait for compiler support to catch up and patterns to settle, engineering teams are starting to ask how to prepare for when they can actually ship it.</p><p>That gap between what the standard says and what teams can actually ship is not a failure of ambition, but the normal condition of C++ in production. It has looked roughly the same across every major standard transition for the past fifteen years. &#8220;The engineering teams that navigate it well have learned to keep understanding and adoption on separate timelines,&#8221; says S&#225;ndor Darg&#243;, senior software engineer at Spotify. &#8220;It serves well to invest deeply in knowing a feature years before you need to ship it, because conflating the two is where most adoption mistakes gain foothold.&#8221;</p><p>Darg&#243; has a different set of questions he likes to ask first. His framework is intentional and straightforward. The feature set is not the starting point. What matters is whether the team can live with the code a year from now, when the engineer who introduced it has moved on and compiler support is still uneven across platforms. Proven and maintainable is not playing it safe. It is what keeps production systems running while the language moves underneath them.</p><p>At Spotify, where he works on large-scale C++ systems with a hard requirement that the code stays clean, maintainable, and operable over time. He has observed teams navigate standard transitions from C++11 through C++23, and the pattern he sees repeat is always the same one. &#8220;Teams focus on what the standard says, and they underestimate the distance between the standard and the compiler, between the compiler and the toolchain, and between the toolchain and the production system that has to run reliably when all of this settles,&#8221; he said. &#8220;Everyone is talking about contracts and reflection. That&#8217;s going to change everything. I&#8217;m not sure about the time scale though. If you look at C++23 support right now, even that is not complete yet, especially if you look at the differences across compilers. You go on cppreference, check what&#8217;s implemented on which compiler, and we are simply not there yet.&#8221;</p><p>That observation shapes everything that follows in Darg&#243;&#8217;s approach to feature adoption, and it is worth understanding precisely what he means by it.</p><h3>The gap between the standard and the production system</h3><p>The C++ standard finalizes on a schedule. Compiler vendors implement on a different one, and they do not always agree on approach, especially for genuinely new features that require significant infrastructure rather than incremental additions. Small library extensions arrive with almost no implementation lag because compilers already have the machinery to support them. But contracts and reflection are not small library extensions. Both require compilers to build something they have never built before, and different vendors will make different choices along the way, as they did with modules in C++20.</p><p>Darg&#243; cited modules in our <a href="https://deepengineering.substack.com/p/clean-c-code-and-the-hidden-cost">live interview</a> as the clearest recent example of how this plays out in practice. Vendors diverged, build system integration took years to stabilize, and teams that moved early discovered that the standard&#8217;s guarantees did not insulate them from the fragmentation that came from uneven implementation across compilers. &#8220;There might be a bigger gap, just like we saw with C++20 modules. I hope it won&#8217;t be that problematic. But I don&#8217;t think I&#8217;ll be able to use those in a production environment in the next one or two years.&#8221; Darg&#243;, drawing on his years of engineering experience leading high-velocity teams at Spotify, a company with engineering resources that most teams do not have. If Darg&#243; is not planning to ship contracts or reflection to production in the next two years, the average multi-platform C++ team operating with a mixed compiler pipeline and a long-lived codebase should be thinking in similar terms.</p><p>This does not mean the features are not worth understanding. It means the time horizon for understanding and the time horizon for shipping are different, and most adoption conversations conflate the two.</p><h3>Cautious is not the same as resistant</h3><p>Darg&#243;&#8217;s posture toward new features is not skepticism. It is a more specific kind of discipline that he applies before any adoption decision, and it comes down to two distinct questions that most teams skip. The first is whether the usage pattern is proven in a production environment with real operational constraints, not in a blog post or a conference demo. The second is whether the feature actually solves a problem in the specific codebase, rather than just offering a more modern way to write something that was already working. &#8220;If they only bring a different syntax, that&#8217;s not really good. If they actually solve a problem in your codebase, in your use case, then it&#8217;s good. And let&#8217;s discuss why and how that&#8217;s the right solution.&#8221;</p><p>The distinction between a genuinely useful adoption and a syntactic upgrade matters more than most teams want to admit, because every feature adoption comes with a cost that does not appear in the initial pull request. The team has to understand the feature well enough to review code that uses it, to debug it when it breaks, and to maintain it when the engineer who introduced it has moved to a different team. &#8220;You cannot just push the new way of coding. You should share the knowledge and discuss what these new features actually bring. Deep down, everyone wants to learn about these things, and we all want to start using them as soon as possible.&#8221; Darg&#243; acknowledges that impulse is not wrong. But the enthusiasm of the early adopter on the team and the readiness of the rest of the team to live with the decision are two different things, and adoption decisions that ignore the second tend to create the kind of complexity that shows up as maintenance debt two years later.</p><h3>No one puts the fallback plan on the checklist</h3><p>The most operationally concrete principle Darg&#243; applies to feature adoption is also the one that almost no team&#8217;s adoption checklist includes. Before shipping code that uses a new compiler feature, make sure you can roll back the compiler version without having to change the code. This constraint is not about being conservative for the sake of it. It is about what happens when a compiler update introduces a regression or a new feature behaves differently than expected on a specific platform, and the fastest path to stability is to revert the compiler version rather than to fix the code.</p><p>Darg&#243; walked through the alternative. &#8220;Move to a new version, start using concepts from C++20, and then in two weeks they say there&#8217;s a problem, we must go back. And then you realize it&#8217;s not just updating the compiler version, you actually have to change the code.&#8221; At that point the team is no longer choosing between a rollback and a fix. They are choosing between a broken build and a risky code change under pressure, and neither is a good position to be making decisions from. The fallback plan requirement changes how the team thinks about adoption from the start because it sets a concrete constraint on which features can be used and how deeply they can be integrated before the team has sufficient confidence in the compiler support. For single-platform, single-compiler environments, that constraint is loose. For multi-platform pipelines with mixed compiler versions, it is the gate that determines what gets shipped and what gets saved for a later standard cycle.</p><h3>Making trade-offs explicit before someone else makes them implicit</h3><p>The broader philosophy Darg&#243; brings to C++ at scale is that complexity is always the enemy, and the job of a senior engineer is to reduce it through the daily decisions that accumulate into the character of a codebase over time. Clean code reduces cognitive load. Smaller binaries reduce operational cost. Eliminating undefined behavior reduces hidden risk. New language standards reduce boilerplate and enable safer abstractions. And all of these things connect, in Darg&#243;&#8217;s framing, to the same underlying goal: making large C++ systems more maintainable and more evolvable over the years that teams and requirements will inevitably change.</p><p>But maintainability does not happen by default. It requires making trade-offs explicit at the moment they are made, in the code itself, not just in the code review thread that will be forgotten. Darg&#243; has been on the receiving end of what happens when this does not happen. He came into a codebase, saw code that looked wrong, began cleaning it up, and realized too late that the seemingly redundant choice was affecting binary size in a way that mattered operationally. Some pull requests had already merged before the context became clear. &#8220;Trade-offs there will be. But make them conscious and share the knowledge.&#8221; That principle applies to binary size decisions and it applies equally to feature adoption decisions. The team that adopts contracts without documenting why, which problem it was solving, what compiler version it was verified on, and what the fallback plan is, has introduced complexity that is invisible until the moment it becomes a production incident.</p><h3>What C++26 actually changes and when it matters</h3><p>Contracts and reflection are genuinely significant features. Contracts bring the language its first formal precondition and postcondition system, giving teams a way to enforce interface discipline through the language rather than through documentation and convention. Static reflection enables code generation, serialization frameworks, and tooling that the language simply could not support before in any ergonomic way. Both of these things will change how C++ gets written over the next decade, and engineers who understand them deeply before the production window opens will be in a stronger position than those who try to learn them under delivery pressure.</p><p>But a decade is closer to the right time scale for thinking about the full impact than a release cycle is. The standard has finalized, but the compilers have not caught up. And the community has not yet established the patterns worth following or the misuse patterns worth avoiding. For engineering leaders building roadmaps, Darg&#243;&#8217;s framework points toward a clear separation between understanding and shipping. Invest in understanding contracts and reflection now, run experiments on non-production code, track compiler support as it lands, and build team knowledge before the toolchain is ready. Then, when the support is solid, the patterns are clear, and the fallback plan can be written, adoption becomes a technical decision rather than a leap of faith.</p><p>Darg&#243; likes to put it in simple words. &#8220;Being among the first adopters is sometimes good. Sometimes it&#8217;s better to be in the second line.&#8221; For most production C++ systems with multi-platform requirements, long-lived codebases, and teams where knowledge has to be shared rather than siloed, the second line is where proven and maintainable gets built. The first line is where the lessons come from that make the second line possible.</p><div><hr></div><h2><strong>&#128269; In case you missed it&#8230;</strong></h2><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;67b2c8c3-41c2-48ec-8224-d8b75b385ddf&quot;,&quot;caption&quot;:&quot;S&#225;ndor Darg&#243; has spent years making large C++ systems easier to maintain, safer to change, and cheaper to run.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Clean C++ Code, and the Hidden Cost of Complexity with S&#225;ndor Darg&#243;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-22T11:30:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a04535d6-a8d4-4ff0-bc53-bf31cb699f9a_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/clean-c-code-and-the-hidden-cost&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:195180770,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3703a973-03a7-4c85-9cfc-c4ee5698a2b6&quot;,&quot;caption&quot;:&quot;Engineering teams obsess over clean code because they want software to look organized and logical in the text editor.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Clean Code Is a Trap, Decompose Instead for Physics and Performance&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:440051761,&quot;name&quot;:&quot;Sam Morley&quot;,&quot;bio&quot;:&quot;Research software engineer and mathematician on the DataSig project at the University of Oxford.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!hfZA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b7dcfcf-a878-45d0-99e4-a8f2045dee3e_144x144.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://sammorley.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://sammorley.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Sam Morley&quot;,&quot;primaryPublicationId&quot;:7726502}],&quot;post_date&quot;:&quot;2026-04-23T15:15:59.899Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4a62837-3922-40ce-8859-73c783c89af9_822x371.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/clean-code-trap-decompose-for-performance-physics&quot;,&quot;section_name&quot;:&quot;Thought Leadership&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:195245104,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/microsoft/vcpkg">vcpkg</a></strong> &#8212; open-source C and C++ package manager</p><p>vcpkg removes the dependency management friction that makes compiler and toolchain transitions harder than they need to be, letting teams verify library support across targets without manually managing platform-specific build configurations.</p><ul><li><p>Parallel file installation for faster builds</p></li><li><p>2,773 ports in the curated registry, each validated across all major triplets</p></li><li><p>Dependabot support for automated dependency vulnerability tracking</p></li><li><p>OpenSSL packaging security fix on Windows</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/microsoft/vcpkg&quot;,&quot;text&quot;:&quot;Learn more about vcpkg&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/microsoft/vcpkg"><span>Learn more about vcpkg</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://engineering.atspotify.com/2026/4/background-coding-agents-dataset-migrations-honk-part-4">Spotify publishes how it used Honk, Backstage, and Fleet Management to migrate thousands of datasets</a> - Details how background coding agents reduced the manual overhead of large cross-repository migrations at scale.</p></li><li><p><a href="https://devblogs.microsoft.com/cppblog/c-code-intelligence-for-github-copilot-cli-preview/">GitHub ships C++ Language Server for Copilot CLI in public preview</a> - Extends semantic C++ code intelligence to the command line, giving Copilot symbol definitions, call hierarchies, and type data beyond what grep returns.</p></li><li><p><a href="https://github.com/llvm/llvm-project/releases/tag/llvmorg-22.1.4">Clang/LLVM 22.1.4 released</a> - Patch release of Clang 22, the compiler with the most active C++26 feature tracking. Teams on Clang should update.</p></li><li><p><a href="https://devblogs.microsoft.com/cppblog/msvc-build-tools-version-14-51-release-candidate-now-available/">MSVC Build Tools 14.51 release candidate ships in Visual Studio 2026 Insiders</a> - Adds expanded C++23 conformance, CWG and LWG issue resolutions, and runtime performance improvements. Stable release expected in May.</p></li><li><p><a href="https://isocpp.org/blog/2026/04/announcement-cppreference.com-update">cppreference.com returning to read-write after ISO C++ Foundation takes over infrastructure</a> - Herb Sutter announced the Foundation is taking over hosting and maintenance for cppreference, the primary compiler support reference for the C++ community.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome, </p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p><p>Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and help grow our work.</p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #43: David Knickerbocker on Building AI That Sees the World as It Is, Not as It Was]]></title><description><![CDATA[Real-time knowledge graphs, awareness before truth, and why an empty dataset is better than a hallucination]]></description><link>https://deepengineering.net/p/issue43-building-ai-that-sees-the-world-as-it-is-david-knickerbocker</link><guid isPermaLink="false">https://deepengineering.net/p/issue43-building-ai-that-sees-the-world-as-it-is-david-knickerbocker</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 16 Apr 2026 15:30:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/542c8988-3aa8-439a-94c1-20a10d857430_716x421.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><a href="https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng">C++ Memory Management Masterclass (Live) &#8212; Back for the 3rd Run</a></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1qKl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1qKl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1qKl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1qKl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1qKl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg" width="800" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1qKl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1qKl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1qKl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1qKl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a7652-0edf-4737-a16a-6b90e7bb9a91_800x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Learn ownership, RAII, smart pointers &amp; allocators to eliminate leaks/UB&#8212;live hands-on with <strong>Patrice Roy</strong>&#8212;#1 bestselling author of <em><strong>C++ Memory Management</strong></em> and ISO C++ Standards Committee (WG21) member. </p><p><strong>&#128197; Online: Apr 18 </strong>&amp;<strong> Apr 19.</strong> Limited seats.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng&quot;,&quot;text&quot;:&quot;Register now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng"><span>Register now</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the <strong>43rd</strong> issue of Deep Engineering!</p><p>On April 15, Neo4j ran <a href="https://neo4j.com/nodes-ai/">NODES AI 2026</a>, a full-day virtual conference dedicated to AI with knowledge graphs, with tracks covering GraphRAG, graph-based agent memory, and context engineering. Interestingly, the <a href="https://neo4j.com/videos/nodes-ai-2026-opening-keynote-exploring-context-graphs-from-data-to-decisions/">opening keynote</a> framed the central challenge directly around how most AI systems behave as if they have never seen the data that the organisations deploying them have spent years accumulating. The gap between what a system has access to and what it can actually use at query time is, in the view of the practitioners at NODES, the defining engineering problem of this moment.</p><p>And so, in today&#8217;s issue we want to address exactly that gap. <a href="https://www.linkedin.com/in/dkjapan">David Knickerbocker</a>, founder of <a href="https://www.verdantintel.com/">Verdant Intelligence</a> and author of <a href="https://www.packtpub.com/en-us/product/network-science-with-python-9781801073691">Network Science with Python</a> (Packt), has spent years building knowledge graph systems that stay current with a different design constraint than most teams start from: not how to make retrieval faster, but how to make the system aware of what changed a minute ago. His system (Verdant Eye) treats knowledge as a continuous stream of claims rather than a static store of facts, and that distinction has significant consequences for how you handle freshness, hallucination, temporal drift, and testing.</p><blockquote><p>This is the first of two features from our conversation with David, the second will cover what building AI on top of messy, adversarial, real-world data teaches you that clean-dataset engineers never have to confront. You can read the full interview and watch the conversation <a href="https://deepengineering.substack.com/p/knowledge-graphs-graphrag-and-real">here</a>.</p></blockquote><p>Let&#8217;s get started.</p><div><hr></div><h4 style="text-align: center;"><strong>30k+ DevOps Engineers Read <a href="https://links.uk.defend.egress.com/Warning?crId=69df8dab3269e6a874d09e8e&amp;Domain=packt.com&amp;Threat=eNpzrShJLcpLzAEADmkDRA%3D%3D&amp;Lang=en&amp;Base64Url=eNoNxVEKABAMANAb2b-SsygLxbZsyO15P6-aiXoAwqMON85rtVHJuFnU_SAOzqkHbYWWPLQTEkg%3D&amp;@OriginalLink=news.everythingdevops.dev">EverythingDevOps</a></strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://links.uk.defend.egress.com/Warning?crId=69df8dab3269e6a874d09e8e&amp;Domain=packt.com&amp;Threat=eNpzrShJLcpLzAEADmkDRA%3D%3D&amp;Lang=en&amp;Base64Url=eNoNxVEKABAMANAb2b-SsygLxbZsyO15P6-aiXoAwqMON85rtVHJuFnU_SAOzqkHbYWWPLQTEkg%3D&amp;@OriginalLink=news.everythingdevops.dev" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DeZN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png 424w, https://substackcdn.com/image/fetch/$s_!DeZN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png 848w, https://substackcdn.com/image/fetch/$s_!DeZN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png 1272w, https://substackcdn.com/image/fetch/$s_!DeZN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DeZN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png" width="604" height="332.282967032967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:801,&quot;width&quot;:1456,&quot;resizeWidth&quot;:604,&quot;bytes&quot;:400435,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://links.uk.defend.egress.com/Warning?crId=69df8dab3269e6a874d09e8e&amp;Domain=packt.com&amp;Threat=eNpzrShJLcpLzAEADmkDRA%3D%3D&amp;Lang=en&amp;Base64Url=eNoNxVEKABAMANAb2b-SsygLxbZsyO15P6-aiXoAwqMON85rtVHJuFnU_SAOzqkHbYWWPLQTEkg%3D&amp;@OriginalLink=news.everythingdevops.dev&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://deepengineering.substack.com/i/194401065?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.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_!DeZN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png 424w, https://substackcdn.com/image/fetch/$s_!DeZN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png 848w, https://substackcdn.com/image/fetch/$s_!DeZN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.png 1272w, https://substackcdn.com/image/fetch/$s_!DeZN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b48ace5-23b7-43ba-b2ce-8dc697323934_3971x2184.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The cloud-native ecosystem moves on its own schedule. New tooling, shifting practices, team structures that look nothing like they did two years ago. Therefore, keeping up is not optional when your job is to build and run reliable systems.</p><p><a href="https://links.uk.defend.egress.com/Warning?crId=69df8dab3269e6a874d09e8e&amp;Domain=packt.com&amp;Threat=eNpzrShJLcpLzAEADmkDRA%3D%3D&amp;Lang=en&amp;Base64Url=eNoNxVEKABAMANAb2b-SsygLxbZsyO15P6-aiXoAwqMON85rtVHJuFnU_SAOzqkHbYWWPLQTEkg%3D&amp;@OriginalLink=news.everythingdevops.dev">EverythingDevOps</a>&#8216; weekly digest is built specifically for engineers who want the signal without the scroll.</p><ul><li><p>What&#8217;s changing in the ecosystem &#8212; and what it actually means for your work</p></li><li><p>Career thinking for engineers moving from senior to staff to leadership</p></li><li><p>Events, opportunities, and community conversations worth your Frida</p></li></ul><p><strong><a href="https://links.uk.defend.egress.com/Warning?crId=69df8dab3269e6a874d09e8e&amp;Domain=packt.com&amp;Threat=eNpzrShJLcpLzAEADmkDRA%3D%3D&amp;Lang=en&amp;Base64Url=eNoNxVEKABAMANAb2b-SsygLxbZsyO15P6-aiXoAwqMON85rtVHJuFnU_SAOzqkHbYWWPLQTEkg%3D&amp;@OriginalLink=news.everythingdevops.dev">Join 30,000+ engineers</a></strong></p><div><hr></div><h1>AI That Sees the World as It Is, Not as It Was</h1><p><em>by </em><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;f89aae65-246f-44b5-b849-dc27f0060228&quot;}" data-component-name="MentionToDOM"></span> <em>with </em><a href="https://www.linkedin.com/in/dkjapan/">David Knickerbocker</a></p><p>Most AI systems are answering questions about a world that no longer quite exists. They draw from training data frozen at a point in time, from retrieval systems that return whatever was most recently indexed, from pipelines that treat knowledge as a stable object rather than a moving one. For <strong>David Knickerbocker</strong>, founder of <strong>Verdant Intelligence</strong>, this is not a limitation to work around, but a design error to avoid from the start.</p><h3>The problem starts at problem definition</h3><p>Building a knowledge graph that stays fresh does not require a different database. It requires a different question. For Knickerbocker the starting point is always the same, &#8220;what is the system actually trying to know, and at what resolution of time?&#8221;</p><p>He explains, &#8220;If you want to build a world AI and be able to answer questions about things that happened a minute ago, then that is your problem statement. And then you think about how to get that data into the database so that it is there and it is fresh. But then you also have to get AI to be able to use that data. There are two sides to this coin.&#8221;</p><p>The engineering philosophy he applies is <strong>KISS</strong> (Keep it Super Simple), and <strong>YAGNI</strong> (You Aren't Gonna Need It"). Both push in the same direction, he reasons &#8220;build the minimum thing that works, validate that it works, and expand from there.&#8221; His system (Verdant Eye) maintains data fresh up to a minute old, not by doing something architecturally exotic, but by treating freshness as a first-class constraint from day one rather than an optimization to add later.</p><p>&#8220;The AI industry feels very shiny and very new, but there is a lot of old school discipline that is still extremely useful. You start with the idea, you go through the ideation, from ideation you create your spec, from the spec you do your project management, you assign tasks and do the work. It feels like vanilla old school engineering to me.&#8221;</p><h3><strong>Awareness before truth</strong></h3><p>The instinct when building a real-time knowledge system is to treat freshness and accuracy as a tension to manage: newer data is less verified, older data is more reliable, and the system needs some formula for weighing one against the other. But Knickerbocker rejects this frame entirely.</p><p>He explains from his engineering experience that why his systems are not trying to determine what is true. But instead trying to capture what is being claimed, and those are fundamentally different engineering problems.</p><p>&#8220;In the world of open source intelligence, it has less to do with right and wrong. It has less to do with facts. What I am looking for is really claims of what is going on in the world. I do not make that decision, and I do not allow my AI to make the decision about what is true or false either.&#8221;</p><p>In adversarial open source intelligence environments, two sources in direct conflict with each other are not a problem to resolve. But they are both signal. And what matters is that both claims are captured, clustered, and surfaced. Knickerbocker describes this structure using a frame he developed from years of NLP work: not clusters in the geometric sense, but ribbons, layered bands of related information that emerge from the data.</p><p>&#8220;You have a whole bunch of information and this top ribbon might be this bad thing happened. The next ribbon might be this event is happening at the library. The next ribbon might be a punk rock show is happening at this nightclub.&#8221;</p><p>The consequence of this design is that awareness comes before truth, and that is by intention. For the applications the Verdant Eye is built for, knowing what is being said and where is actionable before you know whether any of it is correct. Adjudicating truth is a downstream problem, one that can be handled by human judgment or purpose-built downstream systems, not by the ingestion layer.</p><h3><strong>Snapshot versus movie</strong></h3><p>What separates a real-time knowledge graph from an agent that runs searches is not a matter of degree. It is a structural difference in what kind of object the system is.</p><p>An agent with search tools takes a snapshot. It queries for something, gets back the most relevant indexed results, and presents them. The system only knows what it was asked to look for, and it only looks when prompted. A knowledge graph that continuously ingests from the open web is more like a movie: it is always recording, and when you query it, you are not taking a new photograph but pulling a frame from a film that has been running the whole time.</p><p>&#8220;If you use a tool to do a search to find out something, you are getting a snapshot of time. My systems capture the heartbeat of the Internet themselves, and they are always listening. It would be closer to a movie compared to a photograph.&#8221;</p><p>The practical difference shows up clearly in demos with clients who need urgent situational information. Running a calibration query against the Verdant Eye, asking what is the latest information, returns results anywhere from a few seconds old to a minute and a half old. That behaviour is not possible with a search-tool approach at any level of optimization.</p><p>An empty result matters too. If nothing has been reported in the last minute on a given topic, the system returns nothing. That discipline is load-bearing.</p><p>&#8220;An empty dataset,&#8221; Knickerbocker underscores, &#8220;is better than a hallucination.&#8221;</p><h3><strong>The rush to use a tool before understanding it</strong></h3><p>Knickerbocker spent years watching teams fail with graph databases in 2020 and 2021, and he sees the same pattern repeating now with agents and AI. Teams adopt the tool before building the understanding, and then cannot tell whether it is working.</p><p>&#8220;There is a rush to use agents before even understanding AI. And if the understanding is not there, then it is just wishful. If you do not know how it works, you cannot tell the difference between it ran and it ran correctly. Those are very different things.&#8221;</p><p>His own relationship with graphs predates the graph database trend by years. At Intel, from 2015 to 2019, he was using graph theory for data flow mapping, tracing inputs to outputs across thousands of scripts and hundreds of servers, using centralities to find important nodes and shortest paths to understand flow. He was never using graph databases. He was using the underlying science.</p><p>&#8220;I was never invited to the cool kid graph database parties. I was always just doing stuff with graphs and using it to map out data flows and fix production outages. Dead serious stuff.&#8221;</p><p>That gap between tool and understanding is what drove him to write <a href="https://www.packtpub.com/en-us/product/network-science-with-python-9781801073691">Network Science with Python</a>. Teams were populating graph databases and then stopping, treating the populated database as the deliverable. The value, in his view, starts the moment the graph is populated and you begin running network science on top of it.</p><p>&#8220;If you do not know about the basics of network science, then what are you gonna do with the graph database? You have put your data in the graph database. Whereas if you come to graph databases and you have learned about centralities, community detection, shortest paths, simulations, then it can really have an impact on your network thinking.&#8221;</p><h3><strong>Similarity is not the same as identical</strong></h3><p>The central limitation of vector-based retrieval is one that Knickerbocker has framed the same way since at least 2017. Semantic similarity is a probabilistic measure, not a logical one. Two pieces of text can be highly similar in embedding space while referring to entirely different things. A graph replaces probabilistic similarity with structural traversal.</p><p>&#8220;Similarity in language is not equal to same. I will say that one more time. Similarity is not equal to same. Similar sounding things can be very, very different from each other. A graph anchors things into a piece of context.&#8221;</p><p>In a GraphRAG system, the query does not ask what is most like this input. It traverses the graph: if you are asking about jazz events in Portland, Oregon, you are connected to the Oregon node, to the Portland node, to the jazz node. The hallucination space collapses because the answer space is bounded by structure rather than probability.</p><p>&#8220;In a GraphRAG system, if there is no match then the output is that there is no match. There is no hallucination opportunity. With a similarity-based system, there could be similarity even if it is only a single word in a paragraph.&#8221;</p><p>This intuition was clear to him during his data operations years at Intel. Log files across hundreds of servers written by dozens of engineers contain enormous amounts of natural language. Working with that language to understand what a production system was doing made it obvious that the structure, the graph, and the meaning, the language, were inseparable.</p><p>&#8220;Graphs show you where things go,&#8221; Knickerbocker adds. &#8220;But all of the context about what that node even is is often carried by language itself.&#8221;</p><h3><strong>Deliberate forgetting</strong></h3><p>Temporal drift is usually framed as a correctness problem: facts become outdated, relationships change, the graph silently goes wrong. The standard response is validation pipelines, contradiction detection, freshness scores. Knickerbocker builds around a different principle.</p><p>Sharing from his experience building the Verdant Eye, Knickerbocker explains that the Verdant Eye system is not called the Verdant Brain because the metaphor is not storage. It is perception.</p><p>&#8220;The Verdant Eye sees, and it does not contain eternal memory, because that is not what an eye does. An eye sees. When the scene changes, the scene changes. Your eyes do not need to be recalibrated. The thing has just changed.&#8221;</p><p>The design principle is biological: living systems do not maintain eternal memory, and a knowledge system that tracks a living world should not either. The practical implementation mirrors transactional database patterns he worked with throughout his career in data operations. Data that is no longer operationally relevant gets archived. The live layer runs on what is current, and the cost of maintaining it stays proportional to what the system actually needs to know.</p><p>&#8220;In a transactional database, you operate off of what you need, and data that is not needed eventually gets archived. I want to build AI that does not boil the ocean, that can be bootstrapped by individuals. Infinite memory is not just philosophically wrong for this kind of system. It is economically unworkable.&#8221;</p><h3><strong>The pass butter philosophy</strong></h3><p>Knickerbocker shares how he currently runs three production GraphRAG systems, each built for a distinct purpose with its own testing criteria. Verdant Intelligence operates at high altitude, tracking events across states and regions. Grooveseeker (which he created to put his AI system to a different and specific kind of use) operates at street level, finding events in specific cities on specific nights. A third system contains thirty years of AI research, useful for tracing the intellectual lineage of ideas when building new things.</p><p>The principle connecting all three comes from a scene in Rick and Morty. Rick builds a robot. The robot asks what its purpose is. Rick says: you pass butter.</p><p>&#8220;There is no testing framework anybody else can give me that is going to be fit for purpose for what I am trying to build, because I am not trying to build general intelligence. I am trying to build intelligence that serves a specific purpose.&#8221;</p><p>Each system is therefore tested against the specific failures that would make it useless for its purpose. For Grooveseeker, that means verifying the right city, not a city of the same name in a different state; the right date, not a historical recurrence of the same event; and a URL that actually leads somewhere you can buy a ticket.</p><p>The final test of the Grooveseeker system was to stop writing articles proving it worked and simply use it. The system returned events in Portland between March 10 and March 13. Knickerbocker even attended one of them, bought a ticket at the door, saw the band, and spoke to one of the musicians. </p><p>His AI did not send him to a venue that did not exist. &#8220;That is how I know it works,&#8221; Knickerbocker affirms.</p><div><hr></div><h2><strong>&#128269; In case you missed it&#8230;</strong></h2><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5fd69076-1db8-4cdd-ba01-395d5b521b8f&quot;,&quot;caption&quot;:&quot;This conversation with David Knickerbocker keeps returning to a single conviction: the best engineering starts with intentional problem definition, and most AI failures happen when teams rush to use a tool before understanding what they are actually trying to build.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Knowledge Graphs, GraphRAG, and Real-Time AI in Production with David Knickerbocker&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:427210082,&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;bio&quot;:&quot;/localhost&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-15T12:30:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93b09a18-df5c-49af-93ca-6f4d45a26bdc_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/knowledge-graphs-graphrag-and-real&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:194390901,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/getzep/graphiti">Graphiti</a></strong> &#8212; open-source temporal knowledge graph engine for AI agents</p><p><strong>Highlights:</strong></p><ul><li><p><strong>Temporal fact management:</strong> Facts carry explicit validity windows &#8212; invalidated when superseded, never deleted, queryable at any point in time.</p></li><li><p><strong>Incremental ingestion:</strong> New data integrates immediately without batch recomputation, keeping the graph current as the world changes.</p></li><li><p><strong>Hybrid retrieval:</strong> Combines semantic search, BM25, and graph traversal in a single query, typically under 100ms.</p></li><li><p><strong>MCP-native:</strong> Ships an MCP server for direct integration with Claude, Cursor, and other MCP clients.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/getzep/graphiti&quot;,&quot;text&quot;:&quot;Learn more about Graphiti&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/getzep/graphiti"><span>Learn more about Graphiti</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://neo4j.com/videos/nodes-ai-2026-closing-keynote-from-data-to-knowledge-to-action-the-graph-intelligence-platform/">Neo4j NODES AI 2026 closing keynote: From Data to Knowledge to Action</a> - Sudhir Hasbe makes the case that most enterprise AI behaves as if it has never seen the organisation's own data, and how graphs help close that gap.</p></li><li><p><a href="https://tianpan.co/blog/2026-04-10-graph-memory-llm-agents-relational-reasoning">Graph memory for LLM agents: the relational blind spots that flat vectors miss</a> - Zep's LongMemEval evaluation shows 18.5% accuracy gains over vector baselines, context tokens dropping from 115,000 to 1,600, and latency falling from 29 seconds to under 3 seconds.</p></li><li><p><a href="https://www.falkordb.com/news-updates/falkordb-browser-updates-april-2026/">FalkorDB Browser ships April 2026 update for GraphRAG developers</a> - Adds favourite query saving, one-click connection string copying, enhanced graph statistics, and configurable table views..</p></li><li><p><a href="https://community.neo4j.com/t/start-here-register-get-aura-credits-aura-agent-hackathon-2026/77191">Neo4j Aura Agent Hackathon opens</a> - Developers building knowledge-graph-grounded AI agents can register for cloud credits and managed GraphRAG platform access.</p></li><li><p><a href="https://github.com/DEEP-PolyU/Awesome-GraphRAG">Four GraphRAG papers accepted at ACL 2026</a> - PolyU&#8217;s Awesome-GraphRAG repo confirmed acceptances including ProbeRAG for retrieval faithfulness, LegalGraphRAG for legal reasoning, and LinearRAG for efficient graph construction.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome, </p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p><p>Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and support my work.</p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #42: Building Reliable Multi-Agent Systems with Fitz Nowlan]]></title><description><![CDATA[How to preserve facts across agent handoffs, when to use MCP, and why bounding execution is non-negotiable]]></description><link>https://deepengineering.net/p/deep-engineering-42-building-reliable</link><guid isPermaLink="false">https://deepengineering.net/p/deep-engineering-42-building-reliable</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 09 Apr 2026 15:21:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a5466920-69f5-4417-8a13-fc13b9f5ec76_1440x868.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><a href="https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tickets-1978960034736?aff=deepeng">Building an AI-Powered Internal Developer Platform from Scratch</a></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tickets-1978960034736?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X-O7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X-O7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tickets-1978960034736?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!X-O7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!X-O7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e46c203-54b4-4dfa-99e6-d2d8ce40b7fc_2160x1080.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Hone your skills to design, implement, and ship an AI-powered internal developer platform from scratch with <a href="https://www.linkedin.com/in/chankramath/">Ajay Chankramath</a>.</p><p>&#128197; <strong>25th</strong> and <strong>26th</strong> April 2026 | <strong>11:00 AM</strong> to <strong>3:00 PM</strong> ET</p><p>Use code<strong> DEEPENG50 </strong>for<strong> 50% off, </strong>or grab the<strong> 2-for-1 </strong>deal</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tick%E2%80%A6&quot;,&quot;text&quot;:&quot;Register now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.co.uk/e/building-an-ai-powered-internal-developer-platform-from-scratch-tick%E2%80%A6"><span>Register now</span></a></p><p><em>Includes access to <a href="https://www.packtpub.com/en-us/product/the-platform-engineers-handbook-9781806380121">The Platform Engineer&#8217;s Handbook</a> by Ajay Chankramath upon release (eBook worth $35.99)</em></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the 42nd issue of Deep Engineering!</p><p>Multi-agent AI is widely being adopted in production, but the engineering reality is messier than the demos suggest. GitHub Engineering published<a href="https://github.blog/ai-and-ml/generative-ai/multi-agent-workflows-often-fail-heres-how-to-engineer-ones-that-dont/"> a post by Gwen Davis</a> laying out the most common ways multi-agent workflows fail in practice. Most failures come down to missing structure, not model capability. </p><p>Agents make implicit assumptions about state, ordering, and validation at the points where they hand off work to one another, and without explicit data formats, typed interfaces, and defined action schemas at those boundaries, the system breaks in ways that are hard to reproduce and harder to debug.</p><p>The architectural decisions you make around the model matter more than the model itself. That is precisely what today&#8217;s issue covers. <strong><a href="https://www.linkedin.com/in/fitz-nowlan/">Fitz Nowlan</a></strong>, VP of AI and Architecture at <a href="https://smartbear.com/">SmartBear</a>, has spent years building agentic systems in production.</p><p>Let&#8217;s get started.</p><div><hr></div><h4 style="text-align: center;"><strong>Featured Newsletter: <a href="https://www.thecloudplaybook.com/">The Cloud Playbook</a></strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.thecloudplaybook.com/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NQSA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!NQSA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!NQSA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!NQSA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NQSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png" width="312" height="312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:312,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.thecloudplaybook.com/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NQSA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!NQSA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!NQSA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!NQSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83d05f4-88b5-4f79-b558-2f658c5c21e5_500x500.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you own reliability, cost, and compliance in production on AWS, <strong><a href="https://www.thecloudplaybook.com/">The Cloud Playbook</a></strong> newsletter is worth your attention.</p><p><em>It is a weekly read for engineering leaders building platforms where incidents, audits, and surprise AWS bills are real problems. It covers AWS architecture, platform engineering, FinOps, security, observability, and compliance frameworks like FedRAMP, HIPAA, and ISO 27001.</em></p><p><strong><a href="https://www.thecloudplaybook.com/">Subscribe to The Cloud Playbook</a></strong></p><div><hr></div><h1><strong>Multi-Agent Systems Need Rules to Stay Reliable in Production</strong></h1><p><em>by </em><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Saqib Jan&quot;,&quot;id&quot;:427210082,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997a788a-cd78-4f84-9b3b-c72ab6dc0153_1008x1008.jpeg&quot;,&quot;uuid&quot;:&quot;f89aae65-246f-44b5-b849-dc27f0060228&quot;}" data-component-name="MentionToDOM"></span> <em>with <a href="https://www.linkedin.com/in/fitz-nowlan/">Fitz Nowlan</a></em></p><p>As agents pass tasks to one another, reason autonomously, and compose solutions on the fly, it is easy to construct a version of multi-agent AI that looks technically sound on a whiteboard. In practice, however, that version tends to fall apart when context gets lost between handoffs, when loops run without terminating, and when open-ended systems become progressively harder to test, debug, or trust.</p><p><strong><a href="https://www.linkedin.com/in/fitz-nowlan/">Fitz Nowlan</a></strong>, VP of AI and Architecture at <a href="https://smartbear.com/">SmartBear</a>, has spent the past two years building agentic systems in production, and his view, drawn from that engineering experience, is that the reliability of a multi-agent system is determined less by the model you choose and more by the architectural decisions you make around it.</p><h2>Preserving facts across the handoff boundary</h2><p>The first place multi-agent systems break down is at the handoff. When agent A passes context to agent B, the question is not just what to pass but how to pass it. Raw string prompts are the path of least resistance, but Nowlan argues they are also the path most likely to introduce errors.</p><p>&#8220;We are almost always using some form of structured data,&#8221; he points out. &#8220;It&#8217;s generally going to be JSON. What we&#8217;ll often try to do on top of that JSON is define, effectively, a domain-specific language, or DSL, or our own schema, to cache, kind of, to preserve truth that we&#8217;ve already determined.&#8221;</p><p>The distinction matters because of what happens when you do not preserve that truth. Suppose an agent is working within the context of a browser and identifies that two elements appear inside the same container on a page. That relationship has been syntactically proven through a screenshot, the HTML, or the DOM. If you pass that context as plain text to the next agent, that agent has to decompose the text and then probabilistically reconstruct whether the relationship exists at all.</p><p>&#8220;That other agent has to effectively decompose and then probabilistically, i.e., potentially hallucinate, that relationship is there,&#8221; Nowlan notes. &#8220;So what we try to do is communicate over JSON and lock in to the JSON in our custom schema the facts that we&#8217;ve identified or extracted from one context or world to another.&#8221;</p><p>The practical principle is simple enough. Anything that has been established as a fact should be encoded as a fact, not as prose. Structured contracts at the handoff boundary are not just a formatting preference. They are a mechanism for preventing the downstream agent from having to guess at things the upstream agent already knew.</p><h2>When MCP outperforms a static API wrapper</h2><p>Model Context Protocol (MCP) has become a standard topic in agentic architecture discussions, and anyone planning to use it should understand where it actually adds value and where it does not.</p><p>&#8220;If you knew all five workflows that your customers ever did in your application, well, then you should just statically code them up,&#8221; Nowlan reasons. &#8220;Make it a single API endpoint, take the inputs at the outset, chain them all together, and spit the outputs back out to your user. That would be highly efficient. You wouldn&#8217;t then need MCP or agents at all.&#8221;</p><p>The benefit of MCP is the emergent use case. That is the workflow your users need that you did not anticipate, in the sequence they need it, composed on the fly from the tools you have exposed. By giving the model a set of tools rather than a fixed pipeline, you allow the system to compose solutions for problems you never explicitly programmed for.</p><p>&#8220;If you have an application that&#8217;s very diverse, with a diverse set of data, with a wide-ranging type or class of data, and maybe even different user roles that are coming in and using your product, that&#8217;s where MCP can really be a massive unlock, because the composition artifacts are effectively infinite,&#8221; Nowlan observes.</p><p>The corollary is equally important. If your application is relatively rigid and your users reliably need the same five things, MCP introduces complexity without adding value. The decision to use it should follow directly from the diversity of your use cases, not from the fact that it is available.</p><h2>The 80-20 rule for DAG versus autonomous orchestration</h2><p>One of the more practically useful frameworks Nowlan describes is how his team decides when to use a fixed Directed Acyclic Graph (DAG)-based workflow versus an open-ended MCP-style loop, and how that decision evolves over time.</p><p>The starting point is openness. When a new feature or product area is introduced, the team tends to begin with the full MCP loop. The premise is straightforward. Here is the set of tools. Let the system compose whatever the user needs. This preserves maximum flexibility while the team learns how customers actually use the system.</p><p>Over time, patterns emerge. Certain workflows appear repeatedly. Those are the candidates for promotion into a DAG.</p><p>&#8220;There&#8217;s kind of an 80-20 rule here, where 80% of the time your customers are looking to solve their problems with 20% of these key workflows that you&#8217;ve identified,&#8221; Nowlan notes. &#8220;Those should then be translated into DAGs, into workflows, into a little bit stricter information flow architecture.&#8221;</p><p>The payoff is significant, Nowlan affirms. Once a workflow is on a DAG, you can optimise aggressively. You can use a cheaper model for nodes that do not require frontier-level reasoning. You can shed context that is irrelevant to a particular step rather than packing everything into the window. You can bound latency because the execution path is known in advance.</p><p>&#8220;When you get on that track, that predefined workflow, that&#8217;s where you can save cost, you can potentially use a cheaper model for a particular node that you know doesn&#8217;t need the most expensive model. And you can also shed information from context in that workflow when you know it&#8217;s not necessary for the outcome.&#8221;</p><p>The open-ended MCP loop remains available for everything else, for the 20% of use cases that do not fit a known pattern. The architecture supports both, and the team actively monitors usage to identify when a new workflow has crossed the threshold and is ready to be promoted. There is no firm cutoff, just the observation that a workflow is appearing often enough to justify the investment in making it faster and cheaper.</p><h2>The infinite loop problem</h2><p>Bounding execution is one of the more fundamental challenges in agentic systems, and it is one that the industry is still working through. The early solutions were basic by necessity. At the most fundamental level, Nowlan explains, it comes down to two questions: has the system hit a timeout, and has it exceeded a set number of attempts.</p><p>The deeper issue is that the problem did not originate with modern agents. In the early days of GPT-3-era pipelines, a common approach was to ask the model for one action at a time, execute it, and return for the next. The loop would never terminate because the model had no reliable sense of when it was done.</p><p>&#8220;We quickly realized they would literally go on forever. The loop would just never terminate, would never know that it was done, or it would know that it was done way too early.&#8221;</p><p>The response was to shift from reactive step-by-step prompting to upfront scoping. Rather than asking the model what to do next after each action, you ask it at the outset to decompose the overall task into a bounded set of subtasks, and then you execute those subtasks in sequence and stop.</p><p>&#8220;We pivoted from the early days toward putting more bounds on the problem space. What are the things you think I should do? Break this down into a set of tasks, a set of subtasks, and then I&#8217;ll take each of those subtasks in turn, but when I get to that last subtask, I&#8217;m done. I&#8217;m not going back and asking you for more.&#8221;</p><p>As models have improved, this has relaxed somewhat. The team now allows a final evaluation pass, a double or triple check at the end, before closing the loop. But the underlying principle has not changed. Get the model to scope the work before execution begins, and treat that scope as a constraint rather than a suggestion.</p><p>&#8220;You want to get the AI to put bounds and scope around the overall work that you&#8217;ll be doing to solve or complete some task, and try to stick to that as a guide so that you don&#8217;t run off into the infinite space of querying forever.&#8221;</p><h2>Testing non-deterministic flows</h2><p>Testing a system where the execution path changes based on the model&#8217;s output requires a different approach from conventional integration testing. Nowlan and his team lean toward trace-based evaluation, grounded in a close understanding of realistic user inputs.</p><p>&#8220;All of our evaluations are, we think, we hope, reasonably close to the reality of those inputs that we&#8217;re going to get from our end users.&#8221;</p><p>The logic is that if you understand the domain well enough, you can anticipate the shape of the tasks users will bring to the system even if you cannot predict the exact inputs. In a web testing context, for example, that means understanding that users are going to log in, fill out forms, scroll through lists, and navigate between pages. Those logical actions become the basis for evaluations, and the evaluations can then check whether the agent followed a reasonable path to completion rather than whether it followed an exact predetermined path.</p><p>At the same time, Nowlan acknowledges that no evaluation suite fully covers the space of real-world inputs. The complement to pre-built evaluations is comprehensive logging and tracing of every prompt and response the system exchanges with the model.</p><p>&#8220;We log and trace all of our inputs and outputs that we exchange to the LLMs, and then we can go back and debug those, and examine those, and we can obviously use AI to probabilistically parse and understand those inputs and outputs.&#8221;</p><p>This creates a feedback loop that pre-built evaluations cannot replicate. When a user reports a bad experience or churns, the team can go back to the traces for that user, examine the prompt and response sequences, and use a model to evaluate whether the quality of the AI outputs degraded at any point. The evaluation happens after the fact, using the actual production inputs rather than synthetic ones.</p><p>Nowlan&#8217;s broader point is that evaluation in non-deterministic systems is not a gate you run before deployment. It is an ongoing process that runs in parallel with production, using real data to surface quality issues that no pre-deployment test suite would have caught.</p><div><hr></div><h2><strong>&#128736;&#65039; Tool of the Week</strong></h2><p><strong><a href="https://github.com/huggingface/smolagents">smolagents</a></strong> &#8212; Hugging Face&#8217;s open-source library for building agents that think in code</p><p><strong>Highlights:</strong></p><ul><li><p><strong>Code-first agents:</strong> Generates and executes Python code instead of structured tool calls, which can reduce back-and-forth with the model in some workflows.</p></li><li><p><strong>Model-agnostic:</strong> Works with local Transformers models, Hugging Face Inference API, and providers via LiteLLM.</p></li><li><p><strong>Supports sandboxing:</strong> Can run code in environments like Docker, E2B, or Pyodide, but requires proper setup for safety.</p></li><li><p><strong>Hub integration:</strong> Tools and agents can be shared and reused via the Hugging Face Hub.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/huggingface/smolagents&quot;,&quot;text&quot;:&quot;Learn more about smolagents&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://github.com/huggingface/smolagents"><span>Learn more about smolagents</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://techcrunch.com/2026/04/07/anthropic-mythos-ai-model-preview-security/">Anthropic moves Claude Mythos into controlled early access under Project Glasswing</a> - Limited rollout to partners including Amazon, Apple, and Microsoft for defensive security work, with early reports pointing to strong capability in identifying software vulnerabilities</p></li><li><p><a href="https://www.microsoft.com/en-us/microsoft-copilot/blog/copilot-studio/new-and-improved-multi-agent-orchestration-connected-experiences-and-faster-prompt-iteration/">Microsoft Copilot Studio ships multi-agent orchestration to general availability</a> - Now supports A2A protocol for agent-to-agent delegation and cross-app agent reuse via the Microsoft 365 Agents SDK.</p></li><li><p><a href="https://www.openpr.com/news/4454447/2026-agentic-ai-era-why-multi-model-routing-has-become">Google releases Gemma 4 under Apache 2.0</a> - Ranges from lightweight edge models to a 31B-parameter variant with strong performance on reasoning, agentic workflows, and multilingual tasks.</p></li><li><p><a href="https://docs.langchain.com/oss/python/releases/changelog">LangGraph ships async subagents in latest Deep Agents update</a> - Adds non-blocking background subagents alongside type-safe streaming and Pydantic coercion in the new v2 API.</p></li><li><p><a href="https://www.helpnetsecurity.com/2026/04/03/microsoft-ai-agent-governance-toolkit/">Microsoft releases open-source Agent Governance Toolkit</a> - A seven-package system that intercepts every agent action before execution at sub-millisecond latency, with native integrations for LangChain, CrewAI, Google ADK, and Microsoft Agent Framework.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome, </p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p><p>Thanks for reading Packt Deep Engineering! Subscribe for free to receive new posts and support my work.</p>]]></content:encoded></item><item><title><![CDATA[Deep Engineering #41: Scaling C++ the Right Way with Sam Morley]]></title><description><![CDATA[Template metaprogramming, cache-aware design, concurrency models, and why learning Rust might actually make you a better C++ programmer.]]></description><link>https://deepengineering.net/p/deep-engineering-41-scaling-c-the</link><guid isPermaLink="false">https://deepengineering.net/p/deep-engineering-41-scaling-c-the</guid><dc:creator><![CDATA[Saqib Jan]]></dc:creator><pubDate>Thu, 02 Apr 2026 15:16:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4017b543-27c2-4082-9f3b-1bd7abbbdd3a_1432x840.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><a href="https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng">C++ Memory Management Masterclass (Live) &#8212; Back for the 3rd Run</a></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M9ZS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!M9ZS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!M9ZS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!M9ZS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M9ZS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:508191,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://deepengineering.substack.com/i/189970085?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!M9ZS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png 424w, https://substackcdn.com/image/fetch/$s_!M9ZS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png 848w, https://substackcdn.com/image/fetch/$s_!M9ZS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!M9ZS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23118828-1505-45fe-972f-5c55ac0dd359_2160x1080.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Back by demand (3rd run). </figcaption></figure></div><p>Learn ownership, RAII, smart pointers &amp; allocators to eliminate leaks/UB&#8212;live hands-on with <strong>Patrice Roy</strong>&#8212;#1 bestselling author of <em><strong>C++ Memory Management</strong></em> and ISO C++ Standards Committee (WG21) member. <strong>Online: Sat Apr 11, 10:30 AM&#8211;Sun Apr 12, 4:00 PM ET.</strong> Limited seats.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng&quot;,&quot;text&quot;:&quot;Register now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.eventbrite.com/e/c-memory-management-masterclass-tickets-1983063567513?aff=deepeng"><span>Register now</span></a></p><div><hr></div><p><strong>&#9997;&#65039; From the editor&#8217;s desk,</strong></p><p>Welcome to the 41<sup>st</sup> issue of Deep Engineering!</p><p>As AI scaling hits the <a href="https://semiengineering.com/memory-wall-gets-higher/">memory wall</a>, system performance is increasingly limited by data movement rather than raw compute power. This shifts the optimization focus toward data locality because adding cores provides no benefit when bandwidth bottlenecks the system. Writing fast code now requires precise control over memory layout and concurrency, yet these techniques often introduce complexity that becomes unmanageable as codebases grow.</p><p>That specific tension defines this week&#8217;s feature with <strong><a href="https://www.linkedin.com/in/morleys90/">Sam Morley</a></strong>, Research Software Engineer and Mathematician at the <strong>University of Oxford</strong> and author of <em><strong><a href="https://www.packtpub.com/en-us/product/the-c-programmers-mindset-9781835888438">The C++ Programmer&#8217;s Mindset</a></strong></em>. </p><p>Building on our earlier discussion in <a href="https://deepengineering.substack.com/p/deep-engineering-31-sam-morley-on">Part 1 around decomposition and abstraction</a> costs, today's issue digs deeper into the guiding principles for scaling C++ systems. It covers how teams can keep complexity under control as codebases grow, why template metaprogramming deserves extreme caution, and why thinking with the machine is non-negotiable when optimising cache layout.</p><p>Let&#8217;s get started.</p><div><hr></div><h2 style="text-align: center;"><a href="https://www.vpdae.com/redirect/5fyjlge1f9ex7lvgzd49zncleuf">Stop Building Vault</a></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.vpdae.com/redirect/5fyjlge1f9ex7lvgzd49zncleuf" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Syn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!_Syn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!_Syn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!_Syn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Syn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png" width="300" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.vpdae.com/redirect/5fyjlge1f9ex7lvgzd49zncleuf&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!_Syn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!_Syn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!_Syn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!_Syn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f67aa6-849f-46a9-8a05-53e9c5620c5e_300x300.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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">Sponsored </figcaption></figure></div><p style="text-align: center;">Secrets, PKI, &amp; PAM in one platform. Postgres-backed. No custom orchestration. Flexible deployment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.vpdae.com/redirect/5fyjlge1f9ex7lvgzd49zncleuf&quot;,&quot;text&quot;:&quot;Start for free today &#8594;&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.vpdae.com/redirect/5fyjlge1f9ex7lvgzd49zncleuf"><span>Start for free today &#8594;</span></a></p><div><hr></div><h1>Adopting the C++ Programmer&#8217;s Mindset (Part 2) with Sam Morley</h1><p>Before listing any specific practices, Morley introduces a concept he returns to repeatedly. He calls it the future you.</p><p>&#8220;Future you is your future self and for all intents and purposes this is a different person,&#8221; Morley says. &#8220;When you&#8217;re writing some code, you understand things the way they are in the context of what you&#8217;re doing at the moment. Future you will have lost this context. So, when you come back to your code in a month, six months, a year&#8217;s time and you look at it and you think what was I thinking &#8212; almost surely the answer to that is: I don&#8217;t know.&#8221;</p><p>The practical implication is easy to skip under deadline pressure, but it could be costly to ignore. Comments are not just for teammates. They are messages to yourself, written at the moment of maximum understanding, for a future reader who no longer has that understanding. Morley is explicit that this does not mean narrating the obvious. What he does instead, particularly on mathematically intricate work, is write large block comments that describe where the process is, how the next section works, and what the algorithm is intended to achieve. &#8220;These comments save me so much pain when I jump off the project for a week and then go back and have to remember exactly what I was trying to do.&#8221;</p><p>Beyond comments, Morley points to three C++ specific practices that matter most for scalability. The first is a <strong>strict separation of concerns</strong>. Numerical computation should not live in the same place as user-facing code. Components should be modular enough to be tested in isolation. This also pays dividends when distributing computation across clusters, because reusable tight-loop routines can be dropped into different distribution mechanisms without rework.</p><p>The second practice is <strong>thinking about thread safety earlier</strong> than you think you need to. Designing class members with that future in mind costs almost nothing early and can be enormously expensive to retrofit later. The third is <strong>keeping your build system clean</strong>. Morley uses CMake and is emphatic about this. &#8220;Having a broken build system is far worse than having broken code. It&#8217;s much harder to figure out what exactly has gone wrong if your build system is broken.&#8221; Build systems accumulate debt quietly and the consequences arrive at the worst possible moment, usually when you need to extract a component into its own library under time pressure.</p><h2><strong>When metaprogramming becomes the problem</strong></h2><p>&#8220;I&#8217;ve seen some horrendous template metaprogramming in my life,&#8221; Morley reflects. &#8220;I&#8217;ve written some horrendous template metaprogramming in my life. I&#8217;m going to be the first one to admit that it&#8217;s never worth it.&#8221;</p><p>The target here is the elaborate kind: deeply nested type machinery and SFINAE-heavy <code>enable_if</code> chains. Instantiating a complex template metaprogram can easily double compile time for a single translation unit. At scale, across thousands of files, the cost becomes structural. Morley notes this is exactly why Google kept metaprogramming to an absolute minimum when writing Abseil. Modern C++ has reduced the genuine need for TMP significantly. Concepts and <code>constexpr</code> functions cover much of what engineers used to reach for TMP to solve, with readable syntax and without the compile time penalty.</p><p>Lambdas are a different conversation. Used correctly, Morley thinks they are one of the most readability-enhancing tools in the language. Used carelessly, they introduce exactly the kind of invisible coupling that makes the future you miserable. His specific warning is about lambdas that capture and modify values defined far away from where the lambda is used. &#8220;Every time you think what is this lambda doing, it&#8217;s modifying something that you&#8217;ve not looked at for a long time because your screen has been further down the page.&#8221; In cases where a lambda is the only place that reads or writes a particular value, Morley argues the value almost certainly belongs inside a class, where the ownership and mutation path are explicit.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4WHF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4WHF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png 424w, https://substackcdn.com/image/fetch/$s_!4WHF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png 848w, https://substackcdn.com/image/fetch/$s_!4WHF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png 1272w, https://substackcdn.com/image/fetch/$s_!4WHF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4WHF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png" width="903" height="337" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:337,&quot;width&quot;:903,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4WHF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png 424w, https://substackcdn.com/image/fetch/$s_!4WHF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png 848w, https://substackcdn.com/image/fetch/$s_!4WHF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.png 1272w, https://substackcdn.com/image/fetch/$s_!4WHF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5180dc2f-843c-405c-a720-a93da5a3970e_903x337.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Thinking with the machine</strong></h2><p>Morley uses a road analogy to introduce hardware-aware programming. If you are driving down an unfamiliar road in the dark, you slow down because you cannot see what is ahead. Knowing the road means you can go faster without risk. The system you are running the code on is the road, the code you are writing is the car, and understanding the road conditions means you can drive faster with confidence.</p><p>The most practically important piece of hardware to understand is the <strong>cache hierarchy</strong>. Cache behavior is invisible in the code but determines a large part of actual runtime performance. The canonical example comes from the games industry: the debate between <strong>Array of Structs (AoS)</strong> and <strong>Struct of Arrays (SoA)</strong>.</p><p>If you represent each game entity as a large struct and store those structs in a vector, then iterating over position data means striding across the full width of each struct to reach the next position value. &#8220;Big strides are bad for the cache. What you really want is all of the position data to be close together.&#8221;</p><p>The alternative is to separate data by type, storing all position values together and all velocity values together, so that each field is laid out contiguously in memory rather than interleaved across structs. As Morley puts it: &#8220;This transformation basically doubles or quadruples your throughput because now you don&#8217;t have to step over all of the useless data in order to update your position.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EP7K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EP7K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png 424w, https://substackcdn.com/image/fetch/$s_!EP7K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png 848w, https://substackcdn.com/image/fetch/$s_!EP7K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png 1272w, https://substackcdn.com/image/fetch/$s_!EP7K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EP7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png" width="903" height="343" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:343,&quot;width&quot;:903,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EP7K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png 424w, https://substackcdn.com/image/fetch/$s_!EP7K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png 848w, https://substackcdn.com/image/fetch/$s_!EP7K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.png 1272w, https://substackcdn.com/image/fetch/$s_!EP7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd791d54-d1d0-4d6f-a213-7b9634b9b71c_903x343.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Matrix multiplication illustrates the same principle at a more concrete level. In one direction, data access is sequential and cache-friendly. In the other direction, moving between rows in a column means jumping across memory in steps as wide as the entire matrix, which is exactly what the cache is designed to avoid. The standard mitigation is tiling: load a small tile of the matrix, do as much computation as possible on that tile, then move to the next one. Morley walks through a tiled implementation in the book and notes roughly a four-times improvement over the naive approach from tiling alone, before any SIMD or pipelining optimisations are applied.</p><p>Branch prediction and SIMD matter too, but Morley is careful about context. For general-purpose application code, the compiler will usually make reasonable decisions, and the latency bottleneck is more often a network call or a disk write than an instruction pipeline stall. These details start to matter seriously when throughput is the primary constraint: training large models, running physics simulations, anything where a microsecond saved per operation compounds into meaningful wall-clock time across billions of invocations. &#8220;Taking an extra microsecond to do a calculation is devastating when you have to do that a billion times.&#8221;</p><h2><strong>Concurrency: two models, two risk profiles</strong></h2><p>Morley distinguishes two fundamentally different multi-threaded scenarios that require different mental models.</p><p>The first is data parallelism. A large dataset split across threads, each thread operating on its own independent range with no shared state. <em>&#8220;There&#8217;s never any overlap. Each thread goes away, does its work, and the results are put in the buffer.&#8221;</em> This is relatively safe territory. Parallel algorithms and OpenMP handle much of the machinery, and as long as the data partition is clean and there is no self-referential access, data races are structurally prevented.</p><p>The second scenario is harder. Multiple worker threads operating on shared state within a larger system. A dispatch queue is the typical pattern, where a main thread stacks work items and worker threads pull from the queue. Here, ownership discipline becomes non-negotiable. </p><p>Morley&#8217;s design goal is simple to state and difficult to achieve: only one thread, one function, one whatever should be able to modify a value at any given time. There are two ways to achieve this. The first is architectural: design the program so that each thread exclusively owns its data and never touches another thread&#8217;s values. The second is synchronisation: use atomics, mutex-locked values, or other thread-safe mechanisms to control access.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ahy9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ahy9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png 424w, https://substackcdn.com/image/fetch/$s_!ahy9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png 848w, https://substackcdn.com/image/fetch/$s_!ahy9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png 1272w, https://substackcdn.com/image/fetch/$s_!ahy9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ahy9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png" width="903" height="367" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:367,&quot;width&quot;:903,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ahy9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png 424w, https://substackcdn.com/image/fetch/$s_!ahy9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png 848w, https://substackcdn.com/image/fetch/$s_!ahy9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.png 1272w, https://substackcdn.com/image/fetch/$s_!ahy9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85faf9b9-f322-4c67-8086-a294a8baa630_903x367.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Morley urges engineers to read the synchronisation documentation carefully before reaching for any of these tools. Deadlocks happen when engineers use them without fully understanding their semantics. The architectural solution is always preferable when achievable: if you can design the program so that each thread never touches another thread&#8217;s data, you eliminate the entire class of problem. When you cannot, synchronisation primitives are available, but the burden of correctness falls entirely on the engineer.</p><h2><strong>Memory safety and the Rust argument</strong></h2><p>The issue closes on a topic that provokes strong reactions in C++ communities. With around 70% of serious security vulnerabilities attributed to memory safety failures in C and C++ code, the question of whether the language itself is the problem is not academic.</p><blockquote><p>Morley&#8217;s answer is direct. <em>&#8220;Go and learn some Rust.&#8221;</em></p></blockquote><p>He anticipates the objection. <em>&#8220;A lot of C++ programmers turn their nose up when Rust is mentioned. Generally, the feeling is: we don&#8217;t need Rust, we can do all of this in C++. But that&#8217;s not the point.&#8221;</em> The point is that the Rust compiler forces a specific kind of thinking about ownership and lifetime that C++ leaves entirely to the developer. Rust&#8217;s sync and send traits enforce thread safety at the type system level. Unsafe code is marked explicitly, which means the developer makes a deliberate choice to step outside safe boundaries rather than doing so accidentally. <em>&#8220;Learning a bit of Rust will make you better at writing safe C++. The reverse is not true.&#8221;</em></p><p>For engineers who are not yet ready to invest in Rust, Morley's immediate C++ recommendations are practical and specific. Prefer <code>std::array</code> over C-style arrays. Use smart pointers instead of manual memory management; writing operator new directly in application code is an antipattern at this point. Use <code>std::span</code> rather than raw pointers when passing data around. Avoid the C standard library IO functions entirely: <code>gets</code>, <code>puts</code>, <code>sprintf</code>, and their relatives have documented vulnerabilities and safer equivalents exist.</p><blockquote><p><em>&#8220;The best-case scenario for a bad memory access is a crash. If it goes unnoticed, it could happen for months before you notice that this has been producing garbage the entire time. By which point you&#8217;ve wasted months.&#8221;</em></p></blockquote><p>The throughline from <a href="https://deepengineering.substack.com/p/deep-engineering-31-sam-morley-on">Part 1</a> holds here. Whether the subject is decomposition, abstraction, maintainability, or memory safety, Morley keeps returning to the same discipline: be conscious of what you are doing, understand the costs of your choices, write for the person who will read the code next, and treat the machine as a collaborator rather than a black box.</p><h2><strong>&#128269; In case you missed it&#8230;</strong></h2><p>The complete Chapter 1 from Sam Morley&#8217;s book, The C++ Programmer&#8217;s Mindset &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5269e736-ea61-4f8d-b468-9e75cd9dbf63&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Thinking Computationally&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:440051761,&quot;name&quot;:&quot;Sam Morley&quot;,&quot;bio&quot;:&quot;Research software engineer and mathematician on the DataSig project at the University of Oxford.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!hfZA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b7dcfcf-a878-45d0-99e4-a8f2045dee3e_144x144.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://sammorley.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://sammorley.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Sam Morley&quot;,&quot;primaryPublicationId&quot;:7726502}],&quot;post_date&quot;:&quot;2026-01-22T08:31:44.729Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7667fcd3-2279-4e00-a74d-ff1459f26896_800x533.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/thinking-computationally&quot;,&quot;section_name&quot;:&quot;Practical Deep-Dives&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:185392285,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0154149e-12fd-4a3b-bd08-fe678eb672c9&quot;,&quot;caption&quot;:&quot;C++ rewards engineers who treat problem-solving as a deliberate process rather than an improvisation. In this conversation, Sam Morley returns repeatedly to that theme: decompose the work until it becomes a set of solvable, &#8220;atomic&#8221; parts, then choose abstractions that fit the real constraints of the system. He argues that abstractions are never free, e&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The C++ Programmer&#8217;s Mindset on Abstraction Costs, &#8220;Future You,&#8221; and Thinking with the Machine: A Conversation with Sam Morley&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:140662997,&quot;name&quot;:&quot;Divya Anne Selvaraj&quot;,&quot;bio&quot;:&quot;Editor-in-Chief of Deep Engineering by Packt&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/309a6f07-27a6-40bf-ab99-d042556d816b_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:440051761,&quot;name&quot;:&quot;Sam Morley&quot;,&quot;bio&quot;:&quot;Research software engineer and mathematician on the DataSig project at the University of Oxford.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!hfZA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b7dcfcf-a878-45d0-99e4-a8f2045dee3e_144x144.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://sammorley.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://sammorley.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Sam Morley&quot;,&quot;primaryPublicationId&quot;:7726502}],&quot;post_date&quot;:&quot;2026-01-22T05:13:13.607Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/TRii5U87yn8&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/the-c-programmers-mindset-on-abstraction&quot;,&quot;section_name&quot;:&quot;Interviews&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:185273208,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a75cf9ab-b8b4-43a8-bfa5-5fa6353fe767&quot;,&quot;caption&quot;:&quot;C++ Memory Management Masterclass (Live) &#8212; Jan 24&#8211;25&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Deep Engineering #31: Sam Morley on decomposition &amp; abstraction in C++&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:140662997,&quot;name&quot;:&quot;Divya Anne Selvaraj&quot;,&quot;bio&quot;:&quot;Editor-in-Chief of Deep Engineering by Packt&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/309a6f07-27a6-40bf-ab99-d042556d816b_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:440051761,&quot;name&quot;:&quot;Sam Morley&quot;,&quot;bio&quot;:&quot;Research software engineer and mathematician on the DataSig project at the University of Oxford.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!hfZA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b7dcfcf-a878-45d0-99e4-a8f2045dee3e_144x144.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://sammorley.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://sammorley.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Sam Morley&quot;,&quot;primaryPublicationId&quot;:7726502}],&quot;post_date&quot;:&quot;2026-01-22T13:31:21.327Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e6bf12-873b-4f08-ac14-f9e4d69295a8_800x533.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://deepengineering.substack.com/p/deep-engineering-31-sam-morley-on&quot;,&quot;section_name&quot;:&quot;Newsletter Issues&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:185385606,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1729053,&quot;publication_name&quot;:&quot;Packt Deep Engineering&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!H5BJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F736bc1ee-d689-497e-83a8-7d9bf9022eb9_600x600.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>&#128736;&#65039; Tool of the Week</h2><p><strong><a href="https://github.com/google/benchmark">Google Benchmark</a> </strong>&#8212; A microbenchmark support library for C++</p><p>Google Benchmark is an open-source framework for measuring the performance of isolated C++ code so you can test cache-aware designs and tight-loop optimizations with high precision.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/google/benchmark&quot;,&quot;text&quot;:&quot;Learn more about Google Benchmark&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://github.com/google/benchmark"><span>Learn more about Google Benchmark</span></a></p><div><hr></div><h1><strong>&#128206; Tech Briefs</strong></h1><ul><li><p><a href="https://herbsutter.com/2026/03/29/c26-is-done-trip-report-march-2026-iso-c-standards-meeting-london-croydon-uk/">C++26 Finalizes Technical Work</a> &#8212; The ISO committee completed the C++26 draft in London, locking in features like compile-time reflection, memory safety improvements, and contracts ahead of final approval.</p></li><li><p><a href="https://blog.rust-lang.org/2026/03/26/1.94.1-release/">Rust 1.94.1 Shipped</a> &#8212; A point release that fixes compiler regressions, resolves clippy false positives on match arms, and updates Cargo dependencies to address critical CVEs.</p></li><li><p><a href="https://blog.jetbrains.com/rust/2026/03/30/whats-new-in-rustrover-2026-1/">RustRover 2026.1 Released</a> &#8212; JetBrains introduced cargo-nextest integration, a call hierarchy view, LLDB 21 upgrades, and improved DWARF indexing for procedural macros.</p></li><li><p><a href="https://cppcon.org/category/news/">CppCon 2026 Opens Registration</a> &#8212; Registration is open for the Colorado event, with sessions covering AI infrastructure, low-latency design, and hardware-aware performance.</p></li><li><p><a href="https://www.helpnetsecurity.com/2026/02/09/linux-kernel-6-19-released/">Linux Kernel 7.0 Approaches</a> &#8212; After Linux 6.19, the merge window for 7.0 is now open, pointing to a major version release expected later this April.</p></li></ul><div><hr></div><p>That&#8217;s all for today. Thank you for reading this issue of Deep Engineering.</p><p>We&#8217;ll be back next week with more expert-led content.</p><p>Stay awesome, </p><p>Saqib Jan </p><p>Editor-in-Chief, Deep Engineering</p><div><hr></div><p><em>If your company is interested in reaching an audience of senior developers, software engineers, and technical decision-makers, you may want to </em><strong><a href="https://packt.omeclk.com/portal/wts/uc%5EcnN2dfNaqmD-kB-mo66%7C7g%5Ef%7Cb">advertise with us</a></strong><em>.</em></p>]]></content:encoded></item></channel></rss>