<?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[Technically]]></title><description><![CDATA[Making practical sense of software and AI.]]></description><link>https://read.technically.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!fW1i!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F336552cc-dbde-4429-98ac-b36fc31a537a_308x308.png</url><title>Technically</title><link>https://read.technically.dev</link></image><generator>Substack</generator><lastBuildDate>Sun, 02 Aug 2026 05:33:08 GMT</lastBuildDate><atom:link href="https://read.technically.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Justin]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[technically@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[technically@substack.com]]></itunes:email><itunes:name><![CDATA[Justin]]></itunes:name></itunes:owner><itunes:author><![CDATA[Justin]]></itunes:author><googleplay:owner><![CDATA[technically@substack.com]]></googleplay:owner><googleplay:email><![CDATA[technically@substack.com]]></googleplay:email><googleplay:author><![CDATA[Justin]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[What is Rust?]]></title><description><![CDATA[The fast, safe, super difficult to write programming language that&#8217;s finally getting its flowers.]]></description><link>https://read.technically.dev/p/what-is-rust</link><guid isPermaLink="false">https://read.technically.dev/p/what-is-rust</guid><dc:creator><![CDATA[Will Raphaelson]]></dc:creator><pubDate>Tue, 28 Jul 2026 14:15:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!F479!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>If you haven&#8217;t read </span><a href="https://read.technically.dev/p/whats-a-programming-language"><span>part 1</span></a><span>, go do that, or you might be&#8230;rusty...</span></p><p><span>In </span>part 1<span> I explained why there are so many different programming languages: because languages come with tradeoffs, and everyone wants to choose their tradeoffs differently. We discussed how memory and how it&#8217;s managed is one of if not the most important of those tradeoffs, and how when it comes to memory management you pretty much need to choose between your program being fast, or your program being safe.</span></p><p><span>The speed vs. safety thing was always around, but it was ultimately manageable. Slow safe programs were fast enough for most users, and fast unsafe languages could broadly keep up with the speed of attackers trying to exploit any memory-related vulnerabilities that snuck into </span><a href="https://technically.dev/universe/production"><span>production</span></a><span>.</span></p><p><span>But the game hath changed. Today, increasingly lag-intolerant consumers rely on massive multiplayer games with millions of concurrent players, trading platforms where a millisecond of latency costs real money, and critical </span><a href="https://technically.dev/universe/infrastructure"><span>infrastructure</span></a><span> that nation-states are actively and effectively hacking. Which begged the question (again): can we have a programming language that is both fast to write and safe from a memory perspective?</span></p><p><span>Rust is a programming language that says maybe you don&#8217;t have to choose.</span></p><p><span>It was created by a Mozilla engineer named Graydon Hoare, started as a personal project in 2006, got picked up by Mozilla as an official project in 2009, and hit its stable 1.0 release in 2015. It was built from scratch to be as fast as C and C++ while making an entire category of bugs impossible to write due to its unique approach to the memory problem.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically helps you make practical sense of how software + AI work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><span>To understand how Rust pulls this thing off, we need to go a little deeper on memory (again). What does it look like to write in a programming languages that do or don&#8217;t require you to manually work with memory?</span></p><p><span>First, the simpler one. In higher level languages like Python there is something called </span><strong><span>the garbage collector</span></strong><span> &#8211; a glamorous position if there ever was one. The garbage collector is a sort of &#8220;engine&#8221; that runs periodically in Python programs to help handle your memory for you. It scans your memory story and cleans it up. And much like a garbage truck if you&#8217;ve ever been stuck behind one while 10 minutes late for something important, it&#8217;s slow as hell because garbage collection is a computationally intensive task. Again, tradeoffs.</span></p><p><span>In a low level language like C, you must </span><em><span>manually</span></em><span> interact with the memory system, allocating data for each piece in your program. Before you can store a user&#8217;s birthday to display it to them in an app, you need to allocate a slot for it, and when you are done with the birthday, you need to release the memory. By allocating a slot, I mean literally telling the computer: hey, I need you to store this variable (an allocation), and it will require 8 bytes and data, and you should do it here in particular. And then Mr. Computer, when we are done with this variable, you should delete that data (a release). Like I said, computers both dumb and smart.</span></p><p><span>This manual process skirts around the garbage truck &#8211; which means it&#8217;s much faster while running &#8211; but it&#8217;s incredibly time consuming and error prone to write. If you miss an allocation or release anywhere in your code, it&#8217;s likely your program will crash or be vulnerable to hackers.</span></p><p><span>Like I said, for what seems like forever these were your two choices. Easy breezy but very slow garbage collection, or rigorous and fast but highly labor intensive (and vulnerable) manual memory allocation. Rust does a third thing.</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_!F479!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F479!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png 424w, https://substackcdn.com/image/fetch/$s_!F479!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png 848w, https://substackcdn.com/image/fetch/$s_!F479!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!F479!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F479!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&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_!F479!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png 424w, https://substackcdn.com/image/fetch/$s_!F479!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png 848w, https://substackcdn.com/image/fetch/$s_!F479!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!F479!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7766e4df-5291-4d6a-8792-a02685bb56b1_2048x1280.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><span>What makes Rust, Rust</span></h2><p><strong><span>The entire point of Rust is to enable developers to write manually allocated code that&#8217;s safe. </span></strong><span>It&#8217;s all about avoiding the vulnerabilities and bugs that tend to happen when you have to manually allocate memory. Both ways, western man.</span></p><p><span>So Rust&#8217;s primary thing, the thing it will </span><em><span>not</span></em><span> stop talking about at parties, is that it approaches memory management </span><em><span>differently</span></em><span>. It aims to be </span><strong><span>fast</span></strong><span>, so runtime memory management (the garbage truck) like in Python is a no-go. But those damn lower level languages are so unsafe. I saw three of them go into the bathroom together!</span></p><p><span>Rust&#8217;s Raison d&#8217;&#234;tre is the </span><strong><span>ownership system</span></strong><span>, which approaches our heralded tradeoff with a twist:</span></p><ul><li><p><span>You in fact </span><em><span>do</span></em><span> have to manage memory on your own. No garbage collection.</span></p></li><li><p><span>BUT, instead of manual memory allocation being the Wild West, Rust gives you a helpful partner of sorts to do that with you.</span></p></li></ul><p><span>Specifically, Rust elevates the role of the </span><strong><span>compiler</span></strong><span> from a simple translation machine to the world&#8217;s strongest and smartest bouncer. As you may recall, early computer scientists invented the compiler as the translation layer between human writable higher level languages and the 1s and 0s that the computer can actually run. The Rust compiler, however, does more than just translate.</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_!A2Tf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A2Tf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png 424w, https://substackcdn.com/image/fetch/$s_!A2Tf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png 848w, https://substackcdn.com/image/fetch/$s_!A2Tf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!A2Tf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A2Tf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png" width="1456" height="842" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:842,&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_!A2Tf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png 424w, https://substackcdn.com/image/fetch/$s_!A2Tf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png 848w, https://substackcdn.com/image/fetch/$s_!A2Tf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!A2Tf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dbb0837-a351-4a03-87c4-4bd1021a7deb_2048x1184.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><span>Where older manually allocated memory languages like C allow whatever bugs you write to end up in the compiled program ready to leak data or get exploited, the Rust compiler has an </span><em><span>extremely strict set of rules</span></em><span> that code </span><strong><span>must</span></strong><span> adhere to before being compiled. You physically cannot ship the bug because the compiler won&#8217;t let you build a program that isn&#8217;t responsible in regards to memory.</span></p><blockquote><p><span>&#8220;I don&#8217;t see how you can hate from outside of the club. You can&#8217;t even get in.&#8221;</span></p><p><em><span>- Chris Brown on his 2011 hit Look at me Now, and, the Rust compiler to improperly used memory</span></em></p></blockquote><p><span>So you get the speed of C, because there&#8217;s no garbage collector running in the background, but you don&#8217;t get the myriad memory bugs that have plagued C and C++ codebases for decades. The amazing Rust compiler catches crashes from accessing memory you already freed, security holes from forgetting to clean something up, all of it, before a single user ever touches the code.</span></p><p><span>This fabulous compiler is not a silver bullet. The issue is that Rust, with all its rules and requirements, is hard to write. Despite this however, developers love Rust. It&#8217;s been the most loved programming language in Stack Overflow&#8217;s annual developer survey every year since 2016, and every year it seems like more and more of the world&#8217;s software is written, or rewritten in Rust.</span></p><h2><span>The receipts: Rust in action</span></h2><p><span>The fast, safe, and beloved language is finally getting its flowers in the form of massive grassroots community growth, adoption by hardcore and influential dev teams, and endorsement by standards organizations and governments.</span></p><p><span>For years, &#8220;Rewrite It in Rust&#8221; was a joke. Any time someone on the internet mentioned a performance problem, a security bug, or really any problem at all, a Rust evangelist would show up in the comments and suggest, with complete sincerity, that the solution was to rewrite it in Rust. It became a meme, then a term of light mockery for a certain type of engineer who had discovered a new favorite language and would not shut up about it. The Rust community even has a mascot, Ferris the Crab, and a habit of spamming the &#129408; emoji into threads where it is not needed or wanted.</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_!XgdC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XgdC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png 424w, https://substackcdn.com/image/fetch/$s_!XgdC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png 848w, https://substackcdn.com/image/fetch/$s_!XgdC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png 1272w, https://substackcdn.com/image/fetch/$s_!XgdC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XgdC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png" width="625" height="477" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:477,&quot;width&quot;:625,&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_!XgdC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png 424w, https://substackcdn.com/image/fetch/$s_!XgdC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png 848w, https://substackcdn.com/image/fetch/$s_!XgdC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.png 1272w, https://substackcdn.com/image/fetch/$s_!XgdC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8adacf9f-0205-4e50-9fce-3a3d2f953232_625x477.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><span>But as the years scrolled by, the Rust-hater became the Rust-curious after Mozilla rewrote a major service in Rust and </span><a href="https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/"><span>wrote a blog about it in 2017</span></a><span>. The Rust-curious turned to Rust-fan after Dropbox called it a &#8220;force multiplier&#8221; for their core file syncing service, and little by little Rust has started eating the world, turning skeptics into believers, one codebase at a time.</span></p><ul><li><p><a href="https://discord.com/blog/why-discord-is-switching-from-go-to-rust"><span>Discord rewrote the service that tracks who&#8217;s online and in which servers</span></a><span>, switching from Go to Rust, and saw latency improvements so dramatic the periodic spikes that plagued the Go version disappeared entirely.</span></p></li><li><p><a href="https://technically.dev/posts/what-does-cloudflare-do"><span>Cloudflare</span></a><span> rewrote a core piece of their network infrastructure and got 25% better performance at half the compute cost. </span><a href="https://technically.dev/posts/what-does-cloudflare-do"><span>Cloudflare</span></a><span> sits in front of about 20% of all web traffic.</span></p></li><li><p><a href="https://www.theregister.com/2023/04/27/microsoft_windows_rust/"><span>Microsoft has been rewriting parts of Windows in Rust for years.</span></a><span> The reason is that roughly 70% of the security vulnerabilities Microsoft has patched since 2006 trace back to memory safety issues.</span></p></li><li><p><span>The </span><a href="https://technically.dev/universe/linux"><span>Linux</span></a><span> </span><a href="https://technically.dev/universe/kernel"><span>Kernel</span></a><span> added Rust as a supported language in 2022 and researchers estimate it could eliminate around two-thirds of the security vulnerabilities in the components written in it.</span></p></li><li><p><a href="https://huggingface.co/docs/tokenizers/en/index"><span>Hugging Face rewrote their tokenizer library in Rust</span></a><span>, and it now processes a full gigabyte of text in under 20 seconds on a standard CPU, dramatically faster than the Python-based tokenizers it replaced.</span></p></li></ul><p><span>But don&#8217;t take my word for it, take Uncle Sam&#8217;s. </span><a href="https://bidenwhitehouse.archives.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf"><span>The federal government published a report in 2024</span></a><span> recommending that the software industry move away from C and C++ toward memory-safe languages, naming Rust specifically.</span><a href="https://www.cisa.gov/resources-tools/resources/memory-safe-languages-reducing-vulnerabilities-modern-software-development"><span> The NSA and CISA have issued similar guidance.</span></a><span> When the feds start weighing in on what programming language you should use, the meme phase is probably over.</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_!XW73!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XW73!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png 424w, https://substackcdn.com/image/fetch/$s_!XW73!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png 848w, https://substackcdn.com/image/fetch/$s_!XW73!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!XW73!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XW73!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&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_!XW73!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png 424w, https://substackcdn.com/image/fetch/$s_!XW73!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png 848w, https://substackcdn.com/image/fetch/$s_!XW73!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!XW73!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2763178a-1e78-4098-97de-9b3f84e6594e_2048x1280.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><span>The trolls who mocked rust and spammed the meme were right that you probably shouldn&#8217;t undertake a full rust rewrite to change the color of a button, but wrong about most of the rest. Rust didn&#8217;t come with a flashy million-dollar marketing campaign; it came with pudding&#8230; in which there was proof that if your users want snappy, secure software (and they do) Rust can help make that happen.</span></p><h2><span>Lets try this again</span></h2><p><span>I think now we&#8217;re ready for that definition of Rust.</span></p><p><span>Rust is a statically-typed, compiled programming language that enforces memory safety through compile-time ownership semantics without requiring a garbage collector.</span></p><p><span>If you ask me, Rust adoption will continue to rise for its killer performance, tight memory safety, and growing presence in systems-level infrastructure, but also due to the rise of LLM-generated code. The fact that Rust is hard to write was a significant barrier to entry when actual humans were coding. But LLMs don&#8217;t feel that friction the same way; they can bang out thousands of lines of Rust no problem, which effectively lowers the cost of choosing it. And there seems to be a calcifying effect around language choices, with LLMs knowing the most about the languages that already have the most code written in them. Rust has a large, high-quality </span><a href="https://technically.dev/universe/open-source"><span>open source</span></a><span> footprint, which means models are well-trained on it.</span></p><p><span>There will likely be downstream consequences when it comes to maintaining the inevitable deluge of rust-slop given how steep the human rust-learning curve is, but in any case, we see no signs of slowing Rust&#8217;s massive growth in popularity.</span></p>]]></content:encoded></item><item><title><![CDATA[What's Harness Engineering?]]></title><description><![CDATA[If AI models are a commodity, the harness is the thing you want to own.]]></description><link>https://read.technically.dev/p/whats-harness-engineering</link><guid isPermaLink="false">https://read.technically.dev/p/whats-harness-engineering</guid><dc:creator><![CDATA[Paul Iusztin]]></dc:creator><pubDate>Tue, 21 Jul 2026 14:15:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ABh8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong><span>The TL;DR</span></strong></h2><p>An AI model on its own can only <strong>talk</strong>. </p><p>A <strong>harness</strong> is the software wrapped around it that lets it actually <strong>do things</strong>: touch your files, run your tools, and remember what happened.</p><ul><li><p>An AI model by itself only <strong>answers a prompt</strong>. A harness is what lets it <strong>act</strong>: use tools, remember, and take steps until a job is done.</p></li><li><p>Picture <strong>harnessing a horse</strong>: the horse is the raw power, the harness is what lets you put it to work without it bolting.</p></li><li><p>The AI coding agents you&#8217;ve heard of (<strong>Claude Code, Codex, Cursor</strong>) are all <strong>harnesses</strong>.</p></li><li><p>The <strong>frontier model</strong> is becoming a <strong>commodity</strong> (everyone rents the same few). Your harness<strong> </strong>configuration is what you want to own.</p></li></ul><p><span>The next decade of software won&#8217;t be &#8220;an app with AI added on.&#8221; </span></p><p><span>It&#8217;ll be harnesses, and the build-vs-buy call is yours to make. So read this!</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_!0RDi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0RDi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png 424w, https://substackcdn.com/image/fetch/$s_!0RDi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png 848w, https://substackcdn.com/image/fetch/$s_!0RDi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!0RDi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0RDi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png" width="1400" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1400,&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;: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_!0RDi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png 424w, https://substackcdn.com/image/fetch/$s_!0RDi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png 848w, https://substackcdn.com/image/fetch/$s_!0RDi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!0RDi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9359838-fa7f-4205-bbf8-9a735f00d7c0_1400x1000.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><span>For the past 6 months I&#8217;ve done a bet with myself: </span><strong><span>do </span></strong><em><strong><span>everything</span></strong></em><strong><span> through agentic tools, change a line of code or text only when I absolutely have to.</span></strong></p><p><span>At the beginning this made me incredibly slow, but as I progressed and turned into a power user, I started to see the value in harnessing AI models myself. Currently I am interacting with my computer 90% via Claude Code and I can see how harnesses have the potential to revolutionize how we think about software and computers in general.</span></p><p>Now let&#8217;s see why a raw model can&#8217;t do the job on its own, what a harness actually is, the everyday parts every harness is built from, and what all of it means for your company.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically helps you make practical sense of software + AI, once a 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><h2><strong><span>Why a Raw Model Isn&#8217;t Enough</span></strong></h2><p><span>On its own, an AI model does exactly one thing: you give it one input, it hands you one output, and then it stops. No memory of the last step, no ability to take the next. </span></p><p><span>That&#8217;s </span><em><span>not</span></em><span> the magic you feel in Claude Code or Codex. Those tools take dozens of steps on their own: reading your files, running things, catching their own mistakes, pulling what they need from memory or the internet, looping until the job is actually done. A raw model can&#8217;t do any of that by itself.</span></p><p><span>That repeat-until-done cycle (</span><em><span>read what&#8217;s there &#8594; decide the next step &#8594; do it &#8594; check the result &#8594; go again</span></em><span>) has a name. It&#8217;s the </span><strong><span>agent</span></strong><span> </span><strong><span>loop</span></strong><span>, and it&#8217;s the engine that turns a one-shot answer into finished work. </span></p><p><span>And the best ones don&#8217;t just act. They </span><em><span>check their own work</span></em><span>.</span><a href="https://x.com/bcherny/status/2007179832300581177"><span> Boris Cherny, who created Claude Code</span></a><span>, says the most important thing for getting great results is giving the AI a way to verify its own work: a feedback loop that, in his words, can </span><em><span>2&#8211;3&#215; the quality of the final result</span></em><span>. That self-correction is a harness feature, not a model one.</span></p><p><span>This takes us from </span><strong><span>&#8220;answers a question&#8221;</span></strong><span> to </span><strong><span>&#8220;does the job&#8221;:</span></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ABh8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ABh8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png 424w, https://substackcdn.com/image/fetch/$s_!ABh8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png 848w, https://substackcdn.com/image/fetch/$s_!ABh8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png 1272w, https://substackcdn.com/image/fetch/$s_!ABh8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ABh8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png" width="1400" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:1400,&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_!ABh8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png 424w, https://substackcdn.com/image/fetch/$s_!ABh8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png 848w, https://substackcdn.com/image/fetch/$s_!ABh8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.png 1272w, https://substackcdn.com/image/fetch/$s_!ABh8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d2c0cc-3ac3-4ac5-8012-cfc65928cd58_1400x780.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>A raw model answers once and stops. A harness wraps it in a loop that keeps going until the job is actually finished.</em></figcaption></figure></div><p><span>If the model is the easy part and what&#8217;s built around it is the hard part, the obvious question is: what </span><em><span>is</span></em><span> a harness?</span></p><h2><strong><span>So What&#8217;s a Harness?</span></strong></h2><p><span>Picture a wild horse. It&#8217;s raw power it&#8217;s nearly useless until you </span><strong><span>harness</span></strong><span> it: reins to steer it, blinders to keep it focused on the road, a saddle so it can carry weight.</span></p><p><span>A model is the horse. The </span><strong><span>harness</span></strong><span> is the software wrapped around it. It adds the hands (tools), the memory, the reins (guardrails), and the loop that lets it take many steps. That combination (not the horse alone) is what does real work.</span></p><p><strong><span>An</span></strong><span> </span><strong><span>agent = a model + a harness</span></strong><span>. The </span><strong><span>agent</span></strong><span> is the working thing you actually use: a model with a harness wrapped around it. The model is the raw intelligence. </span></p><p><span>The harness is what puts it to work. LangChain (a popular toolkit for building these systems) frames it bluntly: the harness is everything that isn&#8217;t the model itself, and that &#8220;everything else&#8221; is where almost all of the engineering, and the magic, actually lives.</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_!NWyy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NWyy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png 424w, https://substackcdn.com/image/fetch/$s_!NWyy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png 848w, https://substackcdn.com/image/fetch/$s_!NWyy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png 1272w, https://substackcdn.com/image/fetch/$s_!NWyy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NWyy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png" width="1400" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1400,&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_!NWyy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png 424w, https://substackcdn.com/image/fetch/$s_!NWyy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png 848w, https://substackcdn.com/image/fetch/$s_!NWyy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.png 1272w, https://substackcdn.com/image/fetch/$s_!NWyy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129fd74c-cfd2-4072-9113-1cf763f39498_1400x640.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>A model on its own is a horse, raw power, but useless. Add the harness (tools, memory, guardrails, and the loop) and you get an agent that does real work.</em></figcaption></figure></div><p><span>There&#8217;s a name for the work of building one, too. Mitchell Hashimoto (a veteran engineer, co-founder of </span><a href="https://technically.dev/posts/what-does-hashicorp-do"><span>HashiCorp</span></a><span>) calls it harness engineering: &#8220;anytime you find an agent makes a mistake, you take the time to engineer a solution such that the agent never makes that mistake again.&#8221; </span></p><p><span>So a harness is what that work leaves behind. Lessons about how the AI fails gets built into the wrapper so it stops failing that way (and instead finds new ways to fail :).</span></p><h2><strong><span>What&#8217;s Inside a Harness</span></strong></h2><p><span>At the center of the harness, we have the loop, the engine that keeps calling the model until the job is done. Plus a kit of 7 parts that allows us to steer the model&#8217;s behavior:</span></p><p><strong><span>Tools.</span></strong><span> Without them, the AI model can only provide &#8220;talk&#8221;. In other words, it can only output text, images or audio. With them, it can interact with the outer world, such as reading files from your computer, executing code, searching the web or editing a document.</span></p><p><strong><span>Memory</span></strong><span>. The AI forgets everything between sessions, so the harness gives it files to write to and read back: its long-term memory and to-do list. </span></p><p><span>The files are what let it remember anything at all and pick up where the last session left off. The simplest memory implementations are based on files, but depending on the complexity of your use case, you may need a more sophisticated solution based on </span><a href="https://technically.dev/universe/vector-database"><span>vector</span></a><span> or graph </span><a href="https://technically.dev/universe/database"><span>databases</span></a><span>.</span></p><p><strong><span>Context</span></strong><span>. The </span><a href="https://technically.dev/universe/context-window"><span>context window</span></a><span> is what the </span><a href="https://technically.dev/universe/llm"><span>LLM</span></a><span> sees at a time, in each iteration of its loop. The problem is that it&#8217;s limited to 128K, 256K, up to 1M tokens. As the </span><a href="https://technically.dev/universe/context-window"><span>context window</span></a><span> grows, the model starts to get confused and produce incorrect results, a problem known as &#8220;context rot.&#8221; The role of the harness is to keep the </span><a href="https://technically.dev/universe/context-window"><span>context window</span></a><span> sanitized by adding/removing components at each iteration. Ideally, you want to keep the context with exactly the right information that gets the job done.</span></p><p><strong><span>A </span><a href="https://technically.dev/posts/what-are-code-sandboxes"><span>sandbox</span></a></strong><span>. It&#8217;s a safe room where the AI can make a mess (run things, break things) without the risk of touching anything real in your business, such as deleting files, accessing sensitive data or even running malicious code on the computers from your private network. </span></p><p><span>The goal is to give the agent exactly as much access as it needs to get the job done. Otherwise, during its agentic loop, it can always decide to go rogue just to achieve its goals. It&#8217;s very common to start looking around for </span><a href="https://technically.dev/universe/api"><span>API</span></a><span> keys to access data from your database or other services.</span></p><p><strong><span>Guardrails.</span></strong><span> A big part of guardrails is the permission layer, which sets the rules for what the AI may do on its own: what runs freely, what needs your </span><em><span>okay</span></em><span> first, and what&#8217;s automatically denied. These need to be carefully balanced to avoid asking the human to accept each command (which adds a ton of friction, forcing the user to babysit the agent) while still asking for user input at essential points, such as deleting a file or changing one that&#8217;s not versioned.</span></p><p><strong><span>Orchestration.</span></strong><span> For complex jobs, 1 AI acts as a project lead, delegates to a team of specialist AIs, each handling a piece and then pulls the results together. A caution from experience: don&#8217;t reach for the multi-agent systems too early. I once split a job across 5 or 6 specialist AIs, and a single, well-set-up one beat the whole team.</span></p><p><strong><span>Interfaces.</span></strong><span> The same harness is reachable from your phone, laptop, browser, Slack, or WhatsApp.</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_!Vz_k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vz_k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Vz_k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Vz_k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!Vz_k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vz_k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&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_!Vz_k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Vz_k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Vz_k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!Vz_k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c81d05-30b1-48bc-84f5-1f3dc3b52ac7_1200x630.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>The full harness architecture.</em></figcaption></figure></div><h2><strong><span>The AI Tools You Already Know Are All Harnesses</span></strong></h2><p><span>Every popular AI tool you are using is a harness. Claude Code, Cursor, Codex: the same kind of model inside, a different harness wrapped around it.</span></p><p><span>Here&#8217;s what usually happens: when a product feels better than a plain chatbot (it remembers your project, fixes its own mistakes, actually finishes the task), that </span><em><span>feeling</span></em><span> is the </span><strong><span>harness</span></strong><span> doing its job. Two products can call the </span><em><span>exact same</span></em><span> model and feel worlds apart, purely because their harnesses are worlds apart.</span></p><p><span>And this isn&#8217;t just a vibe. In one public test done by LangChain, they changed only the harness around a coding agent (same model throughout) and it climbed from roughly 30th place into the top 5 on the </span><a href="https://technically.dev/universe/terminal"><span>Terminal</span></a><span> </span><a href="https://technically.dev/universe/benchmark"><span>Benchmark</span></a><span> used to evaluate agents.</span></p><p><span>Before we get to what this means for your company, let&#8217;s clear up 3 words that get thrown around as if they&#8217;re the same thing. </span></p><div class="callout-block" data-callout="true"><p><strong><span>&#128680; Confusion Alert</span></strong></p><p><span>1. </span><strong><a href="https://technically.dev/universe/prompt-engineering"><span>Prompt engineering</span></a></strong><span> = writing good instructions. Telling the AI clearly what you want.</span></p><p><strong><span>2. Context engineering</span></strong><span> = managing what the AI sees (the context window). You want to keep it </span><em><span>focused</span></em><span> (only what&#8217;s relevant), because piling on clutter actively confuses the model (the context rot issue).</span></p><p><span>3. </span><strong><span>Harness engineering</span></strong><span> = building the whole system around the model: the tools, the memory, the guardrails, the loop.</span></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T590!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T590!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png 424w, https://substackcdn.com/image/fetch/$s_!T590!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png 848w, https://substackcdn.com/image/fetch/$s_!T590!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png 1272w, https://substackcdn.com/image/fetch/$s_!T590!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T590!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png" width="1400" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1400,&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_!T590!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png 424w, https://substackcdn.com/image/fetch/$s_!T590!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png 848w, https://substackcdn.com/image/fetch/$s_!T590!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.png 1272w, https://substackcdn.com/image/fetch/$s_!T590!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c634f4c-fdb4-47a3-b085-2323c3c40595_1400x660.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>Prompt, context, and harness engineering are nested layers &#8212; each contains the one inside it, and harness engineering is the whole system around the model.</em></figcaption></figure></div><p><span>So harness engineering is the last step: the whole AI application around the model. Which raises the real question: should your team buy or build its own harness?</span></p><h2><strong><span>What This Means for Teams</span></strong></h2><p><span>Claude Code is a harness someone else built for general coding. It&#8217;s superb at that. But it will never know your finance rules, your data, your guardrails or your customers. The moment your AI needs to do </span><em><span>your</span></em><span> job, a generic harness hits a wall.</span></p><p><span>Still, a harness you build becomes its own product, with its own bugs, issues and maintenance overhead. Owning the layer can give you an advantage, but it&#8217;s an ongoing investment, not a one-and-done build. </span>The real question isn&#8217;t whether you can (Claude Code can build you a harness), it&#8217;s whether you should.</p><p><span>That&#8217;s why most people I know, including myself, are customizing harnesses (via skills and MCP servers) intended for coding, such as Claude Code, for their own use cases, or coupling them with Notion or Obsidian to transform them into their personal assistants.</span></p><p><span>But using coding harnesses for everything has one major drawback: they are optimized for coding, and the people building them will keep optimizing them for coding. This might lead them to behave more poorly with each version update.</span></p><p><span>Another huge drawback is that it&#8217;s almost impossible to build your own product on top of them. They are amazing as internal tools, but once you want to stitch a UI on top of them or distribute them to your users, you hit another wall.</span></p><p><span>That&#8217;s why we started seeing harnesses specialized for different domains, such as:</span></p><ul><li><p><strong><span>Creative:</span></strong><span> Descript (video), Canva Magic Studio &amp; Adobe Firefly (visuals), Figma AI (design)</span></p></li><li><p><strong><span>Legal:</span></strong><span> Harvey (drafting contracts), CoCounsel (reviewing contracts)</span></p></li><li><p><strong><span>Medical &amp; Healthcare:</span></strong><span> Abridge &amp; Nabla (generating clinical notes from doctor-patient conversations)</span></p></li><li><p><strong><span>Financial:</span></strong><span> I personally worked at ZTRON as a harness for financial advisors</span></p></li><li><p><strong><span>Productivity:</span></strong><span> Notion AI</span></p></li></ul><p><span>But there is a middle ground between building and buying. As harnesses are being standardized, major frameworks such as </span><a href="https://github.com/pydantic/pydantic-ai-harness"><span>Pydantic AI&#8217;s Harness</span></a><span>, </span><a href="https://pi.dev/"><span>Pi</span></a><span> or </span><a href="https://www.langchain.com/deep-agents"><span>LangChain&#8217;s Deep Agents</span></a><span> have recently entered the game. </span></p><p><span>They&#8217;re good open source starting points that provide the agentic loop, the 7 key parts and the option to easily add your own UI/UX and </span><a href="https://technically.dev/universe/distribution"><span>distribution</span></a><span>. </span></p><p><span>You don&#8217;t need to build a harness tomorrow, but it&#8217;s important to know that you </span><em><span>can</span></em><span> build a custom harness when you&#8217;re ready, and it&#8217;s a piece of your stack that&#8217;s worth owning.</span></p><h2><strong><span>Harness in Conversation</span></strong></h2><blockquote><p><em><span>&#8220;We&#8217;re still building out the harness around the model.&#8221;</span></em></p></blockquote><p><span>We have the AI. Now we&#8217;re building the software that lets it actually do the job.</span></p><blockquote><p><em><span>&#8220;That&#8217;s a model problem, not a harness problem.&#8221;</span></em></p></blockquote><p><span>The AI itself is getting it wrong, versus we just haven&#8217;t given it the right tools or memory yet. (Usually it&#8217;s the second one.)</span></p><blockquote><p><em><span>&#8220;We don&#8217;t want to be locked into someone else&#8217;s harness.&#8221;</span></em></p></blockquote><p><span>We want to own the layer that makes our AI </span><em><span>ours</span></em><span>, instead of renting it from a vendor.</span></p><blockquote><p><em><span>&#8220;We should switch to an open-source harness.&#8221;</span></em></p></blockquote><p><span>Move off a closed tool like Claude Code to an open-source alternative you can see inside and bend to your needs, such as OpenCode or Pi.</span></p><h2><strong><span>Further Reading</span></strong></h2><ul><li><p><span>If this isn&#8217;t enough harness engineering talk for you, I&#8217;m publishing a series on harness eng soon on my Substack, </span><a href="http://decodingai.com"><span>DecodingAI</span></a><span>.</span></p></li><li><p><span>Letting an AI check its own work is the single biggest lever for getting good results out of it, straight from</span><a href="https://x.com/bcherny/status/2007179832300581177"><span> the engineer who built Claude Code</span></a><span>.</span></p></li><li><p><span>If you want the full parts-list of a harness, plus the test where swapping only the wrapper took a coding agent from 30th place into the top 5, it&#8217;s all in</span><a href="https://www.langchain.com/blog/the-anatomy-of-an-agent-harness"><span> the anatomy of an agent harness</span></a><span>.</span></p></li><li><p><span>More on the &#8220;notebook&#8221; that lets an agent remember across sessions, in Anthropic&#8217;s guide to</span><a href="https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents"><span> effective harnesses for long-running agents</span></a><span>.</span></p></li><li><p><span>Learn</span><a href="https://blog.bytebytego.com/p/how-openai-codex-works"><span> how OpenAI&#8217;s Codex actually works</span></a><span>.</span></p></li><li><p><span>More on keeping the AI&#8217;s context window clean, and avoiding &#8220;context rot,&#8221; in Anthropic&#8217;s guide to</span><a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents"><span> effective context engineering</span></a><span>.</span></p></li></ul>]]></content:encoded></item><item><title><![CDATA[What does Turbopuffer do?]]></title><description><![CDATA[And what's going on in the search tooling market?]]></description><link>https://read.technically.dev/p/what-does-turbopuffer-do</link><guid isPermaLink="false">https://read.technically.dev/p/what-does-turbopuffer-do</guid><dc:creator><![CDATA[David Krevitt]]></dc:creator><pubDate>Tue, 14 Jul 2026 14:30:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!72Ge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc2bf50-223b-4b09-be5a-146a799bb845_2048x1297.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><span>The TL;DR</span></h2><p><span>Turbopuffer is a search engine built on top of object storage (like </span><a href="https://technically.dev/posts/aws-for-the-rest-of-us"><span>AWS</span></a><span> S3).</span></p><ul><li><p><span>AI applications need to quickly search through lots of unstructured data (text + </span><a href="https://technically.dev/universe/embeddings"><span>embeddings</span></a><span>). Cursor searches through your codebase, Notion AI searches through your documents.</span></p></li></ul><ul><li><p><span>In the early days of AI applications, most vector search options (like </span><a href="https://technically.dev/universe/vector-[[database:database"><span>vector databases</span></a><span>) stored data on RAM to ensure fast </span><a href="https://technically.dev/universe/query"><span>query</span></a><span> times. This turned out to be quite expensive.</span></p></li></ul><ul><li><p><span>Turbopuffer offers a </span><strong><span>search engine</span></strong><span> on data stored in </span><strong><span>object storage</span></strong><span> (like AWS S3), and only pulls data into RAM when it&#8217;s needed. They claim this makes it 10x cheaper while still being fast.</span></p></li></ul><ul><li><p><span>Competitors like Pinecone and </span><a href="https://technically.dev/posts/what-does-elastic-do"><span>Elastic</span></a><span> also followed suit with &#8220;</span><a href="https://technically.dev/universe/server"><span>serverless</span></a><span>&#8221; vector search tooling.</span></p></li></ul><p><span>Search is one of the most competitive spaces in AI </span><a href="https://technically.dev/universe/infrastructure"><span>infrastructure</span></a><span>. Turbopuffer reportedly crossed $100M in ARR recently, so their early bet on object storage is paying off.</span></p><p><span>Their story is one of an obsessive focus on knowing what can be done with the tools </span><a href="https://technically.dev/universe/cloud"><span>cloud</span></a><span> providers like AWS + GCP have on offer. It&#8217;s a tale as old as 2006.</span></p><h2><span>Separation of storage and compute</span></h2><p><span>In 2006, AWS </span><a href="https://press.aboutamazon.com/2006/3/amazon-web-services-launches"><span>launched</span></a><span> a simple product without fanfare. It let developers store + retrieve unlimited numbers of files, and it promised not to lose track of them:</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_!w3P6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w3P6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png 424w, https://substackcdn.com/image/fetch/$s_!w3P6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png 848w, https://substackcdn.com/image/fetch/$s_!w3P6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png 1272w, https://substackcdn.com/image/fetch/$s_!w3P6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w3P6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png" width="1456" height="406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:406,&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_!w3P6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png 424w, https://substackcdn.com/image/fetch/$s_!w3P6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png 848w, https://substackcdn.com/image/fetch/$s_!w3P6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.png 1272w, https://substackcdn.com/image/fetch/$s_!w3P6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd685d9-cf19-456c-8ffc-9183ca1029cb_1886x526.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><span>All software does is basically manipulate files, and S3 (Simple Storage Service) was a bottomless filing cabinet.</span></p><p><span>Renting it was much cheaper than buying your own filing cabinet of merely moderate size.</span></p><p><span>AWS </span><a href="https://aws.amazon.com/about-aws/whats-new/2006/08/24/announcing-amazon-elastic-compute-cloud-amazon-ec2---beta/"><span>launched</span></a><span> S3&#8217;s soulmate, EC2 (Elastic Compute Cloud) in a similarly low-energy way in August of 2006. It let you rent as many servers as you needed, whenever you needed them.</span></p><p><span>This pairing (the foundation of the Cloud) made developers rather thirsty. By separating compute from storage as separate cloud </span><a href="https://technically.dev/posts/what-are-microservices"><span>services</span></a><span>, you could reimagine stodgy, ubiquitous infrastructure like databases.</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_!bBUO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bBUO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png 424w, https://substackcdn.com/image/fetch/$s_!bBUO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png 848w, https://substackcdn.com/image/fetch/$s_!bBUO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png 1272w, https://substackcdn.com/image/fetch/$s_!bBUO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bBUO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png" width="1456" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&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_!bBUO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png 424w, https://substackcdn.com/image/fetch/$s_!bBUO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png 848w, https://substackcdn.com/image/fetch/$s_!bBUO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.png 1272w, https://substackcdn.com/image/fetch/$s_!bBUO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc18f0e2-c96b-4d79-9a94-bea0dceb608c_2048x1441.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><span>The creators of </span><a href="https://technically.dev/posts/what-does-snowflake-do"><span>Snowflake</span></a><span> were two of those developers, and the </span><a href="https://technically.dev/universe/analytics"><span>analytics</span></a><span> warehouse was a ripe first target. As </span><a href="https://technically.dev/posts/what-does-snowflake-do"><span>Snowflake</span></a><span> co-founder Benoit Dageville </span><a href="https://www.youtube.com/watch?v=XqzSjya54BU"><span>put it</span></a><span>:</span></p><blockquote><p><span>I always said that as older software guys we were at the mercy of hardware and its resources. The cloud was a game changer for analytic workloads that has lots of peaks and troughs in usage. It really needed that elasticity the cloud offered.</span></p></blockquote><p><span>Him and his co-founder Thierry Cruanes left Oracle and started Snowflake in 2012, which today has an ~$80B market cap. Larry Ellison had no comment.</span></p><p><span>These two AWS launches from 2006 unlocked an untold number of novel data infrastructure companies to be built.</span></p><ul><li><p><span>Analytics + </span><a href="https://technically.dev/universe/machine-learning"><span>machine learning</span></a><span>: </span><a href="https://technically.dev/posts/what-does-databricks-do"><span>Databricks</span></a><span>, Snowflake&#8217;s nemesis for data engineering workloads</span></p></li><li><p><span>Transactional databases: Neon, the transactional database (acquired by Databricks)</span></p></li><li><p><span>Streaming: WarpStream, the real-time event streaming service (acquired by their competitor </span><a href="https://technically.dev/universe/kafka"><span>Kafka</span></a><span>)</span></p></li><li><p><span>Search: Turbopuffer</span></p></li></ul><p><span>All have succeeded by rebuilding foundational data tooling on top of object storage like S3.</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_!sAB8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sAB8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png 424w, https://substackcdn.com/image/fetch/$s_!sAB8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png 848w, https://substackcdn.com/image/fetch/$s_!sAB8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png 1272w, https://substackcdn.com/image/fetch/$s_!sAB8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sAB8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&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_!sAB8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png 424w, https://substackcdn.com/image/fetch/$s_!sAB8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png 848w, https://substackcdn.com/image/fetch/$s_!sAB8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.png 1272w, https://substackcdn.com/image/fetch/$s_!sAB8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d131f26-cc86-427f-8e50-09e595ab9b73_2048x1331.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><span>Enter vector search</span></h2><p><span>AI agents make analytics workloads look quaint by comparison. Just the vector search piece is a perfect storm of how to run up a cloud bill:</span></p><ol><li><p><strong><span>Embeddings are big</span></strong><span>. If a chunk of text is 1KB, an embedding vector representing the meaning of that text could be 6KB.</span></p></li><li><p><strong><span>Agents search more than humans</span></strong><span>. Way more. If you watch a coding agent work, it runs tons of searches. I usually only search &#8220;Oprah net worth&#8221; once a week.</span></p></li><li><p><strong><span>Agents produce more vectors</span></strong><span>. More </span><s><span>slop</span></s><span> code + documents means the search index grows faster than it would if it was just people making stuff.</span></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lgHi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgHi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lgHi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lgHi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lgHi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgHi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg" width="698" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:698,&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_!lgHi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lgHi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lgHi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lgHi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676fff9a-e15a-4775-8b36-05c94dc08f21_698x500.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><span>Search engines like </span><a href="https://technically.dev/posts/what-does-algolia-do"><span>Algolia</span></a><span> or Elastic at this time were designed for a person searching in a search box on a website. They needed instant feedback, so data was stored in RAM. High cost was a tradeoff for low latency.</span></p><p><span>For agents using vector search, the tradeoff needed to be different. High cost was untenable, so the solution would be to trade a little latency.</span></p><div class="callout-block" data-callout="true"><p><span>&#128161;</span><strong><span>Food for thought</span></strong></p><p><em><span>There&#8217;s debate as to whether agents need vector search, or whether they can just use keyword search (the &#8220;grep&#8221; tool) to hunt-and-peck their way through your codebase or documents.</span></em></p><p><em><span>Claude Code famously (currently) </span><a href="https://news.ycombinator.com/item?id=43164253"><span>doesn&#8217;t actually index your codebase</span></a><span> into a searchable vector index.</span></em></p><p><em><span>This is a pretty silly debate: not every use case is the same.</span></em></p></div><h2></h2>
      <p>
          <a href="https://read.technically.dev/p/what-does-turbopuffer-do">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What is Rust? Part 1: What is a Programming Language?]]></title><description><![CDATA[The fast, safe, super difficult to write programming language that&#8217;s finally getting its flowers.]]></description><link>https://read.technically.dev/p/whats-a-programming-language</link><guid isPermaLink="false">https://read.technically.dev/p/whats-a-programming-language</guid><dc:creator><![CDATA[Will Raphaelson]]></dc:creator><pubDate>Tue, 07 Jul 2026 14:30:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!icwK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Rust is a statically-typed, compiled programming language that enforces memory safety through -- *</span><em><span>record scratch*</span></em></p><p><span>Woah woah woah. Let&#8217;s back up.</span></p><h2><span>What is a programming language?</span></h2><p><span>Computers have the notable distinction of being at once one of the most intelligent inventions in human history and also being super dumb. They can technically do almost anything, but only if you tell them exactly what to do in exactly their language &#8211; the language of 1s and 0s.</span></p><p><span>See, a computer is a bundle of physical circuits that can be open (represented as 0) or closed (represented as 1), and all the data a computer uses and all the logic it performs is articulated to it in the language of 1s and 0s called </span><a href="https://technically.dev/universe/binary"><span>binary</span></a><span>; the OG programming language. It&#8217;s just ones and zeros all the way day.</span></p><p><span>Writing complicated logic with only two numbers at your disposal is obviously hard. Accordingly, telling computers what to do was a massive pain for many many years, so much so that it was generally confined to the domain of nerds at universities like Grace Hopper and Ada Lovelace. They&#8217;d write out the literal 1s and 0s the hardware understood, sometimes by physically flipping switches or feeding in stacks of cards with holes punched in them. This was, as you might expect, difficult, error prone, and a pretty far cry from the work you see modern software engineers doing at the specialty coffee shop.</span></p><div class="callout-block" data-callout="true"><p><strong>&#128027; Bug Report</strong></p><p>The term &#8220;bug&#8221; in software traces back to 1947, when Grace Hopper&#8217;s team found an actual moth stuck in their Harvard Mark II relay computer. They taped it into the logbook with the note &#8220;first actual case of bug being found.&#8221;</p></div><p><span>As these early computer scientists wrote more code, they realized a lot of their code did the same things, like adding two numbers or storing a name, and they concluded they needed an easier way to write these common instructions. They landed on the idea of a &#8220;higher level&#8221; programming language that read like English, which would then be run through a translator called the compiler that turned it into 1s and 0s for the machine. Easy for humans to write, easy for computers to run, everybody wins! Thus the first mainstream programming language was born: FORTRAN.</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_!icwK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!icwK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png 424w, https://substackcdn.com/image/fetch/$s_!icwK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png 848w, https://substackcdn.com/image/fetch/$s_!icwK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!icwK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!icwK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png" width="1456" height="864" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&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;: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_!icwK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png 424w, https://substackcdn.com/image/fetch/$s_!icwK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png 848w, https://substackcdn.com/image/fetch/$s_!icwK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!icwK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8ea45a9-fe3d-4340-becf-9c345cce1daa_2048x1216.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><div class="callout-block" data-callout="true"><p><span>Confusion alert: when we talk about &#8220;high level&#8221; and &#8220;low level&#8221; languages, we&#8217;re not making a dig at lower level languages. It&#8217;s about abstraction. At the lowest level you have binary ones and zeros, the actual language of the machine. Assembly sits one rung above that, giving human-readable names to those same operations. Each &#8220;higher&#8221; layer up the stack abstracts away more of the underlying detail, trading fine-grained control for readability and ease.</span></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BG1J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BG1J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png 424w, https://substackcdn.com/image/fetch/$s_!BG1J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png 848w, https://substackcdn.com/image/fetch/$s_!BG1J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!BG1J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BG1J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png" width="1456" height="988" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:988,&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_!BG1J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png 424w, https://substackcdn.com/image/fetch/$s_!BG1J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png 848w, https://substackcdn.com/image/fetch/$s_!BG1J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!BG1J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f369af4-86fa-4a43-a8b4-d370d4e67fb9_2048x1390.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><span>Why are there so many programming languages?</span></h2><p><span>We don&#8217;t talk about programming languages much here at Technically because, well, for the purpose of understanding the world of tech at a high level, we don&#8217;t really think it matters. Most languages are more alike than they are different, and they all do basically the same things give or take a few things. So, why even have more than one language? You just said computers only speak 1s and 0s right and so we made FORTRAN to solve that. Why do developers today write in over a hundred of them?</span></p><p><strong><span>The answer is in tradeoffs</span></strong><span>. Since a language is a layer on top of 1s and 0s, each one makes slightly different design decisions on its journey to being English-like. The authors of FORTRAN made a thousand little judgment calls on your behalf. What gets to be easy and what stays hard? What happens automatically and what do you have to spell out by hand?</span></p><p><span>Some of FORTRAN&#8217;s decisions people liked, others they didn&#8217;t. So they wrote a different language, and then another, and then another, and each of these human-friendly programming languages prioritizes something different at the expense of something else. There is no best language, there is only the spectrum on which a host of tradeoffs sit.</span></p><p><span>For the purposes of understanding the wonderful world of Rust, we&#8217;re going to zoom in on one specific tradeoff: </span><strong><span>memory</span></strong><span>.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically helps you make practical sense of software + AI each 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><h2><span>A trip down memory lane</span></h2><p><span>When a program (some code) runs, it needs somewhere to keep the stuff it&#8217;s actively working with like:</span></p><ul><li><p><span>The user&#8217;s name</span></p></li><li><p><span>The current score of your little game</span></p></li><li><p><span>The contents of the text box you&#8217;re typing in right now</span></p></li></ul><p><span>This is what memory is for. You can think of it as the program&#8217;s desk; not long-term storage like a filing cabinet (that&#8217;s your hard drive), but the open workspace where things sit while you&#8217;re actually using and working with them.</span></p><p><span>The desk needs to be managed: periodically cleaned and organized. After all, it&#8217;s small, and the program never stops working. In practice this means setting new data down, grabbing data back when it&#8217;s needed, and clearing off the old stuff to make room. This is the harrowed discipline of </span><strong><span>memory management</span></strong><span>.</span></p><p><span>There are lots of different ways to manage memory. Some approaches prioritize speed, and others deliver safety.</span></p><ul><li><p><span>By </span><strong><span>speed</span></strong><span>, I mean exactly what it sounds like. How fast the program runs. How quickly the page loads, how little the game stutters, how fast the trade goes through.</span></p></li><li><p><span>By </span><strong><span>safety</span></strong><span>, I mean how well the language stops you from hurting yourself. A safe language makes it hard to write the kind of bug that crashes the program, leaks private data, or hands an attacker a way in. An unsafe language trusts you to never screw up, which, reader, you will.</span></p></li></ul><p><span>By way of example, many higher level languages, like Python, manage memory for you automatically. That makes them safe and forgiving, but it costs in terms of performance because the program is spending energy doing memory housekeeping chores in the background while it runs. I.e. Python is considered slow.</span></p><p><span>Many lower-level languages, like C, are wicked fast because they don&#8217;t do any automatic memory management, but that means they&#8217;re hard to write (you have to manage the memory yourself) and prone to failure.</span></p><p><span>There are other tradeoffs inherent in different programming languages too, which won&#8217;t be the focus of this series, but are worth mentioning:</span></p><ul><li><p><span>Static vs. dynamically typed. Does the language require you to declare what kind of data every variable holds (a number, a word, true/false) before it runs? Static typing catches bugs early but is more rigid to write. Dynamic typing is faster and looser to write, but errors show up at runtime in </span><a href="https://technically.dev/universe/production"><span>production</span></a><span>, where they hurt.</span></p></li><li><p><strong><span>Compiled vs. interpreted.</span></strong><span> Does the translation from code to binary happen upfront, or on the fly? Compiled languages do it all before the program runs, producing something fast and optimized. Interpreted languages translate as they go, which makes them more flexible and easier to experiment with, but slower when running.</span></p></li><li><p><strong><span>Ecosystem.</span></strong><span> A language comes with a community, a library of pre-built tools, and a job market. Python dominates data science not because it&#8217;s the fastest language (it isn&#8217;t) but because the tooling built around it is so mature that nothing else comes close.</span></p></li></ul><p><span>In any case, the memory tradeoff often ends up being the big one - the granddaddy of them all, the primary question a developer must ask themselves before embarking on a new engineering expedition: Do you want it fast or do you want it safe? Which way western man?</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_!Lisj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lisj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png 424w, https://substackcdn.com/image/fetch/$s_!Lisj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png 848w, https://substackcdn.com/image/fetch/$s_!Lisj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png 1272w, https://substackcdn.com/image/fetch/$s_!Lisj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lisj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png" width="1456" height="683" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:683,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!Lisj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png 424w, https://substackcdn.com/image/fetch/$s_!Lisj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png 848w, https://substackcdn.com/image/fetch/$s_!Lisj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.png 1272w, https://substackcdn.com/image/fetch/$s_!Lisj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a80941-050b-4a71-ac5f-cc1ef9cd0b16_2048x960.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><span>You might be wondering why memory in particular is so important, such that (as I&#8217;ll demonstrate) someone built an entire new language around making working with it better. In part two, we&#8217;ll go deeper on why the memory problem is more consequential than ever in the age of high speed trading, AI, and online gaming, and what one cracked engineer at Mozilla decided to do about it.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Everything is a Pipeline]]></title><description><![CDATA[Why technical concepts are often more alike then we might think.]]></description><link>https://read.technically.dev/p/everything-is-a-pipeline</link><guid isPermaLink="false">https://read.technically.dev/p/everything-is-a-pipeline</guid><dc:creator><![CDATA[Afzal Jasani]]></dc:creator><pubDate>Thu, 25 Jun 2026 14:31:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!U-y3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>We&#8217;re in a major cognitive dissonance era right now. AI is &#8220;moving so fast.&#8221; We all &#8220;feel behind.&#8221; So we use AI to deliver quick results (vibe coding, analyzing 30 page PDFs, Claude doing your taxes). But token maxxing leaves us feeling hollow, like Taco Bell after a night out. <br><br>Because it stops us from taking a moment to actually </span><em><span>think</span></em><span> or </span><em><span>understand</span></em><span> anything. So let&#8217;s think for a second.  <br><br>Is everything technical just a pipeline?<br><br>If you understand how one pipeline (like a data engineering pipeline) works, do you understand them all? <br><br>Are all of these pipelines essentially the same?</span></p><ul><li><p><span>Data engineering pipelines</span></p></li><li><p><a href="https://technically.dev/universe/rag"><span>RAG</span></a><span> pipelines for AI products</span></p></li><li><p><span>Sales pipelines</span></p></li><li><p><span>Image processing pipelines</span></p></li><li><p><a href="https://technically.dev/universe/frontend"><span>Frontend</span></a><span> app compilation pipelines</span></p></li></ul><p><span>Let&#8217;s explore. I promise this post will not result in you using more tokens.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically helps people working in tech make practical sense of how software + AI 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><span>The Data Pipeline</span></h2><p><span>Bronze, silver, and gold. </span><a href="https://technically.dev/posts/what-does-databricks-do-2025"><span>Databricks</span></a><span>&#8217; marketing team uses this holy trinity to describe the medallion architecture for processing data.</span></p><p><span>Other companies like dbt have used staging, intermediate, and mart. I&#8217;ve even seen raw, cleaned, and curated. They all mean the same thing.</span></p><p><span>It describes how data is processed as it moves through the pipeline:</span></p><ul><li><p><span>Bronze is data that&#8217;s been ingested, usually in the most raw state (eg logs or events).</span></p></li><li><p><span>Silver is the cleaned, joined, and standardized sets of data. This is where stuff like deduplication, filtering, and constraints are enforced.</span></p></li><li><p><span>Gold is ready to be used by the business, in reporting or </span><a href="https://technically.dev/universe/machine-learning"><span>machine learning</span></a><span> models.</span></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gOr8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gOr8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png 424w, https://substackcdn.com/image/fetch/$s_!gOr8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png 848w, https://substackcdn.com/image/fetch/$s_!gOr8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png 1272w, https://substackcdn.com/image/fetch/$s_!gOr8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gOr8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png" width="830" height="347" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:347,&quot;width&quot;:830,&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_!gOr8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png 424w, https://substackcdn.com/image/fetch/$s_!gOr8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png 848w, https://substackcdn.com/image/fetch/$s_!gOr8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.png 1272w, https://substackcdn.com/image/fetch/$s_!gOr8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00aa3cc6-8c82-48aa-814b-31eadcdf26a2_830x347.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><span>Each step of the pipeline the data gets more refined + usable, following a set of principles. You can walk into any company following this 3-stage pipeline architecture, look at their data transformation code, and be able to make sense (hopefully :) of what they&#8217;re doing.</span></p><h2><span>The RAG Pipeline</span></h2><p><span>I once interviewed at a </span><a href="https://technically.dev/universe/vector-database"><span>vector database</span></a><span> company that had a pretty involved take-home assignment, that required me to explain a RAG (retrieval augmented generation) pipeline.</span></p><p><span>Coming from working in data, this was just one hop over, but it still felt foreign.</span></p><p><span>RAG systems let an </span><a href="https://technically.dev/universe/llm"><span>LLM</span></a><span> retrieve information from external datasets, and use that information to generate responses. RAG shows up every time an LLM like Claude does a web search. It&#8217;s so seamless we don&#8217;t even think about the underpinnings of what&#8217;s happening.</span></p><p><span>Notion is a great example. When you use Notion AI, queries are being embedded into vectors on the fly and it&#8217;s searching a vectorized version of your Notion workspace. You might be thinking &#8220;how the hell is it so fast?&#8221;. That&#8217;s part of the magic. This vector pipeline runs in the background (chunking, embedding, and storing in a vector db) so that Notion AI run your semantic (vector) search when it needs to.</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lc5u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lc5u!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 424w, https://substackcdn.com/image/fetch/$s_!lc5u!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 848w, https://substackcdn.com/image/fetch/$s_!lc5u!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 1272w, https://substackcdn.com/image/fetch/$s_!lc5u!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lc5u!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif" width="1000" height="151" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:151,&quot;width&quot;:1000,&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_!lc5u!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 424w, https://substackcdn.com/image/fetch/$s_!lc5u!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 848w, https://substackcdn.com/image/fetch/$s_!lc5u!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 1272w, https://substackcdn.com/image/fetch/$s_!lc5u!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1f7303-3bbf-4f96-8833-1720e7733195_1000x151.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Credit to <a href="https://www.notion.com/blog/two-years-of-vector-search-at-notion">Notion</a></figcaption></figure></div><p><span>During the </span><strong><span>ingestion</span></strong><span> stage, we add metadata to our documents (like title, author, etc) which helps add context to them. This will follow the documents through the rest of the pipeline. <br><br></span><strong><span>Chunking</span></strong><span> breaks the documents into similar-sized pieces, so that they&#8217;re faster to search through. <br><br></span><strong><span>Embedding</span></strong><span> is where we are transforming the text (or image / video other modal) into a vector. <br><br>Next we package everything together and </span><strong><span>store</span></strong><span> it in a vector database.</span></p><p><span>This is where that metadata becomes super helpful, because it can be used for cheap + fast filtering at retrieval time.</span></p><p><span>Every pipeline requires tradeoffs. In the data pipeline example, a set of rules like the Medallion Architecture helps us decide where to put different types of data transformation work.  <br><br>In a RAG pipeline, the tradeoffs we&#8217;d think about are:</span></p><ul><li><p><strong><span>Chunking size:</span></strong><span> Do you chunk per token or per document? What happens when you need to re-chunk?</span></p></li><li><p><span>Embedding models: Do you use </span><a href="https://technically.dev/universe/open-source"><span>open source</span></a><span> or self-hosted embedding models, or just use </span><a href="https://technically.dev/posts/what-does-openai-do"><span>OpenAI</span></a><span>? When do you switch to a new embedding model?</span></p></li><li><p><strong><span>Latency:</span></strong><span> Search demands speed. If you have a B2C product and the search sucks, users may bail.</span></p></li></ul><p><span>If you want to go deeper, I highly recommend Notion&#8217;s</span><a href="https://www.notion.com/blog/two-years-of-vector-search-at-notion"><span> blog</span></a><span> on vector search.</span></p><p><span>The more I learned about RAG pipelines, the more they look like the same pipeline problem.</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_!U-y3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U-y3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png 424w, https://substackcdn.com/image/fetch/$s_!U-y3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png 848w, https://substackcdn.com/image/fetch/$s_!U-y3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png 1272w, https://substackcdn.com/image/fetch/$s_!U-y3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U-y3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png" width="1154" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1154,&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_!U-y3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png 424w, https://substackcdn.com/image/fetch/$s_!U-y3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png 848w, https://substackcdn.com/image/fetch/$s_!U-y3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.png 1272w, https://substackcdn.com/image/fetch/$s_!U-y3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089ef23a-85a2-44e2-b503-0c35d7a21486_1154x576.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><h3><strong><span>The Sales Pipeline</span></strong></h3><p><span>I work as an AE at OpenRouter, which means I manage a sales pipeline.</span></p><p><span>My sales pipeline looks eerily similar to just a data pipeline:</span></p><ul><li><p><span>Bronze layer: leads in my CRM without any enrichment. They could be cold leads or warm leads, but I have no idea. Some are missing job titles, phone numbers or (worse) their name.</span></p></li><li><p><span>Silver layer: qualified leads. I know about them and they know about me too, how wonderful! I&#8217;m still qualifying them but at least they talk to me.</span></p></li><li><p><span>Gold layer: This is where the magic happens, where those companies and leads become opportunities. All that work to build a business case, it&#8217;s all paid off here in the gold layer. Now I can go and close them as customers!</span></p></li></ul><p><span>I&#8217;ve simplified the hell out of this for the bit, but I think it fits.</span></p><p><span>So where do tradeoffs come into play here? It shows up in the small decisions I make every day. <br><br>It shows up when I&#8217;m trying to protect my customer engineer&#8217;s time because the prospect </span><em><strong><span>sounds</span></strong></em><strong><span> </span></strong><span>flaky. And it most certainly shows up when I need to forecast my sales for the quarter. We need to know whether a deal is moving forward or being left behind:</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_!bfQa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bfQa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png 424w, https://substackcdn.com/image/fetch/$s_!bfQa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png 848w, https://substackcdn.com/image/fetch/$s_!bfQa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!bfQa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bfQa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png" width="1382" height="1059" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1059,&quot;width&quot;:1382,&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_!bfQa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png 424w, https://substackcdn.com/image/fetch/$s_!bfQa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png 848w, https://substackcdn.com/image/fetch/$s_!bfQa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!bfQa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ac0cd8-caf9-4792-94de-89428db03f9e_1382x1059.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><span>The Photography Pipeline</span></h2><p><span>Years ago I got into photography and started doing paid shoots on the side. I used to just take photos on my phone and then edit them in the VSCO app, but when I started doing paid shoots I upgraded to a full frame (Sony A7) camera with everything in RAW format.</span></p><p><span>Photo editing is also a pipeline. <br><br>First, I&#8217;d take lots (hundreds) of photos, way more than I&#8217;d need. Then I&#8217;d edit in layers:</span></p><ol><li><p><span>Bronze layer: Filter through them and make selections</span></p></li><li><p><span>Silver layer: play with exposures, shadow details, and more. </span></p></li><li><p><span>Gold layer: once the composition was right, I&#8217;d put the finishing touches on to get them delivery-ready.</span></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EvE3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EvE3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png 424w, https://substackcdn.com/image/fetch/$s_!EvE3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png 848w, https://substackcdn.com/image/fetch/$s_!EvE3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png 1272w, https://substackcdn.com/image/fetch/$s_!EvE3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EvE3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png" width="1441" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:1441,&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_!EvE3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png 424w, https://substackcdn.com/image/fetch/$s_!EvE3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png 848w, https://substackcdn.com/image/fetch/$s_!EvE3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.png 1272w, https://substackcdn.com/image/fetch/$s_!EvE3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a4e1d5-b9e1-4ebb-ab16-2be432250afc_1441x484.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><span>What you See is Not What you Get</span></h2><p><span>I&#8217;ve always felt I had a strong knack for drawing patterns and connections but really I think it comes down to how I simplify my approach and layer in a framework. In this case I drew a lot of connections from looking at them as pipelines.</span></p><p><span>Pipelines have workflow stages, and there are inherent tradeoffs about where (in which stage) you put the work. The order of operations matters!</span></p><p><span>What&#8217;s fun about pipeline thinking is that you can break any process down into a pipeline, and play with where to draw lines between stages.</span></p><p><span>But a pipeline is just one mental model. What&#8217;s your favorite?</span></p><p><span>If LLMs went away tomorrow, what framework would you fall back on to describe how things work?</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What are code sandboxes?]]></title><description><![CDATA[Why coding agents need a safe place to play, just like we all do.]]></description><link>https://read.technically.dev/p/what-are-code-sandboxes</link><guid isPermaLink="false">https://read.technically.dev/p/what-are-code-sandboxes</guid><dc:creator><![CDATA[Justin]]></dc:creator><pubDate>Thu, 18 Jun 2026 14:30:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DeQ8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><span>Sandboxes.</span></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DeQ8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DeQ8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png 424w, https://substackcdn.com/image/fetch/$s_!DeQ8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png 848w, https://substackcdn.com/image/fetch/$s_!DeQ8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png 1272w, https://substackcdn.com/image/fetch/$s_!DeQ8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DeQ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png" width="700" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02602d33-734b-447b-9852-595ef1827ec6_700x398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:700,&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;: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_!DeQ8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png 424w, https://substackcdn.com/image/fetch/$s_!DeQ8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png 848w, https://substackcdn.com/image/fetch/$s_!DeQ8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.png 1272w, https://substackcdn.com/image/fetch/$s_!DeQ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02602d33-734b-447b-9852-595ef1827ec6_700x398.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><span>Though for most of my readers (who for some reason I assume were born in the 90&#8217;s) this word may evoke a quaint yet hauntingly-long-ago visage of their suburban childhoods, it means something else entirely to a software developer.</span></p><h2><strong><span>The TL;DR</span></strong></h2><p><span>Sandboxes are isolated computing environments where you can run code that you don&#8217;t entirely trust. Think of them as solitary confinement, but for a program.</span></p><ul><li><p><span>Much of software today requires you to run </span><strong><span>untrusted code</span></strong><span> &#8211; code written by a Large Language Model or even a human you don&#8217;t know.</span></p></li><li><p><span>Running untrusted code on your system is </span><strong><span>risky</span></strong><span>: it can breach your security, delete your data, and generally just mess with things.</span></p></li><li><p><span>A </span><strong><span>sandbox</span></strong><span> puts iron walls around this untrusted code so it can&#8217;t mess with things, while still allowing it to run and (hopefully) accomplish its task.</span></p></li><li><p><span>Sandboxes are absolutely </span><strong><span>exploding in popularity</span></strong><span> because of several different </span><a href="https://technically.dev/universe/llm"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">LLM</span></a><span>-related use cases.</span></p></li></ul><p><span>Sandboxes have been around for as long as I&#8217;ve been in tech. For years, products like </span><a href="https://retool.com/"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">Retool</span></a><span> (my former employer) have needed ways to let their users run arbitrary code&#8230;without being subject to the risks of their users running arbitrary code.</span></p><p><span>But with LLMs taking the center stage, they&#8217;ve gotten a second wind for the ages. There are now dozens (</span><em><span>dozens!</span></em><span>) of sandboxes for LLM startups vying for the business of small companies and enterprises alike who need a place to run random code. And I will explain them to you.</span></p><h2><strong><span>Coding agents, RL training, and other forms of untrusted code</span></strong></h2><p><span>To understand why sandboxes are having such a moment, we must first detour to understand this concept of &#8220;untrusted code&#8221; a little more deeply.</span></p><p><span>Simply put, </span><strong><span>untrusted code</span></strong><span> is code that you, yourself, have not examined closely line by line. Because you haven&#8217;t examined it closely line by line, you don&#8217;t know what it does. And because you don&#8217;t know what it does, running the code in the same places that you have your other code running is very risky. </span><em><span>Who knows</span></em><span> what it&#8217;s going to do?</span></p><p><span>Imagine you&#8217;re a prison warden (if I have any readers who are prison wardens, let me know in the comments). You&#8217;ve got your hundreds of inmates who are, for the most part, playing pretty nicely together. Then you get a call that a new prisoner is on his way; you don&#8217;t know anything about him, just that he&#8217;s rumored to be a high-profile gangbanger. Is he well behaved? Could he incite a riot? Will he try to escape? Who knows.</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_!ae6T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ae6T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!ae6T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!ae6T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!ae6T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ae6T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;: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_!ae6T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!ae6T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!ae6T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!ae6T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25d0520-ee67-4f4b-83b0-ca727041abdb_1920x1080.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>The warden peering into the entrance to the sandbox</span></em></figcaption></figure></div><p><span>With that uncertainty, you&#8217;re certainly not going to put him in Cell Block A with everyone else. Instead, you&#8217;ll cordon him off in solitary confinement where whatever he does won&#8217;t impact the orderly conduct of the rest of your subordinates.</span></p><p><span>In software engineering this is referred to as isolation. The prison is your </span><a href="https://technically.dev/universe/infrastructure"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">infrastructure</span></a><span> &#8211; the </span><a href="https://technically.dev/universe/server"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">server</span></a><span> your existing code runs on, the </span><a href="https://technically.dev/universe/database"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">database</span></a><span> it&#8217;s backed by, the </span><a href="https://technically.dev/universe/api"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">APIs</span></a><span> powering it. Everything for the most part is working well, and you don&#8217;t want to risk a new inmate fucking around with things.</span></p><p><span>So who are the gangbangers in our analogy? There are a few:</span></p><ul><li><p><strong><span>Internal coding agents</span></strong><span> &#8211; developers using LLMs to generate code for new features, fixing bugs, etc. This code is untrusted, so it needs a sandbox to test it before </span><a href="https://technically.dev/universe/merging"><span data-color="rgb(17, 85, 204)" style="color: rgb(17, 85, 204);">merging</span></a><span> into the rest of the codebase.</span></p></li><li><p><strong><span>Reinforcement Learning (RL)</span></strong><span> &#8211; when teams train their own coding agents, they need environments where the agents can play around and learn how to get better. Since the code they&#8217;re generating and running is (very) untrusted, they need a sandbox.</span></p></li><li><p><strong><span>(old school) Users </span></strong><span>&#8211; sometimes you want your users to be able to write code and run it on your systems.</span></p></li></ul><p><span>Sandboxes give developers an isolated environment to run and test these outputs &#8211; these gangbangers if you will &#8211; where they physically cannot negatively impact other parts of your stack. If they mess up, if they turn malicious, if they start a riot, the scope of damage can never extend beyond the sandbox itself.</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_!4Ytw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Ytw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!4Ytw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!4Ytw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!4Ytw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Ytw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;: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_!4Ytw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!4Ytw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!4Ytw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!4Ytw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54dc89ab-1d4f-41a8-86bb-1e4ea628fb67_1920x1080.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>Untrusted code, safely &#8220;doing its thing&#8221; in an isolated environment</span></em></figcaption></figure></div><p><span>By the way, this gangbanging is not theoretical. Code can absolutely get nasty and mess with your stuff. You&#8217;ve probably seen examples on X of coding agents &#8220;accidentally&#8221; deleting someone&#8217;s entire database. And for RL, logs of coding agents in sandboxes often show them attempting destructive behavior because they&#8217;re basically try anything (that&#8217;s how RL works).</span></p>
      <p>
          <a href="https://read.technically.dev/p/what-are-code-sandboxes">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How my non-engineering team at Sentry learned to ship]]></title><description><![CDATA[We moved 2,500 pages out of our CMS with Claude Code and Git. 4 months ago, most of us hadn't shipped.]]></description><link>https://read.technically.dev/p/how-matt-learned-to-ship</link><guid isPermaLink="false">https://read.technically.dev/p/how-matt-learned-to-ship</guid><dc:creator><![CDATA[Matt Henderson]]></dc:creator><pubDate>Thu, 04 Jun 2026 14:31:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fJfS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdbaa131-cb0e-4441-b228-be634b74f825_804x622.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few months ago, I opened Claude Code and pointed it at our marketing site. The task was unglamorous: scan the site, find pages where internal linking was weak, and open pull requests with fixes.</p><p>Within minutes, the agent was crawling the repository and shipping pull requests across multiple pages at once. Then it hit a wall.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9QG0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9QG0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png 424w, https://substackcdn.com/image/fetch/$s_!9QG0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png 848w, https://substackcdn.com/image/fetch/$s_!9QG0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png 1272w, https://substackcdn.com/image/fetch/$s_!9QG0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9QG0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png" width="1232" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:318,&quot;width&quot;:1232,&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;: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_!9QG0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png 424w, https://substackcdn.com/image/fetch/$s_!9QG0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png 848w, https://substackcdn.com/image/fetch/$s_!9QG0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.png 1272w, https://substackcdn.com/image/fetch/$s_!9QG0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94de8e53-d931-4b1d-a71a-4469486052bd_1232x318.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>For the parts of our site th&#8230;</p>
      <p>
          <a href="https://read.technically.dev/p/how-matt-learned-to-ship">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[All about Infrastructure as Code and Terraform]]></title><description><![CDATA[The deceptively simple text files that keep you from breaking your apps.]]></description><link>https://read.technically.dev/p/all-about-infrastructure-as-code</link><guid isPermaLink="false">https://read.technically.dev/p/all-about-infrastructure-as-code</guid><dc:creator><![CDATA[Will Raphaelson]]></dc:creator><pubDate>Thu, 28 May 2026 14:31:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c7d4ac9a-9b8f-426f-a48b-0eed2d21f3a3_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At my first tech job, I attempted to change proverbial castes. To go from my lowly, near-subhuman station as an &#8220;implementation consultant&#8221; to something with status: an engineer (ooh, ahh). In particular, I went after an entry-level <a href="https://technically.dev/universe/devops">DevOps</a> engineer role, where I would take on the grunt work of systems administration, <a href="https://technically.dev/universe/infrastructure">infrastructure</a> provisioning, and acc&#8230;</p>
      <p>
          <a href="https://read.technically.dev/p/all-about-infrastructure-as-code">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What is Next.js?]]></title><description><![CDATA[The web framework your vibe-coded app is probably built in.]]></description><link>https://read.technically.dev/p/what-is-nextjs</link><guid isPermaLink="false">https://read.technically.dev/p/what-is-nextjs</guid><dc:creator><![CDATA[Justin]]></dc:creator><pubDate>Thu, 21 May 2026 14:31:56 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/39b4c5a7-c708-4981-bcce-b2226e3d3a72_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>The TL;DR</strong></h2><p><a href="https://nextjs.org/">Next.js</a> is a web framework for React. It helps developers (and now agents) create web applications in React quickly and easily, as long as you follow a few rules.</p><ul><li><p>The magic we take for granted &#8211; type in a URL, see a website &#8211; relies on a million complicated things going on in the background</p></li><li><p><strong>Web frameworks</strong> help developers focus less on the logisti&#8230;</p></li></ul>
      <p>
          <a href="https://read.technically.dev/p/what-is-nextjs">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What’s a Package Manager?]]></title><description><![CDATA[And why are AI labs like Anthropic + OpenAI buying them up?]]></description><link>https://read.technically.dev/p/whats-a-package-manager</link><guid isPermaLink="false">https://read.technically.dev/p/whats-a-package-manager</guid><dc:creator><![CDATA[Will Raphaelson]]></dc:creator><pubDate>Thu, 14 May 2026 12:15:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9iAu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Package managers have historically been an important, but kind of boring, aspect of software development. Recently though two large acquisitions, of <a href="https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone">Bun by Anthropic</a> and of <a href="https://openai.com/index/openai-to-acquire-astral/">Astral by OpenAI</a>, have prompted renewed interest in these little <a href="https://technically.dev/universe/framework">frameworks</a>. Let&#8217;s take a look at what they are, and why billion-dollar frontier AI labs might be buying them up.</p><h2>Intro to package management</h2><p>The vast, vast majority of software, be it consumer apps like Snapchat and Strava, or B2B platforms like Salesforce and Workday, use <a href="https://technically.dev/universe/open-source">open source</a> software as building blocks. This is to say, they use code written and made public by other people to save themselves time when developing their own applications.</p><p>A classic example of a use case for leveraging open source code is if your app has anything to do with time, such as displaying the date and time to a user. Time is surprisingly complex: what time zone are users in, are they in daylight savings, do you want to display the day of the week as well? You could code up all this logic yourself, but it&#8217;s much easier to use code someone else already wrote to do this.</p><p>The world of package managers emerges when you ask: <strong>how do you actually </strong><em><strong>use</strong></em><strong> someone else&#8217;s code?</strong></p><p>One naive way might be copy-pasting code from someone else&#8217;s app or website into your own codebase, line for line. This would work, but is very inefficient. What happens if the author makes changes? What if there&#8217;s a security vulnerability discovered down the road?</p><p>For these reasons and more, the most common way that developers of open source software distribute their code is by bundling it into <em>packages</em> and publishing them for the world to use via a package manager. You can think of a package as a nice wrapper around the code that someone has authored, boxing up your little (or a lot) bit of code nicely so you can ship it to others without things getting messed up.</p><blockquote><p>&#128680; <strong>Confusion Alert </strong>&#128680;</p><p>The terms package, library, module, and framework are used mostly interchangeably in the industry, for simplicity, I&#8217;ll stick to package here.</p></blockquote><p>Package managers are programs that deal with the logistics of these &#8220;packages&#8221; of code: in particular, fetching and installing these open-source software packages. They are used almost anywhere people (or robots) write, test, or run code. The key elements of a package management system are the <strong>package manager</strong> and the <strong>package registry</strong>. Let&#8217;s quickly review how they work.</p><p>If I&#8217;m a developer starting a new project and I want to use someone else&#8217;s code for something (like handling dates), one of the first things I&#8217;m going to do is ensure I have a package manager installed on my system. The package manager makes it extremely easy to install the packages that I need. Each language maintains one or more official package manager, such as pip for Python, and npm for <a href="https://technically.dev/universe/javascript">Javascript</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EkmR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EkmR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 424w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 848w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EkmR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png" width="1456" height="1185" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1185,&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_!EkmR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 424w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 848w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.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>For the example where I&#8217;m coding up an app where I need to display time to my user, if I was building in Python I&#8217;d use pip by opening up my <a href="https://technically.dev/universe/terminal">terminal</a> and typing pip install pendulum (pendulum is the package name). The package manager does a few things:</p><p>First, the package manager checks my system to see if pendulum is installed already. If it is, fantastic, it does nothing. If it is not, it goes out and downloads the package. But where does it go to get the package? It goes to the <strong>registry</strong>.</p><p>The package registry is a public, trusted repository of open source software packages on the internet. Each language maintains one or more official registries, such as PyPI (Python Package Index) for Python, not to be confused with pip, and the npm registry for JavaScript.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EkmR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EkmR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 424w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 848w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EkmR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png" width="1456" height="1185" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1185,&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_!EkmR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 424w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 848w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!EkmR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53fe9b5f-d875-4087-a7a5-bae4120a296c_1472x1198.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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9iAu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9iAu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png 424w, https://substackcdn.com/image/fetch/$s_!9iAu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png 848w, https://substackcdn.com/image/fetch/$s_!9iAu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png 1272w, https://substackcdn.com/image/fetch/$s_!9iAu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9iAu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png" width="1456" height="791" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:791,&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_!9iAu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png 424w, https://substackcdn.com/image/fetch/$s_!9iAu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png 848w, https://substackcdn.com/image/fetch/$s_!9iAu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.png 1272w, https://substackcdn.com/image/fetch/$s_!9iAu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f8535a8-9cd0-4a7f-92e7-8e509f4dceaa_1472x800.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>You can think of the registry as the warehouse where all of the boxed software goes to be shipped out. The authors of the software are (ideally) constantly uploading new and improved versions of their packages so users like you can benefit from the great wheels of progress.</p><p>This general process of ensuring I have the packages I need is referred to as <strong>dependency resolution &#8211; a dependency just means a package that your software needs in order to run &#8211;</strong> and it&#8217;s the core job of the package manager. And it&#8217;s a full-time job: as I code up more features, my dependencies will change, and the package manager needs to make sure what I need is installed at all times, and what I no longer need is purged from the system.</p><p>Over time, many package managers grew beyond just fetching code. See, going from code to real running software requires a few other steps. For example, after code is written and external packages are installed, something called a <strong>compiler</strong> or <strong>bundler</strong> needs to translate that code into a language that&#8217;s readable by the machines. After that, a different program actually needs to run the code, called the runtime. At least that&#8217;s how it was for a long time &#8212; different tools for different stages of the pipeline.</p><p>But newer tools like <a href="https://bun.com/">Bun</a> in the JavaScript world started collapsing this <em>entire toolchain</em> into one fast program that handles everything. This bundling is important context for understanding what AI labs actually bought, which we&#8217;ll get to shortly.</p><p>The thing I want you to know is that for the entirety of my time building software, and for decades before that, the package manager was a thing you used manually, slowly, and pretty infrequently. Starting or pulling a new project, updating a package, or running some tests locally. It was not software that anyone loved or waxed poetic about, it was just a thing you had to do.</p><p>This is because coding &#8212; making your software do what you want it to do by typing out instructions &#8212; takes a long time when humans do it. For human engineers, package management only has to be as fast as humans can decide what packages they need and can use them in their development cycle. Until recently, this was fine, because humans were the only entities that could write code.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically helps non-engineers make practical sense of software + AI, a few times a month on Thursdays.</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>And then came the agents</h2><p>LLMs, on the other hand, can generate code really quickly. AI-powered coding agents can now take a loose set of requirements for a feature or whole app, plan the implementation, and then code it up across a massively parallel fleet of agents. And though the speed at which they can <em>generate</em> code is fast, they still need to <em>run </em>that code: each member of this fleet needs to resolve package dependencies, install packages in isolated environments, run tests and code, and clean up after themselves after they&#8217;re done. Just like humans do.</p><p>Even AI features geared toward non-developers increasingly require the ability to quickly write and run code. For example, when I ask Claude to produce a Word document, it installs an open-source JavaScript package called docx-js, writes code that uses that package to produce a document, and runs that code all within an isolated environment in the <a href="https://technically.dev/universe/cloud">cloud</a>.</p><p>So, using package managers went from a slow thing humans did once in a while to a thing that needs to happen tens or hundreds of times <em>a minute</em> when it&#8217;s agents writing the code. Where code runs went from a permanent thing I&#8217;d think about once per project, to something more ephemeral that needs to be rapidly spun up and torn down many times an hour.</p><p>What this means is that package managers are now critical <a href="https://technically.dev/universe/infrastructure">infrastructure</a> for AI products. They&#8217;re in the &#8220;hot path&#8221;, as we say in the biz. Every time Claude Code produces a file, or Codex writes and tests a function, package managers and runtimes are doing work on every single invocation. If they&#8217;re slow, the product feels slow. If they break, the product breaks.</p><p>Anthropic and OpenAI both have whole suites of products that involve agentic coding, from terminal-based offerings like Claude Code and Codex to their desktop apps and more. I believe that the folks at these labs realized early on that a big bottleneck in the quality of their products was going to be the sluggish package manager ecosystem. So they bought the best ones out there. And the tools they bought were the ones that had already grown beyond just package management into all-in-one toolchains that handle package management, building, and code execution.</p>
      <p>
          <a href="https://read.technically.dev/p/whats-a-package-manager">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[AI, tractors, and the productivity paradox]]></title><description><![CDATA[Where are AI's productivity gains hiding? What kitted out Model Ts can teach us.]]></description><link>https://read.technically.dev/p/the-ai-productivity-paradox</link><guid isPermaLink="false">https://read.technically.dev/p/the-ai-productivity-paradox</guid><dc:creator><![CDATA[Sachin]]></dc:creator><pubDate>Thu, 30 Apr 2026 13:31:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xxIb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e39d89-ec15-40df-9792-33f85a95e9b3_1526x934.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The question everyone seems to be asking these days with respect to AI is: if it&#8217;s so impactful as claimed, why is it not showing up in any economic stats?</p><p>It is not the first time that such a paradox has shown up in the deployment of a new technology. In 1987, <a href="https://en.wikipedia.org/wiki/Productivity_paradox">Robert Solow remarked</a> that you can see the computer age everywhere except in the productivity &#8230;</p>
      <p>
          <a href="https://read.technically.dev/p/the-ai-productivity-paradox">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[When not to vibe code]]></title><description><![CDATA[Should I ship something myself, or call in engineering help?]]></description><link>https://read.technically.dev/p/when-not-to-vibe-code</link><guid isPermaLink="false">https://read.technically.dev/p/when-not-to-vibe-code</guid><dc:creator><![CDATA[Sarah Krasnik Bedell]]></dc:creator><pubDate>Thu, 23 Apr 2026 14:31:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/214233db-a1a0-4dd8-8d35-c9b53b484fbc_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Running growth experiments at Railway, I ship changes to our web properties and content all the time.</p><p>As a technical person, but by no means a <a href="https://technically.dev/universe/frontend">frontend</a> engineer, I like to vibe code as much as I can - from growth experiments, to POCs, internal tooling, new designs, the list goes on.</p><p>It&#8217;s a balance, and I&#8217;m always trying to figure out what I should try to &#8230;</p>
      <p>
          <a href="https://read.technically.dev/p/when-not-to-vibe-code">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What's an inference provider?]]></title><description><![CDATA[How the rise of open source AI models is fueling the growth of a new infrastructure category.]]></description><link>https://read.technically.dev/p/whats-an-inference-provider</link><guid isPermaLink="false">https://read.technically.dev/p/whats-an-inference-provider</guid><dc:creator><![CDATA[Will Raphaelson]]></dc:creator><pubDate>Thu, 16 Apr 2026 14:30:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!raHe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="callout-block" data-callout="true"><p>Hey friends, quick note for you:</p><p>There are a few sure things in life. Death, taxes, and website rebrands. We cannot help you with the first two, but&#8230;</p><p>ICYMI, we recently redesigned the <a href="https://technically.dev">technically.dev</a> site. It should be a lot easier to read and look through now. We also brought back a crowd favorite: <a href="https://technically.dev/learning-tracks">learning tracks</a>. We&#8217;ve added new tracks like <a href="https://technically.dev/learning-tracks/how-ai-models-actually-work">How AI Models Actually Work</a> + <a href="https://technically.dev/learning-tracks/from-spreadsheets-to-databases">From Spreadsheets to Databases</a>. </p><p>And to celebrate, we&#8217;ve created a new <a href="https://technically.dev/subscribe">All-access subscription</a><strong> </strong>there that gets you access to all learning tracks (and the entire Technically archives).  </p><p>If you&#8217;re a paid Substack subscriber, you will get <strong>automatic access</strong> to this All-access subscription &#8212;&nbsp;just make sure to <a href="https://technically.dev/signup">sign up</a> on technically.dev with the same email as your Substack account.</p><p>If you&#8217;re curious to test the waters, you can start by <a href="https://technically.dev/signup">creating a free account</a> that lets you unlock a couple free posts a month. Enjoy!</p></div><p>Amidst the frenzy of AI, a new category of <a href="https://technically.dev/universe/infrastructure">infrastructure</a> vendor has emerged: The <a href="https://technically.dev/universe/inference">inference</a> provider. This white-hot newish(ish) vertical is producing some pretty big headlines for a category that, as we&#8217;ll see, is often overshadowed by big AI labs like <a href="https://technically.dev/posts/what-does-openai-do">OpenAI</a> and Anthropic. TogetherAI is in talks to raise at $7.5B, Fireworks raised at $4B last year, and Modal is in talks to raise at $2.5B &#8211; all of these are doubling and doubling every few months it would seem. NVIDIA splashed $20 billion for Groq&#8217;s inference chip technology in December, its largest acquisition to date.</p><p>So yes, inference is white hot. But what do these companies actually do? And why are they worth so much money?</p><p>Let&#8217;s dig in, shall we?</p><h2>What&#8217;s inference?</h2><p>AI didn&#8217;t take long to become totally ubiquitous. It answers your questions, summarizes your meeting notes, codes up your apps, and, if you&#8217;re a bad friend, writes your birthday cards. All of it, every AI product you touch, boils down to two things: <strong>training and inference</strong>.</p><p><strong><a href="https://technically.dev/universe/training">Training</a></strong> is how a <a href="http://technically.dev/posts/what-is-machine-learning">model learns</a>. You take a massive amount of text and use it to produce a mathematical equation that captures patterns in language: what words tend to follow what, how ideas relate to each other, what a reasonable response to a question looks like. Models like GPT and Claude were trained on enormous amounts of text from the internet, and what emerged are systems that can produce generally fluent, useful language.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J0fw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J0fw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!J0fw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!J0fw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!J0fw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J0fw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg" width="1456" height="949" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:949,&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;: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_!J0fw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!J0fw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!J0fw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!J0fw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c87a77e-7ffe-456e-b280-b2661dfca3ca_2048x1335.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><strong>Inference</strong> is when the model actually does its job. Every time you send a message to <a href="https://technically.dev/universe/chatgpt">ChatGPT</a> and it responds, that&#8217;s inference. Every time Claude summarizes a document or an AI coding assistant autocompletes a function, that&#8217;s inference too. It&#8217;s the model taking what it learned during training and applying it to your input, in real time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!raHe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!raHe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!raHe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!raHe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!raHe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!raHe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97678,&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://read.technically.dev/i/193091470?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.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_!raHe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!raHe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!raHe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!raHe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc73501a9-7323-4543-ab52-42da77fd32ae_1200x800.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>Training models has historically been the sexy part of AI, done by people in glasses, wearing turtlenecks, and holding PhDs. They are paid many dollars. Serving models, on the other hand is plumbing, but as it turns out, as every company races to add AI to their app, the plumbers are doing pretty well for themselves. Dedicated inference providers have emerged as a major force in the AI application stack, offering a convenient managed inference service for developers building AI-powered features.</p><p>In its purest and most managed form, the OpenAI and Anthropic (we&#8217;ll call them frontier labs) <a href="https://technically.dev/universe/api">API</a>s are AI inference providers. They have both trained the models and set them up for you to use easily. You make an API call: (&#8220;write my wedding vows&#8221;) and get back an inference: (&#8220;Webster&#8217;s dictionary defines love as&#8230;&#8221;). So what are we talking about here? Why would you use something special?</p><h2>Why use an inference provider?</h2><p>As someone using AI or building into your app, you have two major choices. You can use a <strong>closed-source</strong> model like ChatGPT or Claude. These are proprietary models &#8211; nobody knows how they were trained &#8211; and the only way to use them is through the people who trained them, OpenAI and Anthropic. These labs (as well as other closed-source providers like Runway, Midjourney, and Google) are very good at training models, and generally their models will be the best on the planet, but also cost the most.</p><p>Then there are <a href="https://technically.dev/universe/open-source">open source</a> models. These are built by companies or the community, and released for all to use. The weights of these models (the key to the fancy prediction equation) and sometimes even the training code are open to the public. You can download and run them yourself or even tweak them if you&#8217;d like. The most popular ones are Llama from Meta, Qwen from Alibaba, and DeepSeek.</p><p>With open-source models, you have a choice in how you actually use them. You can self-host by spinning up your own infrastructure, loading the model weights, and managing everything yourself. Or you can instead use an inference provider: a company that hosts open-source models <em>for you</em> and lets you access them through an API, just like you would with a closed-source lab.</p><p>There are a few reasons a developer might use an inference provider over just calling the inference <a href="https://technically.dev/universe/endpoint">endpoints</a> of the frontier labs directly, or running OSS models themselves.</p><p><strong>Cost.</strong> The newest Frontier models are expensive. If your use case doesn&#8217;t actually need a state of the art model like GPT-5.4 or Claude Opus, you can run an open-weights model like LLaMA on an inference provider for a fraction of the price. For high-volume, straightforward tasks like summarization, classification, or extraction, you probably don&#8217;t need the best model on the market, and the savings add up fast.</p><p><strong>Speed.</strong> The big frontier labs generally optimize for model capability over latency. If you&#8217;re building something where response time matters (autocomplete, real-time agents), inference providers running on optimized hardware can get you significantly faster performance.</p><p><strong>Resilience at scale.</strong> If you&#8217;re <a href="https://lovable.dev/blog/routing-billions-of-tokens-per-minute">big enough</a> that OpenAI having an outage means your product has an outage, you have a problem. Inference providers let you route across multiple models and backends through a single API, so you&#8217;re not in hell it every time one provider has a bad day.</p><p>Native <a href="https://technically.dev/universe/integration">integration</a> with your <a href="https://technically.dev/universe/cloud">cloud</a>. The public cloud inference provider offerings like <a href="https://technically.dev/posts/aws-for-the-rest-of-us">AWS</a> Bedrock or Google VertexAI have an advantage in the enterprise because their models and endpoints are colocated with your other infrastructure, which can matter to security and data-residency-conscious buyers. They also tend to offer the most straightforward paths to fine-tuning and customization, which is when you take a base model and train it further on your own data so it performs better for your specific use case.</p><p>All this, at least for me, actually reverses the question - why would you call the frontier labs&#8217; APIs when the inference providers are cheaper and faster? There are at least a few reasons:</p><ul><li><p>You need the latest and greatest models (remember, the inference providers are often hosting the open weights models, which are older)</p></li><li><p>Cost and/or latency are not a concern for you (congrats, happy for you)</p></li><li><p>You&#8217;re a noob and didn&#8217;t know about inference providers (me, until recently)</p></li></ul><h2>The inference provider spectrum</h2><p>Like many software categories, there is a spectrum from:</p><ul><li><p>Easy to use with fewer customizations and control for a lot of money...</p></li><li><p>&#8230;to pure infra providers that you configure to do what you want, with full control (and responsibility over) the infrastructure for less money.</p></li></ul><p>Let&#8217;s take a look at that spectrum.</p><h3>Most Managed: First-Party Model APIs</h3><p>I already touched on this, but the AI labs themselves provide inference endpoints and, as such, are technically inference providers. You call their API, and you get a response without managing infra. It&#8217;s the simplest way to add AI to a product, and where most teams start. You get access to the newest and best models, but you also pay per call (among other things), so it&#8217;s usually the most expensive.</p><ul><li><p><strong>OpenAI</strong>: The company that started the current wave; their API format has become the de facto standard that most other providers copy.</p></li><li><p><strong>Anthropic</strong>: Makes Claude; strong enterprise adoption, and known for handling very long documents.</p></li><li><p><strong>Google (Gemini)</strong>: Lots of models; deeply integrated into Google Cloud and Workspace suites.</p></li></ul><p>Technically, the platform of the model provider isn&#8217;t the <em>only</em> way to access them.</p><h3>Cloud Hyperscalers: Enterprise AI Platforms</h3>
      <p>
          <a href="https://read.technically.dev/p/whats-an-inference-provider">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[I Let Claude Code Autonomously Run Ads for a Month]]></title><description><![CDATA[In January, I gave an AI agent $1,500, full control of a Meta Ads account, then walked away.]]></description><link>https://read.technically.dev/p/i-let-claude-code-autonomously-run</link><guid isPermaLink="false">https://read.technically.dev/p/i-let-claude-code-autonomously-run</guid><pubDate>Thu, 09 Apr 2026 14:31:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pSl0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3d1ba01-98b0-4a07-ba1a-5355cd3ab736_558x1398.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Going forward we&#8217;ll occasionally feature first-hand accounts of people building personal AI tooling to take on some part of their non-coding work. </em></p><p><em>This is a story from Giorgio Liapakis of <a href="https://wibci.com.au/">wibci</a>.  If you have a story to tell, drop us a note at editors@technically.dev.  </em></p><p>In January, I gave an AI agent $1,500, full control of a Meta Ads account, then walked&#8230;</p>
      <p>
          <a href="https://read.technically.dev/p/i-let-claude-code-autonomously-run">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[A Beginner’s Guide to Bring Your Own Cloud]]></title><description><![CDATA[The profitable but challenging deployment model sweeping the nation.]]></description><link>https://read.technically.dev/p/beginners-guide-to-bring-your-own</link><guid isPermaLink="false">https://read.technically.dev/p/beginners-guide-to-bring-your-own</guid><dc:creator><![CDATA[Will Raphaelson]]></dc:creator><pubDate>Thu, 26 Mar 2026 14:31:19 GMT</pubDate><enclosure url="https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/8ad5f442-febc-4917-bfa2-705713562ce2_1100x220.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What if I told you that there are customers out there willing to pay you 2-5x your normal price, for the exact same product? They don&#8217;t want extra features or a fancier dashboard. In fact, they don&#8217;t even want you to host the software on your <a href="https://technically.dev/universe/server">servers</a> &#8211; they want to do it (and pay for it) themselves. Sick, right?</p><p>Maybe. This increasingly popular <a href="https://technically.dev/universe/deploy">deployment</a> model goes by a few names (self-managed, customer-managed, customer-<a href="https://technically.dev/universe/cloud">cloud</a>-deployed), but we&#8217;ll call it BYOC (Bring Your Own Cloud), and if you&#8217;re building B2B software, it&#8217;s worth understanding what makes some BYOC offerings successful, and some a huge dumpster fire.</p><p>Trickiness aside, the BYOC ask from customers is becoming commonplace. As data regulations get stricter and security teams get more power over vendor decisions, more enterprise buyers are walking into sales calls with a version of the same question: &#8220;Can this run in our cloud?&#8221;. Those vendors that can confidently say yes are making buku bucks.</p><h2>The SaaS deal</h2><p>SaaS works because of a simple trade: as the customer you give up control, and in return, you get convenience. Instead of managing your own servers, you pay the vendor to do it for you. No servers to manage, no upgrades to coordinate, no infra team needed. The vendor handles all of that, and you get a website to log into. For most companies, this is great. You should probably stop reading here if your customers are all happy with this arrangement.</p><p>But &#8220;most companies&#8221; is not &#8220;all companies,&#8221; and the ones where this deal falls apart tend to have very, <strong>very</strong>, large budgets.</p><h2>Mo money mo problems</h2><p>For buyers in financial services, healthcare, defense, and large tech (among others), <a href="https://technically.dev/universe/multi-tenant">multi-tenant</a> SaaS creates problems that aren&#8217;t really solvable with a better sales pitch.</p><blockquote><p><strong>&#128680; Confusion Alert</strong></p><p>Multi-tenant just means that multiple customers are using software that resides on a single physical (or virtual) server. Your data is in the same shared <a href="https://technically.dev/universe/database">database</a> as everyone else&#8217;s. If you use Gmail, that&#8217;s multi-tenant. So is X, Sheets, Claude, you name it.</p></blockquote><p>Here are some of those problems:</p><ul><li><p><strong>Data residency and sovereignty</strong>: some companies can&#8217;t have their data leave their own servers, period.</p></li><li><p><strong>Security posture inheritance</strong>: in SaaS, your customer&#8217;s security is only as good as yours&#8230;and they might not want to take a bet that you know what you&#8217;re doing.</p></li><li><p><strong>Performance and egress costs</strong>: SaaS requires moving a lot of data around the internet, which is expensive AF, in some cases, even more expensive than the software itself.</p></li><li><p><strong>Vendor lock-in</strong>: if your SaaS runs on one specific cloud provider, your customer is now locked into that cloud, even if they already use a different one.</p></li></ul><p>If you&#8217;re a cool, lean, startup moving fast and breaking things, these may sound like lame problems to you. But these are Fortune 500 problems. Get ya money up.</p><h2>The spectrum</h2><p>For all of these reasons and more, companies want to keep things running in their own clouds, your software included. But what that means in practice is very squishy. There&#8217;s a whole spectrum of deployment models that blend vendor-managed and customer-managed <a href="https://technically.dev/universe/infrastructure">infrastructure</a>. Understanding where you sit on it is probably a good first step.</p><p><strong>Fully managed multi-tenant SaaS.</strong> You run everything. Customer gets a login. Everyone&#8217;s data sits in the same general pool of infrastructure. This is the default, and it works great for most buyers.</p><p>Single-tenant SaaS. You still run it, but each customer gets their own isolated infrastructure like databases and <a href="https://technically.dev/universe/api">API</a> servers, in the cloud. Better for compliance and sometimes performance, but you&#8217;re still holding the data.</p><p>Hybrid Architecture. This one is a bit wonky, but worth mentioning. Basically, sensitive data lives in the customer&#8217;s account (called the data plane in this architecture), and non-sensitive data and functionality lives on centralized infrastructure hosted by the vendor (control plane). This can help alleviate some of the pains of fully self-hosted setups, such as a lack of observability for <a href="https://technically.dev/universe/debugging">debugging</a>, because the data plane can communicate error logs and such back up to the control plane.</p><p>Fully self-hosted (pure BYOC). This is the most extreme, but also most lucrative version of BYOC, and the one we&#8217;ll generally focus on here. The customer runs the entire software stack in their own environment. These days, that usually means you ship a containerized (fancy word for packaged) version of your software that runs on <a href="https://technically.dev/universe/kubernetes">Kubernetes</a>, which helps with installs and upgrades. But you lose visibility into what&#8217;s actually happening and debugging without cluster access is painful. Works if your customers have strong platform teams. Doesn&#8217;t if they don&#8217;t.</p><h2>The economics of BYOC</h2><p>If you&#8217;re selling a SaaS product at $50K/year to a mid-market customer, the BYOC version of that same product can go for $150-250K/year. Sometimes more. The functionality is the same. What the customer is paying for is the right to run it inside their own environment, on their own infrastructure, under their own security and compliance posture. So the obvious question is: why would they pay more for less?</p>
      <p>
          <a href="https://read.technically.dev/p/beginners-guide-to-bring-your-own">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How AI content detectors work]]></title><description><![CDATA[Is the third bot the charm?]]></description><link>https://read.technically.dev/p/how-ai-content-detectors-work</link><guid isPermaLink="false">https://read.technically.dev/p/how-ai-content-detectors-work</guid><dc:creator><![CDATA[Christy Bieber]]></dc:creator><pubDate>Thu, 19 Mar 2026 14:30:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2t4_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b451897-4850-4879-9e47-c7ac1d8b53eb_1600x969.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At the start of 2025, I experienced a first in my 16+ year career as a writer. I was told that the blog I had submitted was revealed by an AI detector to be 36% AI.</p><p>Imagine my surprise, as I became a writer to <em>write</em> actual content, not to become a prompt engineer. The idea that I&#8217;d turn over <em>my</em> job to a bot (who, it just so happens, I&#8217;m afraid is coming <em>&#8230;</em></p>
      <p>
          <a href="https://read.technically.dev/p/how-ai-content-detectors-work">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What's Kalshi's revenue?]]></title><description><![CDATA[Analyzing all 203 million trades on Kalshi, to find out how they really work.]]></description><link>https://read.technically.dev/p/whats-a-prediction-market</link><guid isPermaLink="false">https://read.technically.dev/p/whats-a-prediction-market</guid><dc:creator><![CDATA[Sam Schneider]]></dc:creator><pubDate>Thu, 12 Mar 2026 15:02:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GP4L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s 2005, and you start a company called Meth Labs, Inc. You pick up customers, venture capital funding and, before you know it, you&#8217;re listed on the <a href="https://www.nyse.com/index">NYSE</a> under $METH. People can buy shares in your company, sell shares, or put on an <a href="https://en.wikipedia.org/wiki/Iron_condor">iron condor</a>. The NYSE offers a centralized market where buyers and sellers trade at prices that adjust as information is revealed.</p><p>I mentioned the NYSE above, but there are many stock exchanges (NASDAQ, LSE, SSE, etc..) that all facilitate the buying and selling of securities. In fact, markets are so important to society that even if you&#8217;re not an <a href="https://youtu.be/1mc-3mXrNaE?si=m-uVyBh58yFshOQY">avid day-trader</a>, you&#8217;re still constantly interacting with them&#8230;Uber connects drinkers with drivers, Facebook Marketplace connects people with used furniture, and your dad is trying to connect you with a job.</p><p>Let&#8217;s say you want to retire and sell your stock in $METH to pursue other philanthropic work. Who&#8217;d buy them, and how much should they sell for?</p><ul><li><p>Markets define the price people are willing to buy/sell things at (Price Discovery).</p></li><li><p>Markets offer a platform for people to trade assets, as it&#8217;s possible nobody in your neighborhood wants to purchase your $METH (Liquidity).</p></li></ul><p>But what if, instead of the price per share being illuminated by these markets, it indicated the probability of a discrete event? These are called prediction markets.</p><p>By pen and paper at the local cock fight or via centralized, scaled, and well-capitalized firms like Kalshi and Polymarket, prediction markets are different from trading equities:</p><ul><li><p>They are binary. The thing either happens, or it doesn&#8217;t.</p></li><li><p>They resolve once a particular event occurs, an outcome is reached, or a time period has elapsed.</p></li></ul><p>You can&#8217;t buy shares in $METH via a prediction market, but you can bet that $METH will trade between $122 and $124 per share on January 6th.</p><p>Today, we are going to sell a gun at Bass Pro Shops. Errrr, sorry, Claude keeps hallucinating. Today, we are going to review the billions of dollars flowing through these markets, how the legacy of FTX lives on, what percentage is sports gambling, and we&#8217;ll find out how much money Kalshi makes. Let&#8217;s learn a new way to gamble.</p><h2>History/Primer</h2><p>Kalshi and Polymarket launched in 2018 and 2020, respectively. While these two make up the current duopoly, prediction markets originate further back. One of the OG&#8217;s is the <a href="https://iemweb.biz.uiowa.edu/about-iem/">Iowa Electronic Markets (IEM)</a>, hosting prediction markets since 1988.</p><p>Betting on one&#8217;s &#8220;beliefs&#8221; can get people into <a href="https://www.espn.com/espn/betting/story/_/id/39908218/a-line-sports-gambling-scandals-2018">trouble</a>, but the wisdom of crowds remains a valuable predictive force. <a href="https://jmvidal.cse.sc.edu/library/wolfers04a.pdf?ref=blog.gensyn.ai">Take the 2004 paper</a> from Wolfer and Zitzewitz:</p><blockquote><p>&#8220;These markets have predicted vote shares for the Democratic and Republican candidates with an average absolute error of around 1.5 percentage points&#8230; The final Gallup poll yielded forecasts that erred by 2.1 percentage points.&#8220;</p></blockquote><p>Yet&#8230; over all these years, something has been missing&#8230; preventing us from gathering predictions, building markets, scaling to millions of people, and leveraging them for personal gain. That missing piece was <strong><a href="https://techcrunch.com/2025/12/02/kalshi-raises-1b-at-11b-valuation-doubling-value-in-under-two-months/">well capitalized</a> crypto web applications that offer you <a href="https://www.yahoo.com/lifestyle/articles/polymarkets-free-grocery-store-finally-212328968.html">free groceries</a></strong>, giving us the ability to bet on the next pope being <a href="https://polymarket.com/event/will-the-next-pope-be-trans">trans</a>. Just as Hayek intended when he wrote <a href="https://statisticaleconomics.org/wp-content/uploads/2013/03/the_use_of_knowledge_in_society_-_hayek.pdf">The Use of Knowledge in Society</a>.</p><p>We&#8217;ll explore Kalshi in detail, but there are other <a href="https://defillama.com/protocols/prediction-market">projects/protocols</a> in the space.</p><h2>How does this all work?</h2><p>Prediction Markets extend humanity&#8217;s surface area for gambling. Personally, I might wager $10 that I can drink 10 beers before midnight, and my wife&#8217;s boyfriend might not believe me. On one side, I say &#8220;Yes, I can finish ten beers&#8221; while he says &#8220;No, you can&#8217;t finish ten beers&#8221;. Replace me with Lebron James, beers with points, before midnight with the end of the game, and you have an actual <a href="https://kalshi.com/markets/kxnbagame/professional-basketball-game/kxnbagame-26jan26lalchi">market</a> you can trade on Kalshi.</p><p>At Kalshi, a <em><strong>market</strong></em> refers to a single binary market that resolves to &#8220;yes&#8221; or &#8220;no&#8221;. An <em><strong>event</strong></em> is a collection of such markets, and a <em><strong>series </strong></em>groups together similar but independent events. For example:</p><ul><li><p>The highest temperature in Miami is a <em><strong>series.</strong></em></p></li><li><p>Each day of this series is an <em><strong><a href="https://kalshi.com/markets/kxhighmia/highest-temperature-in-miami/kxhighmia-26jan27">event</a></strong></em>.</p></li><li><p>Each event contains <em><strong>markets</strong></em> on the temperature: [68&#176; to 69&#176;] or [69&#176; to 70&#176;].</p></li></ul><p>Each market contains a &#8220;yes&#8221; and a &#8220;no&#8221; with an associated order book. What&#8217;s an orderbook you ask? Let&#8217;s get some terms out of the way&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iULl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iULl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png 424w, https://substackcdn.com/image/fetch/$s_!iULl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png 848w, https://substackcdn.com/image/fetch/$s_!iULl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png 1272w, https://substackcdn.com/image/fetch/$s_!iULl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iULl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png" width="1276" height="1708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1708,&quot;width&quot;:1276,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:349087,&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://read.technically.dev/i/190557745?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.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_!iULl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png 424w, https://substackcdn.com/image/fetch/$s_!iULl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png 848w, https://substackcdn.com/image/fetch/$s_!iULl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.png 1272w, https://substackcdn.com/image/fetch/$s_!iULl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa939f4eb-decd-4353-a3e7-250b377aa4df_1276x1708.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>Every trade on Kalshi is a match made between a maker and a taker. Just like in our &#8220;contrived&#8221; scenario that for sure never happened, makers/takers trade against another person on Kalshi, not the platform itself. Instead of buying shares in a stock, you buy a contract that resolves to $1 if you&#8217;re right and $0 if you&#8217;re wrong.</p><p>As price-sensitive rational actors, I&#8217;m willing to put up $10 to win $20, and so is my wife&#8217;s boyfriend. With these bets in hand, the event has an implied probability of 50% (10/20). In &#8220;event contract&#8221; terms:</p><ul><li><p>We break this down into twenty $1 contracts</p></li><li><p>Each contract is an agreement that we both lock in $.50</p></li><li><p>At resolution, the winner gets to keep the other&#8217;s $.50</p></li></ul><p>As trading heats up, it becomes helpful to track activity with an order book.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xa-4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xa-4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png 424w, https://substackcdn.com/image/fetch/$s_!xa-4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png 848w, https://substackcdn.com/image/fetch/$s_!xa-4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png 1272w, https://substackcdn.com/image/fetch/$s_!xa-4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xa-4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png" width="1090" height="370" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b817d529-196c-4967-8587-c538e464e876_1090x370.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:370,&quot;width&quot;:1090,&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_!xa-4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png 424w, https://substackcdn.com/image/fetch/$s_!xa-4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png 848w, https://substackcdn.com/image/fetch/$s_!xa-4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.png 1272w, https://substackcdn.com/image/fetch/$s_!xa-4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb817d529-196c-4967-8587-c538e464e876_1090x370.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>There are many different ways to display order books. They typically show resting orders, whether someone is buying or selling, how much they are buying or selling, and when the order was placed.</p><p>The <strong>bids</strong> contain all the people looking to buy, and the <strong>asks</strong> contain all the people looking to sell. In the example above, the bids and asks have been ordered from best to worst price. The gap between the best bid (highest purchase price) and best ask (lowest selling price) is called the <strong>spread.</strong></p><p>In a liquid market, like the Super Bowl, the spread is razor-thin (maybe 1 cent). In an illiquid market, the spread might be massive because nobody cares enough to take the other side. This is why Kalshi offers incentives for both <a href="https://help.kalshi.com/incentive-programs/liquidity-incentive-program">liquidity</a> and <a href="https://help.kalshi.com/markets/market-maker-program">market making</a>.</p><p>Looking back at our order book, when a <strong>Market Taker</strong> decides $0.52 is a steal, he trades 50 contracts with my mom (you can see her on the bid side). The price of the asset just &#8220;moved&#8221; to $0.52, and that bid falls off the book. That is <strong>Price Discovery, </strong>or better said, the market is assigning a probability. The degens have updated the likelihood of my liver failure to 52%. Things look different looking at an actual orderbook from Kalshi:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UWzt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UWzt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png 424w, https://substackcdn.com/image/fetch/$s_!UWzt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png 848w, https://substackcdn.com/image/fetch/$s_!UWzt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png 1272w, https://substackcdn.com/image/fetch/$s_!UWzt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UWzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png" width="1362" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:1362,&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_!UWzt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png 424w, https://substackcdn.com/image/fetch/$s_!UWzt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png 848w, https://substackcdn.com/image/fetch/$s_!UWzt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.png 1272w, https://substackcdn.com/image/fetch/$s_!UWzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048af0c1-9c6c-43c4-a9ec-d95333d0e605_1362x704.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>You&#8217;ll notice a &#8220;yes&#8221; and &#8220;no&#8221; side to this order book. Contracts on Kalshi can resolve to &#8220;yes&#8221; or &#8220;no&#8221;, and traders buy/sell both.</p><ul><li><p>On the <strong>yes</strong> side, we have 13 contracts for sale as low as $.44, and 58 can be bought for $.42 with a spread of $.02.</p></li><li><p>On the <strong>no</strong> side, we have 58 contracts for sale as low as $.58, and 13 can be bought for $.56 with a spread of $.02.</p></li></ul><p>Wait&#8230; that looks funny. Why is everything inverse of each-other? Why do the bids for &#8220;yes&#8221; and the asks for &#8220;no&#8221; have the same number of contracts and the prices $.42 and $.58 sum to $1? <em><strong>Because buying yes is the same as selling no.</strong></em></p><p>Now that we have a grasp of resting orders, how does matching work?</p><p>Kalshi uses a price and time priority algorithm on their central limit order book to match orders. On the surface, this is as straightforward as it sounds, orders are prioritized based on price and then time of submission; however, <a href="https://www.janestreet.com/tech-talks/building-an-exchange/">building an exchange</a> and processing these orders at scale is not so trivial. If you want to know more about matching engines, I&#8217;d highly recommend DataBento&#8217;s <a href="https://medium.databento.com/an-introduction-to-matching-engines-a-guide-by-databento-d055a125a6f6">write up</a>. On Kalshi&#8217;s exchange, orders must be fully collateralized, so trading on <a href="https://www.imdb.com/title/tt1615147/">margin</a> isn&#8217;t a thing&#8230; yet.</p><p>For a while, MIAXdx via <a href="https://www.miaxglobal.com/">miax</a> was the clearinghouse for contracts traded on Kalshi&#8217;s exchange (a central place where transactions occur). MIAXdx used to be called LedgerX, but miax <a href="https://www.miaxglobal.com/news/miax-completes-acquisition-ledgerx-ftx-debtors">acquired</a> and renamed it through&#8230; drum roll please&#8230; <a href="https://en.wikipedia.org/wiki/FTX">FTX&#8217;s</a> bankruptcy proceedings! After a while, Kalshi was like &#8220;we want our own clearinghouse&#8221;, so they built and <a href="https://www.cftc.gov/IndustryOversight/IndustryFilings/ClearingOrganizations?Status=Registered&amp;Date_From=&amp;Date_To=&amp;Show_All=1">registered</a> Kalshi Klear with the <a href="https://en.wikipedia.org/wiki/Commodity_Futures_Trading_Commission">Commodity Futures Trading Commission</a> in August 2024. Just to take this full circle, Robinhood recently bought none other than&#8230; <a href="https://www.reuters.com/sustainability/boards-policy-regulation/robinhood-susquehanna-take-over-exchange-ledgerx-prediction-markets-push-2025-11-26/">LedgerX</a> from miax!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically makes practical sense of software and AI.  What you do with that power is up to you.  Subscribe for more from Sam Schneider + the Technically team.</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>The Data</h2><p>I hit Kalshi&#8217;s <a href="https://docs.kalshi.com/api-reference/market/get-markets">markets endpoint</a> and <a href="https://docs.kalshi.com/api-reference/market/get-trades">trades endpoint</a> to get historical data on ~30 million markets, 203 million trades, and over $41,700,000,000 in total volume.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IKFe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IKFe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png 424w, https://substackcdn.com/image/fetch/$s_!IKFe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png 848w, https://substackcdn.com/image/fetch/$s_!IKFe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png 1272w, https://substackcdn.com/image/fetch/$s_!IKFe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IKFe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png" width="1456" height="651" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:651,&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_!IKFe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png 424w, https://substackcdn.com/image/fetch/$s_!IKFe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png 848w, https://substackcdn.com/image/fetch/$s_!IKFe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.png 1272w, https://substackcdn.com/image/fetch/$s_!IKFe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6587c16e-f555-442b-9cfe-484c21ccdc26_1600x715.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>Where is all this volume coming from? Kalshi generates significant traffic directly to its website and app. It has also partnered with some <a href="https://www.investopedia.com/terms/f/fcm.asp">futures commission merchants</a> (FCMs), that facilitate futures trading by accepting contracts on behalf of their clients. You may know them as that place you moved your IRA into&#8230; <a href="https://sg.finance.yahoo.com/news/robinhood-partners-kalshi-launch-nfl-155902168.html">Robinhood</a>, that place where pre-teens trade&#8230; <a href="https://www.webull.com/trading-investing/prediction-markets?hl=en">WeBull</a>, and that other place you have your shit-coins with&#8230; <a href="https://x.com/Kalshi/status/2002046738501362030?s=20">Coinbase</a>.</p><p>The top events by volume were the 2024 presidential election at over $535 million dollars, followed up by the 2026 Superbowl winner at ~$244 million dollars.</p><p>Wait a minute&#8230; the Superbowl&#8230;  is this just&#8230; sports betting?</p><h2>Is this just sports betting?</h2><p>Kalshi is regulated by the <a href="https://www.cftc.gov/">CFTC</a> (Commodity Futures Trading Commission) which supervises U.S. derivatives markets. When I say &#8220;regulated&#8221;, what I really mean is &#8220;<a href="https://x.com/exec_sum/status/1985366253070950723">not regulated</a>&#8221;.  <a href="https://www.law.cornell.edu/uscode/text/7/chapter-1">The Commodity Exchange Act (CEA)</a> established the statutory framework under which the CFTC operates. This gives the CFTC authority to prohibit the trading of <a href="https://www.law.cornell.edu/uscode/text/7/13-1">Onion Futures</a>, but also to allow 18 year olds to trade contracts on Kalshi. Kalshi even boasts about &#8220;Minimum Age to Register &amp; Participate&#8221; being 18+ in their <a href="https://kalshi.com/faq">FAQ</a> section where they directly compare themselves to&#8230; sportsbooks. Sportsbooks are at the <a href="https://rg.org/guides/regulations">mercy of state governments</a>, with some states banning sports gambling entirely and others requiring bettors to be 18 or 21+ (typically 21+).</p><p>Cool, but&#8230; Kalshi is different. You&#8217;re trading contracts against your peers, and they can be on anything. It&#8217;s not just sports, right? I&#8217;m not trading against the house, right?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CSPq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CSPq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png 424w, https://substackcdn.com/image/fetch/$s_!CSPq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png 848w, https://substackcdn.com/image/fetch/$s_!CSPq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png 1272w, https://substackcdn.com/image/fetch/$s_!CSPq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CSPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png" width="1456" height="1333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1333,&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_!CSPq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png 424w, https://substackcdn.com/image/fetch/$s_!CSPq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png 848w, https://substackcdn.com/image/fetch/$s_!CSPq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.png 1272w, https://substackcdn.com/image/fetch/$s_!CSPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb996eabb-223f-4cc3-9b86-41e54189db76_1600x1465.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>Over 82% of contracts are on&#8230; sports. Kalshi is a volume business, the more contracts traded, the more revenue they gross in fees. All the better to be the first gambling platform for 18 year olds. By the way, they offer <a href="https://help.kalshi.com/markets/combos">parlays</a>, making up over 5% of total volume!</p><p>That other thing about not trading against the house&#8230; from Kalshi&#8217;s article titled &#8220;<a href="https://news.kalshi.com/p/who-am-i-trading-against-on-kalshi">Who am I trading against</a>&#8221;:</p><blockquote><p>&#8220;Another significant player on the exchange is <strong>Kalshi Trading</strong>. Kalshi Trading is a separate entity from Kalshi Exchange&#8230; they are a participant on the exchange just like everyone else.&#8221;</p></blockquote><p>If it smells like a sportsbook and trades like a sportsbook it might be a **loud <em>gunshot, author collapses</em>**.</p><h2>Back to The Data!</h2><p>There is a power law distribution of volume in these markets. Bucketing total volume in $, increasing by an order of magnitude, displays this quite well.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!opv9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!opv9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png 424w, https://substackcdn.com/image/fetch/$s_!opv9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png 848w, https://substackcdn.com/image/fetch/$s_!opv9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png 1272w, https://substackcdn.com/image/fetch/$s_!opv9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!opv9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png" width="1456" height="567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:567,&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_!opv9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png 424w, https://substackcdn.com/image/fetch/$s_!opv9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png 848w, https://substackcdn.com/image/fetch/$s_!opv9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.png 1272w, https://substackcdn.com/image/fetch/$s_!opv9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ba5ece-913c-49a2-8f19-67ea5dfc98d5_1600x623.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>80% of the $0 volume markets are Combos (a.k.a multivariate events a.k.a parlays). Each one is a unique market that passes through Kalshi&#8217;s <a href="https://help.kalshi.com/markets/combos#quoting-and-liquidity-rfq-system">RFQ</a> system with many not finding someone to take the other side.</p><p>With the same volume bucketing, splitting the buckets by how they resolved, we see that as volume increases, the percentage of markets resolving to &#8220;yes&#8221; also increases.</p><p>This shows that your base rate for any particular market should air on the side of resolving to &#8220;no&#8221;. The relationship with volume makes sense, events with significantly more markets should spread volume thinly across those markets with only one, or a few, resolving to &#8220;yes&#8221;.</p><p>Within these markets, average contracts per trade hovers around 150-250. Except for a massive spike in 2024 due to some 1,000,000 contract trades placed on the U.S. election. The median sits far under this, typically under 50 for most months.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GP4L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GP4L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png 424w, https://substackcdn.com/image/fetch/$s_!GP4L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png 848w, https://substackcdn.com/image/fetch/$s_!GP4L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png 1272w, https://substackcdn.com/image/fetch/$s_!GP4L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GP4L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png" width="1456" height="567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:567,&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_!GP4L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png 424w, https://substackcdn.com/image/fetch/$s_!GP4L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png 848w, https://substackcdn.com/image/fetch/$s_!GP4L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.png 1272w, https://substackcdn.com/image/fetch/$s_!GP4L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e158141-889d-4edf-8ffc-65f18ce9953e_1600x623.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>Fees: Sportsbook vs Kalshi</h2><p>If a sportsbook is like roulette, winning money through the odds offered, Kalshi is like poker, where the house makes money from the rake, agnostic to who wins or loses.</p><p>At a sportsbook, you&#8217;ll find &#8220;even odds&#8221;, lines that have a 50% chance on either side, like the coin toss at the Superbowl. Instead of giving you even odds, they&#8217;ll offer a 52.4% chance of heads and a 52.4% chance of tails, higher than reality.</p><ul><li><p>In a fair market, if you bet $10 on a coin toss you&#8217;d expect to win $10 if you choose correctly&#8230; but a sports book, with higher odds, will only pay you $9.09</p></li></ul><p>On a sportsbook, if two people bet $10 on opposite sides of a coin toss, 1 person walks away with $19.09, 1 person walks away $0 and the Sportsbook walks away with $.91 or 4.5% of the total amount wagered. That 4.5% is what people call the <em><strong>vig, juice, hold</strong></em>, etc&#8230;</p><p>For example, the Islanders vs Devils market is, conveniently, 52.4%/52.4% on a sportsbook. On Kalshi, contracts are trading at $.51 (51%). So you should trade on Kalshi because you&#8217;re getting better odds at 51% vs 52.4% at the sportsbook, right?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X8_A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X8_A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png 424w, https://substackcdn.com/image/fetch/$s_!X8_A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png 848w, https://substackcdn.com/image/fetch/$s_!X8_A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png 1272w, https://substackcdn.com/image/fetch/$s_!X8_A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X8_A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png" width="1037" height="871" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:871,&quot;width&quot;:1037,&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_!X8_A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png 424w, https://substackcdn.com/image/fetch/$s_!X8_A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png 848w, https://substackcdn.com/image/fetch/$s_!X8_A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.png 1272w, https://substackcdn.com/image/fetch/$s_!X8_A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55648a3d-2858-444c-83c6-b88befadc9ff_1037x871.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>No! The sportsbook offers worse odds, but the Kalshi taker fee of $.35 offsets this:</p><ul><li><p>Kalshi</p><ul><li><p>Bet $10.55 (Buy 20 contracts for a total of $10.20 + $.35 fee)</p></li><li><p>To win $20</p></li></ul></li><li><p>Sportsbook:</p><ul><li><p>Bet $10.55</p></li><li><p>To win $20.14 ($.14 more than Kalshi for the same bet size)</p></li></ul></li></ul><p>This isn&#8217;t the full story for all markets because Kalshi provides a <a href="https://help.kalshi.com/incentive-programs/liquidity-incentive-program">liquidity incentive </a>and a <a href="https://help.kalshi.com/incentive-programs/volume-incentive-program">volume incentive</a>. In addition, the <a href="https://kalshi.com/fee-schedule">Fee Structure</a> is NOT the same for every market and Kalshi does pay you a <a href="https://help.kalshi.com/navigating-the-exchange/your-portfolio/apy-on-kalshi">yield</a> on positions that accrues daily.</p><h2>Fees: The Math</h2><p><em>If you prefer your math in video form, check out Sam on the Technically YouTube channel:</em></p><div id="youtube2-rcHsBM_7s2o" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;rcHsBM_7s2o&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/rcHsBM_7s2o?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>What <a href="https://kalshi.com/docs/kalshi-fee-schedule.pdf">fees</a> is Kalshi making on all this volume? First, we&#8217;ll look at the fees charged to &#8220;takers&#8221;. The formula is:</p><p style="text-align: center;">fees = round up(0.07 x C x P x (1-P))</p><p>Where C is the number of contracts and P is the price (ranging from $0.01 to $0.99).</p><p>We can plot this with the fee as a function of P and C. The price increases linearly as the number of contracts increases; this is controlled by P*(1-P) which, as you can see from the right chart, shows how the fees <strong>decrease</strong> as the underlying probability moves further from 50%, making highly likely and highly unlikely contracts have the <strong>lowest fees.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SmeA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SmeA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png 424w, https://substackcdn.com/image/fetch/$s_!SmeA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png 848w, https://substackcdn.com/image/fetch/$s_!SmeA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png 1272w, https://substackcdn.com/image/fetch/$s_!SmeA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SmeA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png" width="1456" height="578" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:578,&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_!SmeA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png 424w, https://substackcdn.com/image/fetch/$s_!SmeA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png 848w, https://substackcdn.com/image/fetch/$s_!SmeA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.png 1272w, https://substackcdn.com/image/fetch/$s_!SmeA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa0f6a8-745b-4eeb-9d06-b4462a9e9146_1512x600.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>What we&#8217;ve discovered is the <a href="https://en.wikipedia.org/wiki/Bernoulli_distribution">Bernoulli distribution</a>. The Bernoulli distribution models the outcomes of a single &#8220;yes&#8221; or &#8220;no&#8221; question (in our case, a market).</p><ul><li><p>The variance of this distribution can be modeled as P(1-P) where P is the probability of &#8220;Yes&#8221;; the Y axis of the right chart.</p></li><li><p>Variance exists between 0 and .25,</p></li><li><p>Entropy (uncertainty or randomness in a probability distribution) is maximized at P = .5.</p></li></ul><p>Why doesn&#8217;t Kalshi implement a flat fee, so we don&#8217;t have to make graphs? Likely due to trading concerns:</p><ul><li><p>If a contract costs <strong>98 cents</strong>, the maximum profit you can make is <strong>2 cents</strong>. If Kalshi charged a flat 2-cent fee, you would make $0 profit&#8230; no one would trade it.</p></li></ul><p>Maker fees are identical in slope, they are just scaled down due to the .0175 multiplier, one quarter of the taker fee: fees = round up(0.0175 x C x P x (1-P)).</p><p>After downloading all 203 million historical trades on Kalshi, I know the exact price every contract has traded at. I can plug P&amp;C into those equations and derive the total revenue Kalshi has generated from all these contracts&#8230; $545.6 Million dollars.</p><p>Here&#8217;s Kalshi&#8217;s trading volume by implied probability month over month:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R0ds!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R0ds!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png 424w, https://substackcdn.com/image/fetch/$s_!R0ds!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png 848w, https://substackcdn.com/image/fetch/$s_!R0ds!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png 1272w, https://substackcdn.com/image/fetch/$s_!R0ds!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R0ds!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png" width="1456" height="592" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:592,&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_!R0ds!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png 424w, https://substackcdn.com/image/fetch/$s_!R0ds!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png 848w, https://substackcdn.com/image/fetch/$s_!R0ds!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.png 1272w, https://substackcdn.com/image/fetch/$s_!R0ds!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442e44c2-995f-4b64-aa7f-f04fe0fc1e3b_1600x651.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>Here&#8217;s Kalshi&#8217;s revenue from fees month over month:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oNIh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oNIh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png 424w, https://substackcdn.com/image/fetch/$s_!oNIh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png 848w, https://substackcdn.com/image/fetch/$s_!oNIh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png 1272w, https://substackcdn.com/image/fetch/$s_!oNIh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oNIh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png" width="1456" height="619" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&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_!oNIh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png 424w, https://substackcdn.com/image/fetch/$s_!oNIh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png 848w, https://substackcdn.com/image/fetch/$s_!oNIh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.png 1272w, https://substackcdn.com/image/fetch/$s_!oNIh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0391b09-7e65-4f56-a27f-5c3cadbaced0_1600x680.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>It&#8217;s clear these markets are exploding in popularity, while <a href="https://predictions.draftkings.com/en/">DraftKings</a>, <a href="https://www.fanduel.com/predicts">Fanduel</a>, and <a href="https://www.fanaticsinc.com/press-releases/fanatics-launches-fanatics-markets-the-first-prediction-market-at-the-intersection-of-sports-finance-and-culture">Fanatics</a> scramble to the party. The, &#8220;We are basically doing the same thing but now it&#8217;s sudo-regulated and 18 years olds can do it&#8221; party.</p><h2>Resolutions</h2><p>An interesting resolution was when <a href="https://kalshi.com/markets/kxnflgame/professional-football-game/kxnflgame-25sep28gbdal">Dallas and Green Bay tied</a> in an NFL game. The market resolved to <a href="https://x.com/eightyhi/status/1956098638029185124">50/50</a> rather than yes or no, 100 or 0&#8230; there is no concept of pushing or voiding bets in a prediction market. When things get unclear, Kalshi steps in. In the data, Kalshi marks these results as &#8220;scalar&#8221;, with over 170,000 markets marked as such.</p><p>Market resolution seems to be fairly manual on Kalshi. They have a markets team that thoroughly reviews outcomes. Each market has an authoritative point of reference. For example, the <a href="https://kalshi.com/markets/kxsb/super-bowl/kxsb-26">superbowl</a> lists out several sources and contains rules specific to the event. Despite all that, they still couldn&#8217;t figure out if <a href="https://kalshi.com/markets/kxperformsuperbowlb/who-will-perform-at-the-super-bowl/kxperformsuperbowlb-26">Cardi B performed</a> and resolved the market to the last traded price.</p><p>Polymarket said &#8220;<a href="https://polymarket.com/event/who-will-perform-at-super-bowl-halftime-show">Yes she did perform&#8221;</a> which highlights how they do resolutions <a href="https://docs.polymarket.com/polymarket-learn/markets/how-are-markets-resolved">differently</a> using <a href="https://uma.xyz/">UMA&#8217;s optimistic Oracle</a>&#8230; but we&#8217;ll save that for another time.</p><h2>Conclusion</h2><p>With that, I have 9 beers to drink, and I&#8217;m way over my word count.</p><blockquote><p><strong>Quick legal side quest:</strong> There is another Prediction Market called <a href="https://www.predictit.org/">PredictIT</a> that specializes in political prediction markets. PredictIT is run by a firm called <a href="https://www.aristotle.com/">Aristotle</a> that performs data mining for political campaigns. It was launched in 2014 as a nonprofit educational project out of the Victoria University of Wellington, New Zealand. To operate, they acquired a <a href="https://en.wikipedia.org/wiki/No-action_letter">no-action-letter</a> from the CFTC just like the <a href="https://iem.uiowa.edu/iem/">IEM</a> had, as they agreed to abide by certain guardrails and serve academic purposes. Then, in 2022, PredictIT got shlebanngged by the CFTC for NOT operating in accordance with their agreement. In 2025, they <a href="https://www.lexology.com/pro/content/predictit-defeats-cftc-in-latest-victory-election-betting-market">360 no scoped</a> the CFTC in federal court, and the &#8220;<a href="https://www.predictit.org/platform-announcements">Cadillac of Prediction Markets&#8221;</a> is back baby.</p><p>Anyways, basically, all these players in the &#8220;event contract&#8221; game are submitting <a href="https://www.cftc.gov/csl/24-09/request_letter/0/download">letters</a> and <a href="https://www.cftc.gov/csl/25-47/request_letter/0/download">letters</a> to the CFTC to not take action against them for failing to meet reporting requirements that they&#8217;d otherwise be required to perform. So far, the CTFC seems to <a href="https://www.financemagnates.com/forex/cftc-spares-polymarket-gemini-aristotle-and-miaxdx-from-swap-reporting-rules/">agree</a>, citing the &#8220;limited applicability of traditional swap reporting rules to<a href="https://www.financemagnates.com/terms/e/exchange/"> </a>exchange traded event contracts&#8221;. There&#8217;s other stuff here, like how Kalshi and Robinhood are classified, but suffice it to say that there are many <a href="https://www.barrons.com/articles/cftc-prediction-markets-kalshi-polymarket-185ed141?gaa_at=eafs&amp;gaa_n=AWEtsqcbw3EszNqoxEao-2NNW_09eTyUh4Ds_H-vV76p2DoN5GlX09NmTt1QRO1a7fQ%3D&amp;gaa_ts=69817cd7&amp;gaa_sig=CQMyepqKnUP3RikK8zScuEQNTwlN0h7Q5edqDk-W5tgxZ7CokdOHX8kM0fZiAESbvl22blMApwbpBLZKQ6Jrpg%3D%3D">conversations</a> to be had in the future on how to regulate, tax, and manage reporting on these &#8220;new&#8221; entities.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[What's a Forward Deployed Engineer?]]></title><description><![CDATA[And why is every startup around following the Palantir model?]]></description><link>https://read.technically.dev/p/whats-a-forward-deployed-engineer</link><guid isPermaLink="false">https://read.technically.dev/p/whats-a-forward-deployed-engineer</guid><dc:creator><![CDATA[Sung Won Chung]]></dc:creator><pubDate>Thu, 05 Mar 2026 17:15:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2e615a72-ffc2-472f-9a5a-2e6f57c58949_1640x854.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Before we dive in, two housekeeping notes:</p><ol><li><p>The annual <a href="https://docs.google.com/forms/d/e/1FAIpQLSejyOC5vP99MFHptEx1lHSyYcE3WEDz5o3Yf0Qgcb1d5J0zqQ/viewform?usp=dialog">Technically reader survey</a> is open until the end of the week. </p></li><li><p>Last week&#8217;s post (on <a href="https://read.technically.dev/p/vibe-coding-and-the-maker-movement">vibe coding + the maker movement</a>) from <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Sachin&quot;,&quot;id&quot;:933715,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a128e670-9ce7-4619-860e-7da7b31069ed_836x836.jpeg&quot;,&quot;uuid&quot;:&quot;bde513a9-3777-48a4-9069-98d95dd95ed2&quot;}" data-component-name="MentionToDOM"></span> made the front page of<a href="https://news.ycombinator.com/item?id=47167931"> Hacker News</a> and roused quite a convo.  To continue that convo, tomorrow Sachin + friends will host a <a href="https://open.substack.com/live-stream/124792?utm_source=live-stream-scheduled-upsell">Substack live session at 3:30pm ET</a> to discuss whether we&#8217;re making anything of value when we vibe code, among other topics.</p></li></ol><p>Now on to Palantir + the Forward Deployed Engineer role. Let&#8217;s give a warm welcome to Sung, who&#8217;s done technical sales at multiple software companies (most notably dbt Labs), on his first Technically post.</p><div><hr></div><h2><strong>The TL;DR</strong></h2><p>The startup ecosystem is seeing an explosion of companies coining themselves as, &#8220;We&#8217;re basically Palantir, but for X.&#8221; Underlying that idea is the <strong>Forward Deployed Engineer</strong>, or FDE &#8211; think of them like a customer-facing engineer working directly with prospects and customers. The FDE seems to be all the rage right now&#8230;but is it actually a good idea for startups to have them?</p><p>This post will run through everything you need to know about FDEs, what they do, secular trends that are causing so many companies to want to hire them, and whether they actually make sense for most businesses.</p><p><em>If you prefer this post in video form, check it out on Technically&#8217;s burgeoning <a href="https://www.youtube.com/@Technicallydotdev">YouTube channel</a>:</em></p><div id="youtube2-aDq09TyfmnE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;aDq09TyfmnE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/aDq09TyfmnE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>What is a Forward Deployed Engineer (FDE)?</strong></h2><p>A Forward Deployed Engineer (FDE) is a highly technical, customer-facing role where software engineers are embedded directly within customers to solve real-world problems. Originally pioneered by companies like Palantir, the role has become essential for AI, enterprise SaaS, and data infrastructure firms where products are too complex to be &#8220;plug-and-play.&#8221; Instead, someone from the vendor has got to get in there and make sure it actually works.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BAVK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BAVK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png 424w, https://substackcdn.com/image/fetch/$s_!BAVK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png 848w, https://substackcdn.com/image/fetch/$s_!BAVK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png 1272w, https://substackcdn.com/image/fetch/$s_!BAVK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BAVK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png" width="1456" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&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_!BAVK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png 424w, https://substackcdn.com/image/fetch/$s_!BAVK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png 848w, https://substackcdn.com/image/fetch/$s_!BAVK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.png 1272w, https://substackcdn.com/image/fetch/$s_!BAVK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cb12f92-bd92-4d12-bb83-0be75a1a6361_1518x672.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>How is this different then a conventional technical consultant?</strong></p><p>Technical consultants &#8211; think Accenture and the like &#8211; have been around for decades. Isn&#8217;t an FDE the same thing?</p><p>A lot of people had that same question when Palantir coined the role and it can be summed up simply. FDEs do highly custom work &#8211; like a technical consultant &#8211; but then take it a step further by <em>generalizing</em> the implementation and lessons learned into a core product. In Palantir&#8217;s case, an example is<a href="https://www.palantir.com/docs/foundry/architecture-center/platforms"> *Foundry, &#8220;*the foundational data operations platform, which provides the core capabilities for data management, logic authoring, Ontology development, analytics, and workflow development.&#8221;</a> In a startup&#8217;s case, you&#8217;ll notice they use terms like &#8220;platform&#8221; which is analogous to providing the lego blocks to build use-case specific software vs. building from scratch every time.</p><p><strong>How is this role different from a software engineer (SWE)?</strong></p><p>SWEs are primarily internal and have <a href="https://www.youtube.com/watch?v=HLZrf7xuoi0">minimal interactions with customers</a>. The FDE, on the other hand, takes on the mantle of owning direct customer relationships. There&#8217;s usually a distinction, sometimes as subtext, that FDEs need high technical ability <em>and</em> emotional intelligence (EQ) to be effective in the role. If you&#8217;ve been in the workforce for years, you&#8217;ll recognize this combination is rarer than people think (or like to admit).</p><h2><strong>Why is this Palantirization narrative so popular </strong><em><strong>now</strong></em><strong>?</strong></h2><p><strong>We don&#8217;t know what we don&#8217;t know</strong></p><p>Deploying AI in production is hard, brittle, and constantly evolves. There is literally no such thing as best practice right now. For example, people were raving about vector databases to reduce bloat for LLM models retrieving context to perform tasks. But now, mainstream LLM models don&#8217;t need that infrastructure overhead because they handle 1 million tokens in their context windows; vector databases aren&#8217;t so hot anymore. Similarly, testing AI applications is an emerging art called &#8220;evals&#8221; that is in very early stages to even have convention. This builds a lot of anxious hesitation for anyone, even those on the cutting edge. You can imagine this feeling is more pronounced in <em>large enterprises.</em></p><p><strong>Only a real person can clear the fog of war</strong></p><p>This then motivates the question of what&#8217;s worth retrofitting (think: slapping AI chat bubbles in your app) vs. replacing entire people, processes, and existing subscriptions. There aren&#8217;t enough role models in the industry yet, so companies need a real human with deeply lived experience to make sense of the constant change. To make this emotionally grounded, it&#8217;s like what a lot of people do when researching health problems with AI. It may give convincing general guidance, but you&#8217;ll want a real, human doctor to make big decisions and catch things you didn&#8217;t think to ask the AI.</p><p><strong>Why can&#8217;t you be like Cursor?</strong></p><p>The above couples tightly with the fact that expectations for being a &#8220;successful startup&#8221; have increased exponentially. Being a unicorn ($1 billion valuation) startup gave you pedestal prestige. But now, it feels like you have to be a decacorn ($10 billion valuation) startup to attain that same cachet. To reach that decacorn requires fast revenue growth, and the easiest way to get there is to win bigger sales deals that are six-figures on average vs. the 4-5 figures a lot of startups even 2 years ago saw as convention. This biases them towards going all-in on <em>large enterprises.</em></p><h2><strong>But first, explaining enterprise sales</strong></h2><p>To understand the role of the FDE we must first take a detour to talk about old school enterprise sales.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_X7t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_X7t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png 424w, https://substackcdn.com/image/fetch/$s_!_X7t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png 848w, https://substackcdn.com/image/fetch/$s_!_X7t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png 1272w, https://substackcdn.com/image/fetch/$s_!_X7t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_X7t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png" width="1456" height="1132" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1132,&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_!_X7t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png 424w, https://substackcdn.com/image/fetch/$s_!_X7t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png 848w, https://substackcdn.com/image/fetch/$s_!_X7t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.png 1272w, https://substackcdn.com/image/fetch/$s_!_X7t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b01823c-4d07-4dd0-aa0a-c383a5ba82d7_1600x1244.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>In short, it&#8217;s a highly custom sales motion requiring many months, persuading and aligning multiple stakeholders and departments at a company, custom contracting, and &#8220;white-glove&#8221; onboarding. Some examples include buying a fleet of airplanes by a major airline. The airline likely won&#8217;t feel comfortable with standard pricing and contract terms with the swipe of a monthly credit card subscription. For software, the enterprise sales motion above was likely expressed in how your company bought slack or Microsoft teams, buying hundreds or thousands of seats in a single contract.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically helps you make practical sense of software + AI.  Subscribe to know which tools + trends to follow, and which to let pass you by like a floating branch on a stream.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Working with enterprises is very very difficult</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ku5S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ku5S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png 424w, https://substackcdn.com/image/fetch/$s_!ku5S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png 848w, https://substackcdn.com/image/fetch/$s_!ku5S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png 1272w, https://substackcdn.com/image/fetch/$s_!ku5S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ku5S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png" width="479" height="408.34490238611716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:393,&quot;width&quot;:461,&quot;resizeWidth&quot;:479,&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_!ku5S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png 424w, https://substackcdn.com/image/fetch/$s_!ku5S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png 848w, https://substackcdn.com/image/fetch/$s_!ku5S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.png 1272w, https://substackcdn.com/image/fetch/$s_!ku5S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F016548a8-72c8-43a4-9620-ba08d69103a8_461x393.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>Let&#8217;s get a bit more meticulous with how selling to large enterprises looks and feels. The above affectionately termed &#8220;the decagon of despair&#8221; illustrates why enterprises are slow to buy new software, even if they really want it. I&#8217;ll belabor the point with questions that a potential customer thinks through when they see a demo or thinking seriously about buying.</p><ul><li><p><strong>Institutional Inertia</strong>: Why is this worth doing extra work on top of my busy job?</p></li><li><p><strong>Charging Models</strong>: Do we get economies of scale as we expand usage of the product?</p></li><li><p><strong>Audit</strong>: What internal governing body/accounting firm will yell at me if we get this wrong?</p></li><li><p><strong>Capability</strong>: Does it solve the problem with a reasonable level of effort?</p></li><li><p><strong>Security</strong>: Does this touch the public internet? You got RBAC and SSO? SOC 2 Type 2?</p></li><li><p><strong>Outdated Paradigms</strong>: This mental model is the only one this org runs on (think: on-prem only)</p></li><li><p><strong>Regulation</strong>: What external governing body will yell at us if we get this wrong?</p></li><li><p><strong>Procurement</strong>: What&#8217;s a reasonable price to value?</p></li><li><p><strong>Legacy</strong>: Retrofit vs. replace?</p></li><li><p><strong>Change Control</strong>: Who is the project manager that keeps progress daily and maps names to scope?</p></li></ul><p>These questions swim through an enterprise buyer&#8217;s head no matter how good a startup&#8217;s product is. It can be summed in an adage we&#8217;re all familiar with: &#8220;Change is hard.&#8221; Most enterprises aren&#8217;t willing to change with fancy slides, a demo, and even an undeniably great product. Enterprise buyers commit to a complicated, immersive relationship, and you need a face like an FDE to instill trust that it&#8217;s worth it.</p>
      <p>
          <a href="https://read.technically.dev/p/whats-a-forward-deployed-engineer">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[On change]]></title><description><![CDATA[The times they are a-changin'&#8212;but maybe not how you think. Plus a reader survey.]]></description><link>https://read.technically.dev/p/on-change</link><guid isPermaLink="false">https://read.technically.dev/p/on-change</guid><dc:creator><![CDATA[Justin]]></dc:creator><pubDate>Tue, 03 Mar 2026 16:00:29 GMT</pubDate><enclosure url="https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/8ad5f442-febc-4917-bfa2-705713562ce2_1100x220.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One thing that I&#8217;ve been thinking about a lot lately is change. Change comes in all forms, whether you&#8217;re ready for it or not, and whether it&#8217;s the kind you wanted or now begrudgingly need to adapt to.</p><p>First, there&#8217;s been a lot of change with Technically. We&#8217;ve assembled a pretty killer group of writers covering topics in new depth, from Will <a href="https://read.technically.dev/p/whats-a-datacenter">going in depth on data centers</a> to Christy <a href="https://read.technically.dev/p/ai-and-the-em-dash">explaining why</a> AI uses so many em dashes. In fact, Sachin&#8217;s post about <a href="https://read.technically.dev/p/vibe-coding-and-the-maker-movement">vibe coding and the maker movement</a> was the first post from Technically to ever make it to the front page of Hacker News, 6 years after I started this thing. It&#8217;s weird to transition from only-writer to editor and sometimes-writer, but this is <em>good</em> change.</p><p>The change in the labor markets is not necessarily good change. Last week Block laid off 40% of their 10,000 employees, despite the fact that &#8220;our business is strong&#8221; and &#8220;gross profit continues to grow.&#8221; Jack said it&#8217;s because of AI&#8230;but is that really true? Or did Block just overhire in 2020 &#8211; like everyone else did &#8211; and the time has come to pay the piper? For those of us using AI day to day, it&#8217;s hard to say we&#8217;re getting a 40% efficiency gain (as if that would even translate to an entire organization).</p><p>Quibbles about disingenuous headcount reduction aside, everyone seems to believe that more of these mass layoffs are coming. The story goes that AI is going to make entire swaths of workers obsolete, rendering them useless corporate husks who will need to resort to &#8220;get ready with me as an unemployed father of 3&#8221; reels to pay the bills. Grim indeed.</p><p>But even this change isn&#8217;t so clear. Like happened with previous waves of technological disruption, entirely new fields are opening up thanks to AI. Notion just <a href="https://jobs.ashbyhq.com/notion/4bbfad88-0830-46c5-8d05-d95d17d583ca">opened up a new role</a> for a &#8220;Model Behavior Engineer&#8221; whose job is to own the quality bar for Notion AI products. It&#8217;s a wacky combination of technical skill, good taste, running evals, and all-in-all doing a suite of things that completely didn&#8217;t exist a few years ago. Plus, contrary to popular narratives, job postings for software engineers &#8211; whose work is allegedly &#8220;a solved problem&#8221; by AI &#8211; <a href="https://www.citadelsecurities.com/news-and-insights/2026-global-intelligence-crisis/">are up 11% this year</a>.</p><p>In fact, we&#8217;re seeing this in a quickly changing Technically subscriber base. Over the past few months we&#8217;ve been getting a ton of signups from industrial companies, from pipe manufacturers to railroads. New people are interested in software and AI, and how they can use it at work to make their jobs easier.</p><p>Bobby said it best in 1964: The Times They Are A-Changin. I believe that if we&#8217;re open minded, are willing to change quickly, and hustle a little bit, we&#8217;ll all be fine.</p><p>Which brings me to you. To make sure we're covering the right things for the right people, from time we run reader surveys.  In last year&#8217;s survey, we realized that no one (not even us) knew what evals were.</p><p><em>Lend us 2 minutes for a 6-question survey, to share where we can help you become more technical this year:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/forms/d/e/1FAIpQLSejyOC5vP99MFHptEx1lHSyYcE3WEDz5o3Yf0Qgcb1d5J0zqQ/viewform?usp=dialog&quot;,&quot;text&quot;:&quot;Take the survey&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/forms/d/e/1FAIpQLSejyOC5vP99MFHptEx1lHSyYcE3WEDz5o3Yf0Qgcb1d5J0zqQ/viewform?usp=dialog"><span>Take the survey</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Will vibe coding end like the maker movement?]]></title><description><![CDATA[Is your vibe-coded app a Crapject or a Gift?]]></description><link>https://read.technically.dev/p/vibe-coding-and-the-maker-movement</link><guid isPermaLink="false">https://read.technically.dev/p/vibe-coding-and-the-maker-movement</guid><dc:creator><![CDATA[Sachin]]></dc:creator><pubDate>Thu, 26 Feb 2026 16:00:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/930faad1-6c70-4d57-a2f1-5273483daa28_644x447.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whenever a new technology arrives, the impulse is to treat it as something that has never existed before. A clean break from everything that came prior. I catch myself doing this with vibe coding constantly, and I see it everywhere around me. But the most useful lens for understanding a new phenomenon is almost never the phenomenon itself. You want something adjacent, close enough to share structural similarities but removed enough to see clearly. It&#8217;s on the lookout for something like this that I started reading more about the Maker Movement of ~2005-2015.</p><p>The Maker Movement was the spiritual predecessor to vibe coding. The parallels are hard to miss. Vibe coding has <em>slop</em>. The Maker Movement had <em><a href="https://www.vice.com/en/article/the-inexorable-rise-of-the-crapjects/">crapjects</a>,</em> a term the community coined for 3D-printed objects that served no purpose beyond proving you could extrude plastic into a shape. The Claude Code of that era was a $200 printer from Monoprice and a breadboard.</p><p>The scene around making produced what were probably the first internet-native network intellectuals. <a href="https://en.wikipedia.org/wiki/Chris_Anderson_(writer)">Chris Anderson</a> (who wrote the widely-read piece about the long tail) left his editor-in-chief role at <em>Wired</em> to start a robotics company called 3D Robotics. Cory Doctorow wrote<a href="https://en.wikipedia.org/wiki/Makers_(novel)"> Makers,</a> a sci-fi novel based around characters who are hacking hardware and business models to survive in a world where everything is falling apart. These were people who gained influence by participating visibly in a making culture and writing about what it meant.</p><p>A lot of the intellectual energy of the AI era orbits around AGI: when it arrives, what it&#8217;ll do to jobs, whether it will be aligned. The Maker Movement had its own gravitational center, and it was the idea that making physical things with your hands could produce an internal transformation. You would become more creative, more entrepreneurial, more self-reliant. The object you made mattered less than what the act of making did to you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V58r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V58r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png 424w, https://substackcdn.com/image/fetch/$s_!V58r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png 848w, https://substackcdn.com/image/fetch/$s_!V58r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png 1272w, https://substackcdn.com/image/fetch/$s_!V58r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V58r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png" width="626" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:626,&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;: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_!V58r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png 424w, https://substackcdn.com/image/fetch/$s_!V58r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png 848w, https://substackcdn.com/image/fetch/$s_!V58r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.png 1272w, https://substackcdn.com/image/fetch/$s_!V58r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae2044e-9f90-45a4-9681-9b6a3832607a_626x782.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><h2>Puritanism With a Soldering Iron</h2><p>In 2018, the media scholar Fred Turner <a href="https://fredturner2022.sites.stanford.edu/sites/g/files/sbiybj27111/files/media/file/turner-millenarian-tinkering-tech-culture-2018.pdf">published a paper</a> that put this ideology under a microscope. His argument was that the Maker Movement had reinvented the theology of the Western Frontier for the digital age.</p><p>The specifics of seventeenth-century Puritanism are obviously gone. Nobody at a Maker Faire was talking about predestination. But Turner traced the literary forms and the millenarian structure&#8212;the belief that a great transformation is coming, and that individual discipline will determine who makes it through. In the Maker narrative, the American landscape is economically barren. Jobs have disappeared. Institutions have failed you. And in this wilderness, the lone individual searches inside themselves for signs of the entrepreneurial spirit, the creative spark, evidence that they are among the elect who will build their way to salvation.</p><p>Turner&#8217;s observation extends well beyond 3D printers. You can trace this same pattern through almost every hobbyist technology scene of the past fifty years. Homebrew computer clubs in the 1970s. Punk zines in the 1980s. The early web in the 1990s. Each one developed a community of practice&#8212;what Brian Eno would call a &#8220;scenius&#8221;&#8212;where people played with tools that the mainstream considered toys. Each one generated its own salvation narrative: master this tool, transform yourself, become the kind of person who builds the future.</p><p>And each one operated with a useful kind of slack. The tools were unproductive on purpose. Nobody expected your Arduino project to ship to customers. Nobody expected your homebrew computer to compete with IBM. The whole point was that you had permission to fuck around, and the finding-out happened gradually, through play, over years. This is where the old Silicon Valley adage comes from: &#8220;What smart people do on the weekends, everyone else will do during the week in ten years.&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Receive new issues of Technically to your inbox:</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>What&#8217;s Different About Vibe Coding</h2><p>Vibe coding broke this pattern in a way that matters.</p><p>Every previous wave of hobbyist technology went through a scenius phase&#8212;a period where small groups of weirdos played with tools before anyone expected economic output from them.</p><p>Vibe coding skipped that phase entirely. It was deployed directly to the general public, and almost immediately into the codebases of enterprise companies and well-developed products. There was no protected playground period. There was no time to accumulate the weird, useless, playful knowledge that scenius communities generate. Instead, there was immediate pressure to one-shot yourself into a hit product or solve a complex use case on the first try.</p><p>This matters because the scenius phase is where the internal transformation actually happens. When you spend two years making useless Arduino projects, you develop instincts about electronics, materials, and design that you can&#8217;t get from a tutorial. When vibe coding goes straight to production, you lose that developmental space. The tool is powerful enough to produce real output before the person using it has developed real judgment. When I speak with people who are on Claude Code 12-14 hours a day, I feel like I&#8217;m speaking to someone possessed by something, attempting to grasp a different reality. In the case of scenius, the feedback loop that tethers you to reality was provided by other humans. Someone looked at your project and told you it&#8217;s pointless, or brilliant, or both. While in the case of vibe coding, the feedback loop is provided by the machine, and you&#8217;re constantly attempting to discern if you&#8217;re going crazy or if something genuinely valuable has been produced.</p><p>What it produces is something like hypomania: a state where your productive capacity genuinely increases. You&#8217;re not imagining that you&#8217;re getting more done, you actually are, but your evaluative faculty is unaccustomed to this mode of creation. You lose the ability to distinguish between &#8220;this is good&#8221; and &#8220;I feel good making this.&#8221; Everything feels like a breakthrough. The output is real but your relationship to it is distorted.</p><p>The speed and ease of vibe coding create a kind of evaluative anesthesia. You can&#8217;t tell if you&#8217;ve built something useful or just something that exists. In some way, this is the sober version of hippies in the 60s trying LSD for the first time: sometimes you may have a breakthrough, or you may have a breakdown, but regardless of which, this is the opposite of the salvation through making that Fred Turner talks about.</p><h2>The Maker Movement&#8217;s Quiet Ending</h2><p>There&#8217;s a second reason the old transformation-through-making metaphor doesn&#8217;t fit vibe coding, and it has to do with how the Maker Movement actually ended.</p><p>The central promise&#8212;that distributed digital fabrication would bring manufacturing back to America, that every city would have micro-factories, that 3D printing would decentralize production&#8212;simply didn&#8217;t materialize. What happened instead follows a pattern that Joel Spolsky described years ago in his essay on <a href="https://www.joelonsoftware.com/2002/06/12/strategy-letter-v/">commoditizing your complement</a>: cheap 3D printers and Arduinos made <em>prototyping</em> nearly free, which was genuinely useful. But the deep, compounding knowledge of how to actually manufacture things at scale continued to accumulate in industrial bases like Shenzhen. Prototyping got democratized. The cheap tools commodified one layer of the stack and made the layer beneath it more valuable by comparison.</p><p>You can watch something structurally similar happening with vibe coding right now. People are rapidly prototyping tools that threaten to displace <a href="https://www.cnbc.com/2026/02/09/monday-com-stock-ai-software.html">entire SaaS business models</a>. But the value generated by all that rapid iteration and prototyping flows upward. It accumulates at the model layer, in the training data, in the infrastructure. The vibe coders themselves risk becoming interchangeable, each one spinning up impressive demos without accumulating durable value of their own. The pattern rhymes: cheap tools democratize one layer, and the layer beneath captures the surplus.</p><h2>A New Metaphor: Consumption</h2><p>With both of these forces at play&#8212;no scenius phase to develop through, and value accumulating upstream rather than with the maker&#8212;the old metaphor of transformation-through-making doesn&#8217;t hold up exactly. We need a new one.</p><p>The metaphor I&#8217;d offer is <strong>consumption</strong>.</p><p>Specifically: consumption of a surplus intelligence. AI represents an enormous amount of available cognitive energy, and vibe coding is one way of expending that energy before it goes to waste. Think of it like a resource that&#8217;s being generated whether you use it or not&#8212;and vibe coding is the act of channeling that surplus into play, into exploration, into rapid creation that may or may not produce lasting artifacts.</p><p>This framing has started showing up in various places. Rachel Thomas compares the experience of vibe coding something to <a href="https://www.fast.ai/posts/2026-01-28-dark-flow/">the dark flow state when you gamble</a>. The idea being that you are getting addicted to the superficial experience of creating, which might start off as flow, but eventually becomes something you are addicted to rather than something that helps you grow.</p><p>Consumption almost always gets treated as a negative behavior, especially if you&#8217;re an entrepreneur or builder. Consuming is what passive people do. Builders produce.</p><p>I think this framing is wrong, or at least incomplete. There are several productive ways to think about what consumption actually generates.</p><h3>Taste as a Residue of Expenditure</h3><p>When production becomes lightning fast with low marginal costs (when you can spin up an app in an afternoon), the scarce resource shifts to knowing what <em>should</em> exist. The vibe coder who burns through dozens of prototypes, building things and immediately discarding them, develops a kind of pattern recognition that the models themselves don&#8217;t have. This is judgment about what&#8217;s worth building, what feels right, what users actually want. It&#8217;s a sensibility, and sensibility is notoriously hard to commoditize because it&#8217;s illegible. You develop it by making a lot of things and paying attention to which ones felt alive and which ones felt dead.</p><p>The value capture here looks like creative direction, curation, taste-making, advisory roles. You&#8217;re selling the discrimination you developed <em>by</em> making things and throwing them away. The ideas guy is back. At the extreme end of this path, you become the protagonist of William Gibson&#8217;s <em>Pattern Recognition</em>: someone who has such finely tuned aesthetic instincts that companies hire them simply to say yes or no to something already production ready.</p><h3>Attention as a Combustion Byproduct</h3><p>Expenditure that&#8217;s visible generates spectacle, and spectacle generates attention. When you vibe-code something in public&#8212;building fast, shipping immediately, iterating in front of an audience&#8212;the product you make matters less than the performance of making it. And undoubtedly, much of vibe coding today is pure signalling performance.</p><p>The recent wave of &#8220;<a href="https://x.com/search?q=built%20in%20a%20weekend%20&amp;src=typed_query">built this in a weekend</a>&#8220; posts works on this principle. The product is often mid. Sometimes it&#8217;s outright disposable. But the act of making it, timing the release, and dropping it into the network at the right moment is a performance of surplus, and people watch performances. The value capture is audience, reputation, and the optionality those create in the form of future collaborations, job offers, investor interest, consulting gigs.</p><p>This is structurally identical to how content creators already operate. A YouTuber&#8217;s individual video is an expenditure. The audience accumulated across hundreds of videos is the asset. Vibe coding just adds another medium to the content creator&#8217;s toolkit: instead of expending effort on essays or videos, you expend it on apps and tools, and you capture the attention the same way.</p><h3>Projects as Gifts</h3><p>If you treat your vibe-coded output as gifts&#8212;open source tools, free utilities, shared templates, public repos&#8212;you&#8217;re creating the conditions to occupy an interesting or powerful position in the network. Think of the people who built the early web&#8217;s most useful free tools and resources: They became nodes that other people oriented around.</p><p>The gift economy has always been the underlying value capture strategy of open source, but the consumption frame explains why it works <em>psychologically</em> for vibe coders in a way that the usual advice of &#8220;build open source projects to get hired&#8221; doesn&#8217;t quite land. When you frame it as strategic career-building, it feels transactional and a little desperate. When you frame it as expending surplus, it feels natural. You have extra cognitive energy available through these tools. You spend it. You give away what you made. And the gift economy does what gift economies have always done: it creates social bonds, reputation, and reciprocal obligation.</p><h3>Signal Capture Before Upstream Absorption</h3><p>Every time you vibe-code something, you&#8217;re generating signal. Signal about what users want. Signal about which patterns work. Signal about where the model fails, what edge cases it misses, what instructions it misinterprets. That signal currently flows upstream to model providers for free. Your prompts, your iterations, your corrections&#8212;all of it becomes training data for the next generation of models. You are, in a very literal sense, performing unpaid labor for the infrastructure layer every time you build something.</p><p>But informational exhaust can be captured before it drifts upstream. If you can structure the signal you&#8217;re generating&#8212;as proprietary datasets, as documented feedback loops, as systematic records of what works and what doesn&#8217;t in a specific domain&#8212;you end up holding something the infrastructure layer actually needs and can&#8217;t easily replicate. Every vibe coding session produces this exhaust as a byproduct. The question is whether you let it dissipate or whether you collect it. The people who collect it end up building what you might call a data fortress: a position that gets stronger with every prototype, even the ones that get thrown away, because the knowledge of <em>why</em> they failed is the valuable part.</p><p>This is the spirit of what early makers were accomplishing in the scenius. Trivial as their output may have been, they were immersed in the production process and through that developed a tactile understanding of their medium. With vibe coding, that data is generated for free. Will you use it?<br><br>***</p><p>Consumption doesn&#8217;t have to be passive. Surplus can be spent well. The key distinction is whether you&#8217;re burning energy with some awareness of what the combustion produces&#8212;taste, attention, social capital, structured signal&#8212;or whether you&#8217;re just spinning up a dozen projects and wondering why none of them stick.</p><p>Personally, I find the consumption metaphor to be a good way to deal with the burnout that comes with constantly using AI for various things. A lot of people approach making things with the mindset of craft, and naturally extend this framing to vibe coding. That framing feels noble and it&#8217;s deeply familiar, but it&#8217;s also a recipe for burnout, because craft assumes you are reaching inside yourself and pulling something out. The whole emotional architecture of craft is transformational: you struggle, and develop mastery, and the object you produce is evidence of inner change. When the tool is doing most of the producing, that framework starts to collapse. You&#8217;re left reaching inward for something that the process never required you to develop, and the gap between the effort you expected to invest and the effort that was actually needed starts to feel like a personal failure rather than a feature of the technology.</p><p>The consumption framing sidesteps this entirely. You&#8217;re not reaching inward. You&#8217;re starting from the position that there is extra energy available and it needs to go somewhere. The question shifts from &#8220;what does this say about me as a maker&#8221; to &#8220;what&#8217;s the most interesting thing I can spend this on.&#8221; That&#8217;s a fundamentally different emotional posture, and in practice it&#8217;s a much more sustainable one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.technically.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Technically is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>