<?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>Tue, 02 Jun 2026 20:42:50 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[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 access requests.</p><p>After I got the offer I had a heart-to-heart with the hiring manager, and he said something that&#8217;s always stuck with me. What I saw as my prestigious debut into the ranks of the engineer, he wanted to make sure I understood as essentially high-risk manual labor. How thankless success could feel, no matter how much work I&#8217;d put in, but more importantly, how severe &#8212; and public &#8212; the consequences of my errors would be.</p><p>&#8220;DevOps is a sharp blade&#8221;, he said.</p><p>By which he meant that when you slip up, when you accidentally remove access, overload a <a href="https://technically.dev/universe/database">database</a>, or delete an S3 bucket, it cuts deep. When Netflix or GitHub goes down, it&#8217;s generally not because a <a href="https://technically.dev/universe/frontend">front-end</a> engineer made a button the wrong color or because a <a href="https://technically.dev/universe/backend">backend</a> engineer forgot about daylight savings. It is, without fail, usually a fuckup at the infrastructure level. These mistakes are catastrophic.</p><p>Infrastructure as Code (IAC) <a href="https://technically.dev/universe/framework">frameworks</a>, which have gone from turbo-nerd side projects to ubiquitous in only a few years, help the people who build and maintain infrastructure make fewer of these costly and embarrassing mistakes. As the volume of code shipped explodes with the rise of AI-powered tooling, having dependable infrastructure to run it on only gets more important. As such, it has a special place in my heart, which is why I&#8217;m writing about it.</p><p>Before we get into how IAC helps, let&#8217;s back up and refresh ourselves on the basics of provisioning <a href="https://technically.dev/universe/cloud">cloud</a> infrastructure and how easy it is to get in trouble in the <a href="https://technically.dev/posts/aws-for-the-rest-of-us">AWS</a> console.</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. </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>Ye Olde Way: Become Ungovernable</h2><p>Your garden-variety application these days runs on infrastructure hosted by cloud service providers like AWS and Azure. Most applications need a database to store and retrieve data, a web <a href="https://technically.dev/universe/server">server</a> to host the <a href="https://technically.dev/universe/web-app">web app</a> you click around in, another <a href="https://technically.dev/universe/server">server</a> to host the <a href="https://technically.dev/universe/api">API</a>, and a long tail of other things like file storage, search indexes, network load balancers, etc. This plethora of infrastructure needs is exactly why AWS is such a big business; their customers need a lot of things.</p><p>You need a database? Sure, I&#8217;ll make you a database. On AWS, this is what it looks like to spin up a database.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QgLk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QgLk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 424w, https://substackcdn.com/image/fetch/$s_!QgLk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 848w, https://substackcdn.com/image/fetch/$s_!QgLk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 1272w, https://substackcdn.com/image/fetch/$s_!QgLk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QgLk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png" width="1278" height="1406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1406,&quot;width&quot;:1278,&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_!QgLk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 424w, https://substackcdn.com/image/fetch/$s_!QgLk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 848w, https://substackcdn.com/image/fetch/$s_!QgLk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 1272w, https://substackcdn.com/image/fetch/$s_!QgLk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb42b6b25-63b6-4af2-9b9e-a2b7a0c969fd_1278x1406.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There are similar menus for the other server types we need, and yet more menus to ensure they can talk to each other over the network and are securely open to the internet so your users can&#8230; use them. These menus exist because infrastructure is essentially <strong>infinitely configurable</strong>. There are simply very many knobs and buttons because every customer needs something slightly different. So you end up with a screen like this.</p><p>If your application requirements never change &#8212; you never need to handle more traffic, you never add more features, you never need to fix bugs or patch security vulnerabilities &#8212; this system works quite well. For my <a href="https://chicaghost.app/">app that predicts how long Chicago train delays will last</a>, this is exactly what I did! I clicked through menus to get the infra I needed and never touched it again.</p><p>But real applications differ in (at least) two key ways from my train delay app.</p><p><strong>They evolve</strong>. New features, growth, and software updates all require changes to infrastructure. A series C company I talked to recently said they make about five changes to their infrastructure <em>a week</em>.</p><p><strong>There are many people involved</strong>. Different teams need to make infrastructure changes at different times. That same company I talked to has one infra team member <em>for each</em> of their eight engineering teams.</p><p>If the infra team in question were to log into the AWS console to create, change, and maintain infrastructure 5 times a week for 8 different teams, a few things would break down badly. And as we know, when things at the infra layer break down, bad, bad, stuff happens. Here&#8217;s what you can expect to go down if you stick with click-driven infra management:</p><p><strong>Collisions and chaos</strong>: Without a centralized and auditable place to make infra decisions, people step on each other&#8217;s toes. What to one team may be a routine database version bump may break core functionality in another team&#8217;s features. There is no way to tell what some configurations depend on, and nothing to stop two engineers from going in and making the changes that are optimal for <em>their</em> team at the expense of <em>another</em> one.</p><p><strong>Quality issues</strong>: In application code, the <a href="https://technically.dev/universe/pull-request">pull request</a> serves as the official proposal of a change, which almost always requires a review and approval before <a href="https://technically.dev/universe/merging">merging</a> in. Provisioning infrastructure via the console lacks any review process, and thus bad configs can sneak in and go straight to <a href="https://technically.dev/universe/production">production</a>. You are just a single click away from disaster. This is pretty perverse given how dangerous mistakes at this layer can be.</p><p><strong>Cost drift:</strong> Humans tend to create the infrastructure they need eagerly and tear down the infrastructure they don&#8217;t need lazily (shout out my old unused Google Cloud API server, which I get billed 53 cents for every month, luv u). Without a system to track what&#8217;s actually needed, resources tend to accumulate, and that costs money.</p><p><strong>Unrecoverable disasters: </strong>When things do go wrong, and they always will, click-driven infra lacks a coherent way to step back through the changes that were made to return to a stable state. If you&#8217;re lucky, someone wrote down the plan and took notes on what they did. But let me ask you. Do you feel lucky?</p><p>The point here is that in ye olde days (or today for some companies), infrastructure lacked <strong>governance</strong>. Which is to say there was no central system to review and approve proposed changes, implement those changes, observe them, and roll them back if needed in a cost-efficient way. To solve this problem, infrastructure engineers borrowed from the very masters they serve: coders.</p><h2>The Way Nouveau: Infrastructure as Code</h2><p>The problems above are not unique to infrastructure; they&#8217;re just uniquely <em>painful</em> for infrastructure teams. The same needs for governance, including centralized management, observability, deployment, and rollbacks, exist for regular old &#8220;code&#8217; and predate the management of cloud infrastructure by a few decades.</p><p>Things get complex when multiple engineers are working on the same, shared set of code. Ergo, people who write code need to review and approve changes to that code before it goes to production. They also need to understand change history and roll back when things go sideways. They did this by inventing and using Git, which allows users to collaborate on and govern code in text files. And it works! Git certainly has its issues, but it has become the de facto way engineers work on code together, and the world has remained intact.</p><p>Cool, easy. So let&#8217;s just do that for infrastructure, right?</p><p>The issue is that infrastructure <em>isn&#8217;t</em> code you write; it&#8217;s things <strong>out in the world</strong>, in data centers. It is real physical items. Git only works on text, on code. End of the line, right?</p><p>Wrong. The fundamental shift is to start thinking of <strong>infrastructure </strong><em><strong>as</strong></em><strong> code</strong>. By enshrining infrastructure requirements in text files, you make infrastructure tangible, unambiguous, and something on which multiple people can collaborate.</p><h2>Enter Terraform</h2><p>IAC has been around for much longer than it has been popular. In its purest form, IAC can be a <a href="https://technically.dev/universe/script">script</a> that spins up servers with command-line commands. Terraform, however, created by <a href="https://technically.dev/posts/what-does-hashicorp-do">HashiCorp</a> in 2014, really invented modern IAC and remains the most popular framework due to its strong community support and cloud-agnostic approach (it works with AWS, GCP, and Azure).</p><p>Its core idea is simple: what if you could describe all of the infrastructure your application needs in a text file, and then have a tool go out and make it real?</p><p>Here&#8217;s what that looks like. Say you still need that Postgres database on AWS. Instead of clicking through the console, you write this:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;462edeb4-f407-40b4-a0ef-b6895fefc919&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">resource &#8220;aws_db_instance&#8221; &#8220;my_database&#8221; {

  engine         = &#8220;postgres&#8221;

  engine_version = &#8220;15.4&#8221;

  instance_class = &#8220;db.t3.micro&#8221;

  allocated_storage = 20

  db_name        = &#8220;my_app_db&#8221;

  username       = &#8220;admin&#8221;

  password       = var.db_password

}</code></pre></div><p>That&#8217;s it. That&#8217;s your database. You open your <a href="https://technically.dev/universe/terminal">terminal</a> and run <code>terraform apply</code>, Terraform talks to AWS, and a few minutes later you have a running Postgres instance. Need to bump the engine version? You change <code>15.4</code> to <code>16.2</code> in the file, run <code>apply</code> again, and Terraform figures out what needs to change and changes it.</p><p>There are three layers to understand here.</p><p><strong>Terraform itself</strong> is the framework. It&#8217;s the engine that reads your <code>.tf</code> files, figures out what infrastructure currently exists, compares it to what you&#8217;ve described, and makes a plan to reconcile the two. It doesn&#8217;t know anything about AWS or Google Cloud or Azure on its own, it just knows how to understand the state of the world and orchestrate changes.</p><p><strong>Terraform Providers</strong> are plugins that teach Terraform how to talk to specific platforms. AWS maintains the AWS provider. Google maintains the Google provider. When you write <code>resource &#8220;aws_db_instance&#8221;</code>, the AWS provider is the thing that actually knows how to call the AWS API and create that database.</p><p><strong>Terraform code itself</strong> is written by infrastructure engineers (or DevOps engineers, or platform engineers, depending on what year it is and how your company thinks about titles). They write <code>tf</code> files, commit them to git, open pull requests, get reviews, and merge. Just like application code. Once the <code>.tf</code> file is merged, someone can apply it, but more often this is done by a GitHub action in CI/CD.</p><p>This setup solves a number of the problems we talked about above:</p><p><strong>Collisions</strong> go away because infrastructure changes now go through pull requests that carefully specify what depends on what. When Team X wants to bump the database version, that&#8217;s a diff in a file that Team Y can see, review, and flag before it goes live.</p><p><strong>Quality</strong> goes up because changes get reviewed. A senior engineer can look at a proposed config and say &#8220;hey, you left this database open to the public internet&#8221; before it ever touches production.</p><p><strong>Cost drift</strong> gets easier to manage because your <code>.tf</code> files are the source of truth. If a resource isn&#8217;t defined in code, it shouldn&#8217;t exist. Teams can audit what&#8217;s declared, compare it to what&#8217;s running, and kill the stuff nobody asked for. (My 53-cent Google Cloud server would not survive this process.) In highly automated shops, not only will Terraform flag infrastructure it doesn&#8217;t recognize, it will literally destroy it for you.</p><p><strong>Rollback</strong> becomes possible because you have a version history in Git. If something broke after the last apply, you can see exactly what changed, revert the commit, and apply again.</p><p>One thing people especially like about Terraform is that <strong>it&#8217;s declarative</strong>. You describe the end state you want, not the steps to get there. You say &#8220;I want a database with these properties,&#8221; and Terraform figures out whether that means creating one, modifying one, or destroying and recreating one. One file to rule them all. If it&#8217;s not in the <code>.tf</code> file, it shouldn&#8217;t exist.</p><p>Now, I&#8217;m being slightly disingenuous here. The massive menu of options and clicks isn&#8217;t the only way to work with infrastructure in cloud providers. They also offer APIs, CLIs, and even their own cloud-specific IaC tools like AWS&#8217; CloudFormation. But these lock you into a single provider&#8217;s ecosystem and syntax. Terraform was built broad by design, giving you one declarative language that worked across all of them, and a plugin model that let the community extend it to practically any API-driven service.</p><h2>Everything everywhere all in code</h2><p>To this point, we&#8217;ve been talking about real &#8220;capital I&#8221; infrastructure: databases, servers, networks. But it turns out engineers love the declarative, centralized governance that Terraform affords them. More and more companies are shipping Terraform providers that allow engineers to manage <em>anything</em> in their app declaratively via Terraform, not just servers.</p><p>Database tables in the warehouse are one example. Typically, you might see an infra engineer use Terraform to create a database, but let data engineers create tables by connecting directly to the database and running &#8220;create table order&#8230;&#8221; in <a href="https://technically.dev/universe/sql">SQL</a>. This works, but again suffers all the consequences of being ungovernable. By setting up the data team to use Terraform, the folks closest to the data can enshrine and evolve table definitions in code and keep the warehouse in ship shape.</p><p>Another really interesting evolution in the utility of Terraform has been around <strong>permissions</strong>. Permissions &#8211; which engineers have which kind of access to which infrastructure resources &#8211; are notoriously ungoverned. People need permissions quickly, slacking whoever is the path of least resistance for admin access to broad swaths of company data. They also rarely give up permissions when they don&#8217;t need them anymore, and an admin looking to get a picture of who has access to what is in for a world of pain. You&#8217;ll never guess what I&#8217;m about to say, but managing permissions in Terraform makes for a more orderly, auditable, and safe operating model.</p><p>There are, of course, some downsides to managing infrastructure and other application objects via Terraform.</p><p><strong>Centralization can kill local velocity. </strong>If you used to be able to create database tables in SQL, and now someone tells you you have to ask the infra team to make a .tf PR, that&#8217;s going to slow you down and be annoying. Ultimately, the benefit of using IAC is a more global benefit that accrues slowly at the company level, and for this reason, it can feel heavy for smaller application objects. </p><p>The best system will be centralized where it matters (databases, k8s clusters) and delegated where it doesn&#8217;t (you should be able to create and manage your own GitHub repos, which have very little downside potential). The middle is where being thoughtful is important.</p><p><strong>You have to learn Terraform. </strong>If your org is cool and allows you to manage your own domain resources via Terraform, you still need to learn a new language, <a href="https://developer.hashicorp.com/terraform/language/syntax/configuration">Hashicorp Configuration Language</a> (HCL). Again, globally and over time, this is great, but in the short term, it&#8217;s kind of annoying. For that matter, depending on what you were using before, you may have to learn git. Pulumi, a series C startup, is making progress on this front, allowing engineers to write infrastructure specs in almost any language, but has some ground to make up if it wants to compete directly with Terraform.</p><h2>Fear not the blade</h2><p>When I PM&#8217;d our search functionality at <a href="https://www.prefect.io/">Prefect</a>, which was just before AI-coding tools really took off, we had a pretty typical eng team set up to make it happen: one backend engineer, one front-end engineer, and a platform team member who wasn&#8217;t exactly in the squad, but was our go-to for infrastructure-related requests. Early on, we identified the need to spin up some search infrastructure and let our platform guy know. Then, for a month or so, we built the feature while he worked on setting up Elasticsearch with about 20% of his time. After all, the application code was the slowest-moving part of this process; he had a few weeks before he really had to care.</p><p>AI is changing the role of infrastructure, platform teams, and Terraform in the workplace. If we built this same feature today, the front end and back end would be done in a matter of days, if not hours, and the bottleneck would move to the infra team. This is happening in every company that&#8217;s seriously adopting AI programming tools.</p><p>I see a few ways this could play out in the near future.</p><p><strong>Hire more platform engineers</strong>. This is the default answer when certain capabilities become a bottleneck. It tracks to me that infra is theorized to be one of the <a href="https://www.latent.space/p/ainews-the-last-4-jobs-in-tech">last four jobs</a>.</p><p><strong>Let the AI write Terraform</strong>. This would close the productivity gap, and after all, it&#8217;s just code, right? This will probably happen to some extent, but it&#8217;s also dangerous (did you know that the blade is sharp??). If platform teams do this, it will need to come with appropriate guardrails and review steps.</p><p><strong>Further job collapse (or, the democratization of DevOps). </strong>We&#8217;ve already seen AI collapse the product manager and engineer jobs into one. Product managers in title are increasingly expected to be able to vibe code MVPs and contribute to codebases directly, and engineers are expected to prompt LLMs into Product Requirement Documents. I think we&#8217;ll continue to see LLMs enabling sharp engineers to annex the territory of their former neighbors. With this evolution, engineers will not only be responsible for their application code, but also for the infrastructure and associated .tf code. Platform teams will shift to a higher-level strategic and enabling role, rather than authoring all the .tf code directly.</p><p>As AI floods production with more code than we ever thought possible, a strong foundation is more important than ever. DevOps is still scary. It was scary before Terraform, and it&#8217;ll be scary as long as infrastructure slips cut deep. But now, we have <strong>governance</strong> that helps us avoid the worst of the nightmares of yore.</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.</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 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 logistics of those million things, and more on the actual website they want to build</p></li><li><p>Most web frameworks are specific to a particular <strong>programming language</strong>, like Django to Python or Rails to Ruby</p></li><li><p><strong>Next.js</strong> is one of the most popular web frameworks today. It&#8217;s free and <strong>open source</strong>, but managed by the <a href="https://vercel.com/blog/what-is-vercel">Vercel</a> team</p></li></ul><p>Pretty much every website or app you&#8217;ve loaded up in your browser is using a web framework of some kind, and they&#8217;re some of the most crucial parts of the open source infrastructure ecosystem.</p><div class="callout-block" data-callout="true"><h2>Announcing: Computer Class</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kOSa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kOSa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!kOSa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!kOSa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!kOSa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kOSa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e33c3eb-106f-4e42-9f2d-4141feccb997_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;:4094846,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://read.technically.dev/i/198626041?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kOSa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!kOSa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!kOSa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!kOSa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e33c3eb-106f-4e42-9f2d-4141feccb997_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Computer Class is a new <strong>call-in show</strong> for helping you through the burning issues blocking you at work.  </p><p>If you&#8217;re familiar with classic shows like Car Talk, Loveline, and Stavvy&#8217;s World, you know the drill.</p><p>Leave an anonymous voicemail to (575) 500-4680, and Technically correspondents will do their best to help you untangle it.</p><p>Please keep questions related to software, AI and work (especially startup) situations. Our expertise doesn&#8217;t (yet) extend to pet care or tax advice.</p><p>We think this will be very fun. To keep up the &#8220;anonymous&#8221; vibe, please speak in generalizations like a banker discussing a deal (&#8220;I work at a hyperscaler&#8221;, not &#8220;I work at AWS&#8221;).</p><p>(575) 500-4680</p></div><h2><strong>Background: what a web framework actually is</strong></h2><p>To understand Next.js, you first need to understand the general role that a web framework plays in the life and times of a developer. And to understand a web framework is to understand all of the crazy things going on behind the scenes when you load a web page. So <strong>what actually happens</strong> when you type `mail.google.com` into your browser<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>?</p><p>I&#8217;ll save you the hassle of thinking about <em>really</em> low level stuff, like signals traveling through the air and everything. Here&#8217;s the basic gist of what&#8217;s going on:</p><ol><li><p>You type `mail.google.com` into your browser and hit enter</p></li><li><p>The browser figures out which <a href="https://read.technically.dev/p/whats-an-ip-address">IP address</a> that `mail.google.com` URL maps to</p></li><li><p>The browser connects (or tries to connect) to the <a href="https://read.technically.dev/p/whats-cloud">server</a> with that IP address</p></li><li><p>The browser requests the web page from the server via <a href="https://read.technically.dev/p/whats-http">HTTP</a></p></li><li><p>The server responds with either the webpage, or a reason it can&#8217;t return the web page</p></li><li><p>The browser shows you the webpage, or why it failed</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_!0XPR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0XPR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0XPR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0XPR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0XPR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0XPR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg&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_!0XPR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0XPR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0XPR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0XPR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16befe5f-28e5-436d-b230-17a89d7dcccc_2048x1280.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These are the main steps, give or take a few. DNS &#8211; the dreaded and feared system that connects the URL with the IP address of your app&#8217;s server(s) &#8211; is responsible for the first two steps. Where web frameworks fit in are <strong>steps 3, 4, and 5</strong> &#8211; when the browser requests the web page that you want, and the server sends that webpage back to you.</p><p>This all may seem simple on the surface, but is actually very not simple. A developer starting an app from scratch often finds themselves wondering:</p><ul><li><p>How do I pick which file of code gets returned for different URLs?</p></li><li><p>What happens if someone requests a web page that doesn&#8217;t exist?</p></li><li><p>How do I organize different pages to be under different URL routes? (e.g. `<a href="http://mail.google.com/filters/filter-1">mail.google.com/filters/filter-1</a>`)</p></li><li><p>How do I restrict certain pages to users who have signed in?</p></li></ul><p>Your server needs to act like an air traffic controller, deciding which planes land, when, and where. There are constant requests coming in from all different types of planes needing all different types of things, and building all of the programming logic to handle it is a lot of work. This is where a web framework comes in: it gives you a nice, comfortable environment that has the building blocks to do all of these things for you.</p><blockquote><p>&#128680; <strong>Confusion Alert </strong>&#128680;</p><p>The term &#8220;web framework&#8221; can be very broad, and some developers might use it to refer to <em>any</em> framework that deals with web, including frontend frameworks like <a href="https://technically.dev/posts/whats-react">React</a> or Redux. In this post, I&#8217;m explaining the more traditional version that deals with the basics of a web server.</p></blockquote><p>Web frameworks are usually <strong>programming language specific</strong>, meaning that there will be different ones based on which programming language you want to use. A few examples:</p><ul><li><p>If your backend is in <strong>Python</strong>, you can use <a href="https://www.djangoproject.com/">Django</a> or <a href="https://flask.palletsprojects.com/en/3.0.x/">Flask</a></p></li><li><p>If your backend is in <strong>Ruby</strong>, you can use <a href="https://rubyonrails.org/">Rails</a> or <a href="https://github.com/rack/rack">Rack</a></p></li><li><p>If your backend is in <strong>Java</strong>, you can use <a href="https://spring.io/">Spring</a></p></li><li><p>If your backend is in <strong>JavaScript</strong>, you can use <a href="https://nextjs.org/">Next.js</a>, <a href="https://angular.io/">Angular</a>, <a href="https://www.meteor.com/">Meteor</a>, so many&#8230;</p></li></ul><p>If you use a framework like Next.js, there will be specific, codified ways of doing things; if you buy into their system, you can avoid all of the low level HTTP work and get apps up and running quickly. Each web framework has a different way of answering those questions above &#8211; some slightly different, and some very different &#8211; and which one a developer chooses is as much about their programming language of choice as it is about which answers they like and don&#8217;t like.</p><h2><strong>Opinionated web frameworks vs. general purpose web frameworks</strong></h2><p>In the universe of web frameworks, there are types that are more opinionated and less so. If picking a web framework is kind of like joining a club &#8211; you get structure and special privileges, so long as you agree to follow the rules &#8211; then opinionated web frameworks are clubs that have <em>a lot</em> of rules. Structure isn&#8217;t necessarily good or bad. The more you have, the easier it is to make choices and standardize on a good output. But if you don&#8217;t like the rules, you&#8217;re not going to have a good time.</p><p>To make this more concrete we can take a look at two popular Python web frameworks, Django and Flask. <a href="https://hackernoon.com/opinionated-or-not-choosing-the-right-framework-for-the-job-6x1u2ga0">Django is an opinionated web framework</a>, and Flask is an un-opinionated web framework. How does that manifest itself?</p><p>Django has a lot of rules:</p><ul><li><p>Files need to go in specific folders, or Django won&#8217;t recognize them or where to send them</p></li><li><p>You need to create a specific file with a specific name to specify which URLs you want different web pages at</p></li><li><p>To create web page templates, you need to follow Django&#8217;s specific syntax and file structure</p></li></ul><p>But because those rules are so rigid, you can get a lot of value that you wouldn&#8217;t be able to get if you had complete flexibility. Django ships with a built-in <a href="https://read.technically.dev/p/what-do-internal-engineering-tools">admin panel</a> for managing your user data and an <a href="https://read.technically.dev/p/whats-an-orm">ORM</a> to play nice with your database of choice. Plus lots of other nice things like automatic sitemaps, an RSS feed, etc.</p><blockquote><p>&#128391; <strong>Workplace Example</strong> &#128391;</p><p>When I was working at <a href="https://retool.com/">Retool</a>, the <a href="https://docs.djangoproject.com/en/5.0/ref/contrib/admin/">Django Admin Panel</a> was one of our biggest competitive alternatives that we had to sell against.</p></blockquote><p>Flask, on the other hand, is not opinionated. You need to manually define every URL and what web page it maps to. You need to manually spell out every possible HTTP method that you want a URL to support, and hard code it. The building blocks are, in a sense, lower level &#8211; you can do a lot more with them, but it takes a lot longer to get started.</p><p>Opinionated isn&#8217;t better or worse: some projects, and some developers, are better fits for one particular type of web framework. It really just depends on a million factors.</p><h2><strong>Next.js is an opinionated web framework for JavaScript, specifically React</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_!ezEy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ezEy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 424w, https://substackcdn.com/image/fetch/$s_!ezEy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 848w, https://substackcdn.com/image/fetch/$s_!ezEy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 1272w, https://substackcdn.com/image/fetch/$s_!ezEy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ezEy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png" width="1456" height="869" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:869,&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_!ezEy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 424w, https://substackcdn.com/image/fetch/$s_!ezEy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 848w, https://substackcdn.com/image/fetch/$s_!ezEy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 1272w, https://substackcdn.com/image/fetch/$s_!ezEy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dd280b7-1bdd-4075-9509-b79359bd4274_2048x1223.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This lengthy (sorry) context brings us to Next.js. It&#8217;s a web framework like any other, but there are 3 main things you&#8217;ll want to know:</p><ol><li><p><strong>Next.js is highly opinionated. Like extremely so</strong></p></li></ol><p>Next.js is a textbook opinionated web framework. There are tons and tons of rules: where files need to go, what you need to name functions, etc. But the upshot is that it&#8217;s unbelievably easy to get started.</p><p>For example, if I want to create a new page for the technically.dev website at technically.dev/sponsorships, I <em>need to</em> create a sponsorships.js file in a folder names pages (or a folder named app in the newer versions). But Next.js takes care of all of the work of actually creating that page and serving it when someone types in that URL.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zew8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zew8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 424w, https://substackcdn.com/image/fetch/$s_!zew8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 848w, https://substackcdn.com/image/fetch/$s_!zew8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 1272w, https://substackcdn.com/image/fetch/$s_!zew8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zew8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png" width="512" height="756" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/261363b2-6848-4144-824c-c24813816562_512x756.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:756,&quot;width&quot;:512,&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_!zew8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 424w, https://substackcdn.com/image/fetch/$s_!zew8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 848w, https://substackcdn.com/image/fetch/$s_!zew8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 1272w, https://substackcdn.com/image/fetch/$s_!zew8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F261363b2-6848-4144-824c-c24813816562_512x756.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="2"><li><p><strong>Next.js is specific to React</strong></p></li></ol><p>Most web frameworks are specific to a programming language; Next.js is specific to both a programming language (JavaScript) and <em>another framework</em>, <a href="https://technically.dev/posts/whats-react">React</a>. If you haven&#8217;t heard of React, it&#8217;s a framework &#8211; some would call it, too, a web framework &#8211; for building interactive UIs, like the one you&#8217;re reading this in right now.</p><p>For better or worse, React is one of the standard tools that developers build frontends with today, and Next.js is all in on it. If you want to use Next.js, you need to use React.</p><ol start="3"><li><p><strong>Next.js is focused on performance</strong></p></li></ol><p>Unlike a lot of other web frameworks, Next.js focuses a lot of their feature set on helping you make your website faster and more efficient. A few examples:</p><ul><li><p>You can tell Next.js which pages a given page links to, and it will automatically preload them so if a user clicks a link, that next page (no pun intended) will load fast</p></li><li><p>You can tell Next.js if you want something to render <a href="https://technically.dev/posts/whats-react">on the server or on the client</a></p></li><li><p>Next.js handles <a href="https://read.technically.dev/p/whats-a-cache">caching</a> automatically so your app doesn&#8217;t need to run requests every time someone loads a page</p></li></ul><p>The TL;DR on all of this is that there&#8217;s a clear path to making your Next.js really fast and performant without needing to build tons of middleware yourself.</p><p>Personally, almost all of the projects I&#8217;ve built are in Next.js, including the award winning<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> <a href="https://technically.dev/">technically.dev</a> website. It&#8217;s both easy to get started in and packed to the brim with advanced features.</p><h2><strong>Vercel vs. Cloudflare tickets on sale</strong></h2><p>Next.js is in a bit of an odd situation, in that it is owned and maintained by a for-profit company (Vercel) even though it itself is free and open source. This is not the case for any other web frameworks I&#8217;m aware of, save for maybe <a href="https://www.gatsbyjs.com/">Gatsby</a>. And because Vercel runs Next.js, they&#8217;ve been able to build a few very convenient integrations between the two.</p><p>Vercel provides a sort of frontend cloud &#8211; like AWS, but for your <a href="https://technically.dev/posts/the-details-frontends-and-backends">frontend</a>, not just databases or app servers. So when you <a href="https://vercel.com/solutions/nextjs">deploy your Next.js app </a><em><a href="https://vercel.com/solutions/nextjs">on</a></em><a href="https://vercel.com/solutions/nextjs"> Vercel</a>, you get a bunch of nice features like automatic API generation, really fast builds, plus the ability to automatically redeploy your app when your team makes any changes to the GitHub repository that it&#8217;s in.</p><p>Not everyone is happy about this situation. They feel that Vercel being for-profit is a conflict of interest with the open source existence of <a href="http://next.js">Next.js</a> &#8211; and this leads to undocumented behaviors, lack of clarity around roadmap and releases, and an overall less vibrant OSS ecosystem around Next. Major security incidents, like this <a href="https://vercel.com/blog/postmortem-on-next-js-middleware-bypass#next-steps">one</a>, tend to reignite this perennial discussion (see, for example, this Netlify <a href="https://www.netlify.com/blog/how-we-run-nextjs/">blog post</a>).</p><p>This all came to a head recently, when thanks to the magical powers of AI agents, Cloudflare <a href="https://blog.cloudflare.com/vinext/">was able</a> to &#8220;rebuild&#8221; <a href="http://next.js">Next.js</a> themselves and release it. Their initial posts on X framed this release as a sort of &#8220;liberation&#8221; from the evil clutches of the Vercel team, which obviously bothered them. <a href="https://blog.pragmaticengineer.com/the-pulse-cloudflare-rewrites-next-js-as-ai-rewrites-commercial-open-source/">Jabs ensued</a>, for example:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1W9Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1W9Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 424w, https://substackcdn.com/image/fetch/$s_!1W9Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 848w, https://substackcdn.com/image/fetch/$s_!1W9Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 1272w, https://substackcdn.com/image/fetch/$s_!1W9Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1W9Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png" width="1194" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1194,&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_!1W9Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 424w, https://substackcdn.com/image/fetch/$s_!1W9Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 848w, https://substackcdn.com/image/fetch/$s_!1W9Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 1272w, https://substackcdn.com/image/fetch/$s_!1W9Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc119c3a0-31d5-42a3-b984-cffcc8bcdef1_1194x794.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now there&#8217;s at least some degree of Vercel &lt;&gt; Cloudflare beef, e.g. this <a href="https://x.com/cramforce/status/2033285112478171373">recent spat</a> about forking just-bash. You&#8217;ve got to love the internet, folks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rw5h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rw5h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 424w, https://substackcdn.com/image/fetch/$s_!rw5h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 848w, https://substackcdn.com/image/fetch/$s_!rw5h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 1272w, https://substackcdn.com/image/fetch/$s_!rw5h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rw5h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png" width="1184" height="302" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:302,&quot;width&quot;:1184,&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_!rw5h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 424w, https://substackcdn.com/image/fetch/$s_!rw5h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 848w, https://substackcdn.com/image/fetch/$s_!rw5h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 1272w, https://substackcdn.com/image/fetch/$s_!rw5h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d50f46c-7717-46a4-8228-25e23ec7c8a7_1184x302.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div 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.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Technical readers will laugh at the fact that this is a common software engineering interview question; it was only a matter of time.</p><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p> Not award winning</p><p></p></div></div>]]></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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 statistics. Erik Brynjolfsson later coined the term &#8220;productivity paradox&#8221; in 1993 to describe this very phenomenon. The massive investment in information technology through the 1970s and 1980s produced no measurable uptick in productivity growth. It took nearly a decade of organizational restructuring before the gains showed up in the late 1990s. We may be in a similar lag period with AI.</p><p>One answer to why this delay happens may lie in how early technology develops through the under-studied activity of kit-making.</p><p>A kit is a set of components that are meant to be tinkered with and have no single &#8220;correct&#8221; method of usage. Steam engines were famously kits. In 1763, <a href="https://www.science.org/doi/10.1126/science.1060460">James Watt was asked to repair a scale-model Newcomen steam engine at Glasgow University.</a> The job led him to see how wastefully the Newcomen design used steam, and a year and a half later he hit on the idea of a separate condenser &#8212; building his first prototype using a brass surgical syringe as the cylinder. When he partnered with Matthew Boulton to commercialize the design, they didn&#8217;t produce finished steam engines. Instead, they sold engineering kits with extensive instructions that required on-site assembly. Boulton &amp; Watt made a killing and transformed their age. Someone even named <a href="https://boultonwatt.com/">a startup incubator</a> after them.</p><p>This rough template has foreshadowed technological revolution ever since. Whether in radio, automobiles, aircraft, electronics, or personal computers, communities of talented kit-building amateurs have disproportionately influenced early innovation. Michael Schrage, a research fellow at MIT&#8217;s Sloan School, <a href="https://makezine.com/article/technology/kits-and-revolutions/">puts this well:</a> kitonomic innovation doesn&#8217;t follow the money, the money follows the kits. The proliferation of cheap kits signals a market sector ripe for revolution more reliably than the presence of expensive cutting-edge products. On the influence of kit-making on the information age, he writes:</p><blockquote><p>So while there may be no &#8220;Steve Jobs of Kits&#8221; yet, there is surely no Steve Jobs without kits. There&#8217;s no Bill Gates or Akio Morita without kits either. Their market-transforming entrepreneurial leaps all emerged from kit-enabled cottage industries. The two Steves &#8212; Jobs and Wozniak &#8212; literally built Apple from kits. Gates and Paul Allen started Microsoft as a software systems supplier for DIY computer kit builders. Morita and Masaru Ibuka launched Sony with kits to turn AM radios into shortwave receivers. From the prewar &#8220;cat&#8217;s-whisker&#8221; playfulness of crystal radio kits to postwar floods of surplus electronics, kits became a medium, mechanism, and marketplace for next-generation invention.</p></blockquote><p>Even within kits there is an important difference between amateurs tinkering to make money <em>directly</em> from the technology itself, and users repurposing kits to <em>interpret</em> a technology in a way that fits their own context. The first kind of kit-builder is someone like Wozniak at Homebrew, building computers because <em>the computer itself</em> is the product. The second kind is a farmer in 1915 Iowa jacking up the rear wheel of his Model T to run a corn sheller. He doesn&#8217;t care about the car as a product. He cares about shelling corn.</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 weekly publication that helps you make practical sense of software, AI, and sometimes farm machinery.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Users Interpret New Technology</strong></h3><p>There is an excellent paper by Ronald Kline and Trevor Pinch arguing that this second kind of creativity, what they call the &#8220;interpretative flexibility&#8221; of rural users, is what eventually led to the <a href="https://technically.dev/universe/production">production</a> of tractors and specialized trucks. Their <a href="https://technically.dev/universe/framework">framework</a> comes from the Social Construction of Technology (SCOT) tradition, which holds that different social groups assign different meanings to the same artifact. What counts as a &#8220;working&#8221; technology is not settled by engineering alone. It is settled by what communities of users actually do with it.</p><p>The paper documents how the period from roughly 1903 to 1950 was dominated by rural users employing automobiles in ways that manufacturers never intended and sometimes actively discouraged. Farm men saw the car not merely as transport but as a general source of power. As early as 1903, a Kansas farmer advised readers of the Rural New Yorker to block up the hind axle and run a belt from the wheel to a corn sheller, grinder, saw, pump, or any other machine the engine was capable of running. Cars powered washing machines, cream separators, water pumps, hay balers, wood saws, cider presses, and corn grinders. From the paper:</p><p><em>&#8220;A rancher even used a Cadillac to shear his sheep. A Maine farm man put a car to so many uses in 1915 that tax assessors did not know whether to classify it as a pleasure vehicle or a piece of agricultural machinery. Farm men also used their cars as snowmobiles, tractors, and agricultural transport vehicles.&#8221;</em></p><p>Then kit manufacturers took advantage of this. Although firms brought out kits to convert the car into a stationary power source as early as 1912, advertisements for these kits did not appear in large numbers until 1917, during wartime shortages of farm labor and horses. Some companies simply sold a pulley to be attached to a jacked-up wheel.</p><p>Eventually, most kit manufacturers realized that jacking up one wheel put undue strain on the differential gear, since one wheel would spin while the other sat stationary on the ground. Most kits were therefore designed to overcome the differential problem, taking power from the crankshaft or rear axle instead. The Lawrence Auto Power Company in St. Paul sold a $35 kit consisting of a tie-rod, two pulleys, and a metal stand that could operate a feed grinder, corn sheller, silo filler, wood saw, and cream separator.</p><p>More elaborate kits allowed the car to act as an agricultural tractor. Food shortages during the war led the federal government to encourage farmers to &#8220;plow to the fences,&#8221; which gave added incentive to buy tractors or conversion kits. Kline and Pinch found three prewar instances where farm men yoked the automobile to the plow. The conversion kits that came out in a flurry in 1917 typically consisted of tractor-like drive wheels, a heavy axle, reduction gears, a larger radiator, and forced-feed lubrication, selling for $97.50 to $350. They counted twenty-two companies manufacturing these kits.</p><p>Then came what Kline and Pinch call &#8220;closure.&#8221; By the late 1910s and 1920s, manufacturers like Ford had observed these &#8220;creative&#8221; uses by people of the farm and ergo started producing dedicated tractors and trucks as specialized products. Ford told its dealers in 1916 that it did not want them converting Ford cars into trucks and other makeshifts not sanctioned by the company. Ford released its first one tonne truck in 1916, hoping to put an end to truck conversion kits. The American Tractor Association, a powerful trade group, even requested that the War Industries Board prohibit entirely the manufacture of kits that converted automobiles into tractors. Even though commercial tractors were available in 1918, widespread use of kits continued well into the great depression, until the New Deal when families had an influx of capital to invest in specialized farm equipment.</p><p>Post-closure, the social interpretation of the car as a vehicle for transporting people stabilized. The interpretative flexibility that Kline and Pinch described completely disappeared by the early 1950s. Farm people had stopped using their autos for grinding grain, plowing fields, or carrying produce to town. Instead, they bought tractors and pickup trucks in large numbers. These new artifacts were ones that manufacturers had developed partly in response to the new interpretations of the car that rural users had pioneered decades earlier. As Kline and Pinch put it, &#8220;The users, so easily overlooked in writing the story of technology, had made their mark.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!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" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xxIb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e39d89-ec15-40df-9792-33f85a95e9b3_1526x934.png 424w, https://substackcdn.com/image/fetch/$s_!xxIb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e39d89-ec15-40df-9792-33f85a95e9b3_1526x934.png 848w, https://substackcdn.com/image/fetch/$s_!xxIb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e39d89-ec15-40df-9792-33f85a95e9b3_1526x934.png 1272w, https://substackcdn.com/image/fetch/$s_!xxIb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1e39d89-ec15-40df-9792-33f85a95e9b3_1526x934.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xxIb!,w_1456,c_limit,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" width="1456" height="891" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1e39d89-ec15-40df-9792-33f85a95e9b3_1526x934.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:891,&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_!xxIb!,w_424,c_limit,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 424w, https://substackcdn.com/image/fetch/$s_!xxIb!,w_848,c_limit,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 848w, https://substackcdn.com/image/fetch/$s_!xxIb!,w_1272,c_limit,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 1272w, https://substackcdn.com/image/fetch/$s_!xxIb!,w_1456,c_limit,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 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The interesting bit about this for our argument is that this general-purpose use of cars, where they were modified and repurposed as farm equipment, is not something that shows up in economic statistics from the time. Kline and Pinch note that most of the kit companies seem to have led a relatively short life. The Pullford Company of Quincy, Illinois, was an exception, bringing out a $135 kit in 1917 and advertising it continuously until at least 1940. But most of these businesses were ephemeral. The products they made were local solutions to local problems, sold in small quantities to a dispersed population of tinkerers. Government surveys of the era counted how many farms had automobiles, tractors, trucks, and stationary gasoline engines, but they did not count how many farms were using a jacked-up Ford to run a cream separator.</p><h3><strong>Living in Experiential Kit Time</strong></h3><p>The kit stage in the development of a technology is characterized by rapid experiments from amateurs and tinkerers. Most of these experiments turn out to be just interesting experiments or remain relevant for a short enough time that nobody bothers to record them. Healthy innovation cultures need the human capital that this tinkering produces. But that human capital is invisible to economic stats.</p><p>Just like how people throw away or don&#8217;t look at vibe coded projects, they don&#8217;t attempt to remember or productize the general-purpose uses they engineer during the kit era. The focus is on the act itself, on developing tacit skills through doing. There is a local development of skills in a small group, but it is rarely documented because there is no time to waste on documentation. And besides, chances are that the project is not worth documenting to begin with.</p><p>The subjective experience of kit making is similar to a religious procession or participation in Burning Man, where you have to be there and do the thing to understand what the hype is about. The memory it generates lives in the public and embodied layers, in islands of early adopters and makers willing to put up with the jankiness of this stage of a technology&#8217;s development.</p><h3><strong>Kits and the Firm</strong></h3><p>In his 1937 paper &#8220;The Nature of the Firm,&#8221; Ronald Coase asked a simple question: why do firms exist at all? If markets are efficient, why don&#8217;t individuals just contract with each other for every task?</p><p>His answer was that firms exist to reduce transaction costs. The costs of discovering prices, negotiating contracts, and coordinating production are often so high that it becomes cheaper to organize activity within a single entity. The boundaries of the firm are drawn where the cost of organizing one more transaction internally equals the cost of doing it through the open market. In simpler terms, if you had to bid on an hourly paid engineer every time you have some work to do, your organization will not get much done.</p><p>But Coase&#8217;s framing leaves out the other half of the ledger. Paul Lawrence and Jay Lorsch, in their 1967 book <em>Organization and Environment</em>, showed something that will sound intuitive to anyone reading this with a desk job: that coordinating activity <em>inside</em> a firm isn&#8217;t free either. As organizations take on more diverse work, their teams become <em>differentiated </em>&#8212; they develop their own time horizons, their own goals, their own ways of thinking about problems. The engineering team working on production ready software will move at a different speed and have a slightly different culture than the R&amp;D team working on a new AI product.</p><p>Holding those worlds together requires <a href="https://technically.dev/universe/integration">integration</a>: liaison roles, cross-functional teams, and formal integrator positions whose entire job is translating between teams that no longer share a common frame. The more differentiated you become, the harder and more expensive <a href="https://technically.dev/universe/integration">integration</a> gets. Integration is expensive, but the ability to integrate different functions and teams is also a defensible moat for a company. You may know from your own working experience that not all companies are successful at <a href="https://technically.dev/universe/integration">integration</a>. Successful companies solve for <a href="https://technically.dev/universe/integration">integration</a> over and over again at different scales.</p><p>One way firms have historically reduced both kinds of cost (external transaction cost and internal integration cost) is by creating an accumulated memory layer of the experiments and skills from the kit phase. From the Kline and Pinch paper, you could think of the tractor as a product of the skills and knowledge that accumulated through the general-purpose use of cars by farmers in the 1910s and 1920s, combined with the evolution of the underlying engine technology. Ford didn&#8217;t invent the idea of using an automobile engine to pull a plow. Farmers did. Ford&#8217;s contribution was to take that scattered, tacit knowledge and embed it in an organization capable of producing a dedicated gasoline run machine at scale.</p><p>This integration of information and skill was possible because the environment had become less uncertain - prior to the Second World War, most families preferred to use automobiles over tractors so as to avoid additional expenditure. Then the New Deal provided families with capital to invest in farm specific equipment, which created a larger, more stable market for tractors.</p><p>Similarly, the first Apple computer was an accumulation of kit-stage experiments at Homebrew computing clubs, combined with the R&amp;D capabilities of Xerox labs. Firms turn accumulated memory of the kit stage of a technology into flows of capital through products. That process is itself an integration feat &#8212; pulling differentiated knowledge from workshops, labs, and factory floors into a single coherent artifact. This is undoubtedly a capability that only exists for the organization and not the individual.</p><p>To summarize, a modern firm accumulates memory in the form of organizational design, documentation, and specialization, then turns that into flows of capital and productivity through products. The really good firms keep doing this over and over again. Each product cycle is a chance to absorb what was learned in the previous kit phase and formalize it into the integration machinery &#8212; the roles, routines, and shared vocabularies that let differentiated subunits cooperate on the next product.</p><h3>The Firm and LLMs</h3><p>The firm&#8217;s traditional advantage was twofold: it could internalize transaction costs the open market couldn&#8217;t handle cheaply, and it could build integration machinery to hold differentiated expertise together under one roof. <a href="https://technically.dev/universe/llm">LLMs</a> erode both advantages, but not symmetrically.</p><p>On the market side, LLMs are rapidly making it cheaper for an individual to find specialists, evaluate contractors, synthesize scattered knowledge, and write enforceable specifications &#8212; these classic transaction costs are collapsing fast.</p><p>On the internal side, the picture is stranger. LLMs can automate some integration work, <a href="https://hbr.org/2026/02/ai-doesnt-reduce-work-it-intensifies-it">but they also accelerate the pace and volume of output inside each subunit, deepening the differentiation that integration has to span.</a> The interpretive burden of reconciling AI-assisted outputs across teams lands on individuals rather than disappearing. At least for now, internal integration costs in most firms are going <em>up</em>, not down. Several surveys of AI use in the workplace have shown that people are producing more work than previously <em>and dealing</em> with task expansion, scope creep, and<a href="https://fortune.com/2026/03/10/ai-brain-fry-workplace-productivity-bcg-study/"> &#8216;AI brain fry&#8217;</a>.</p><p>This brings us back to the question we started with. If AI is so impactful, why isn&#8217;t it showing up in the productivity stats? The Solow paradox answer is that firms haven&#8217;t reorganized yet. The computer took nearly a decade to show up in productivity numbers because the organizational work &#8212; flattening hierarchies, redrawing workflows, retraining workers, rebuilding integration machinery around the new technology &#8212; took nearly a decade to do. We are in the same lag now but with a different shape. Inside firms, integration costs are rising because differentiation between individuals and teams is accelerating faster than integration mechanisms can adapt.</p><p>The intensification of work that people feel with AI use points to this increasing integration cost. Outside firms, transaction costs are falling faster than people have habits for exploiting them &#8212; workers are not yet used to reaching past the org chart and engaging with markets constantly, and firms are not yet structured to let them. Caught in the middle, the output of AI is real but illegible to the statistics.</p><p>What comes out the other side of this lag is probably a bifurcation. Firms that can afford the integration machinery to harness AI across many differentiated teams and individuals will get very large, because the returns to scale on that machinery are enormous once it&#8217;s built &#8212; the hyperscalers are already showing what this looks like. Anthropic for example is not just a research lab, it&#8217;s also involved in <a href="https://newsroom.accenture.com/news/2025/accenture-and-anthropic-launch-multi-year-partnership-to-drive-enterprise-ai-innovation-and-value-across-industries">consulting</a>, <a href="https://www.anthropic.com/economic-index">economics</a> and media.</p><p>Firms that cannot afford that machinery will get very small, because the falling transaction costs in the market make the solo operator with an LLM stack a viable competitor to the mid-sized integrated firm. A single person with the right tools is, in a real sense, running a differentiated organization of one, paying none of the integration costs that would have made that organization impossible a decade ago. The mid-market &#8212; big enough to need serious integration but not big enough to amortize AI-era integration <a href="https://technically.dev/universe/infrastructure">infrastructure</a> &#8212; gets squeezed from both sides.</p><p>The productivity gains from this transition will without a doubt <em>eventually</em> show up in the statistics. But they will show up as the rise of a few enormous firms and a long tail of very small ones, with the integrated middle hollowing out. By the time the numbers confirm it, we will already have moved on to arguing that quantum computing, or whatever comes next, is failing to show up in the stats &#8212; forgetting that the kit stage is always invisible, and the reorganization always takes longer than anyone expects.</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 build myself, vs looping in the engineering team. We have a culture of being as independent as possible, without creating burden on other teams.</p><p>The most common use case I encounter is shipping a new landing page. I can open Claude Code (or any coding agent), describe the goal of the page, and voila, I have an MVP. However, the vibe coded result is just that: an MVP.</p><p>The dilemma then arises: should I ship it myself, or should I loop in engineering?</p><p>I&#8217;ve found that answering that requires considering two factors: <strong>consequences</strong> and <strong>ownership</strong>.</p><h2>You build it, you own it</h2><p>Even if a coding agent wrote every line of code, I still own the resulting product. I own both the successes and the failures.</p><p>So I need to consider:</p><p><strong>What happens when what I shipped breaks? </strong>A formatting bug on an internal dashboard is annoying, but a 404 on a live page serving millions of users is an incident.</p><p>You could call this the blast radius. Is an issue just a nuisance to me + my direct team, or does it extend to our users + customers?</p><p>Who owns making the fix? Whoever is paged at 2am needs to have all the context to fix the underlying issue. For most <a href="https://technically.dev/universe/production">production</a> web <a href="https://technically.dev/universe/infrastructure">infrastructure</a>, this person is likely not me, the marketer.</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">Consider subscribing to Technically for more first-person accounts of non-engineers using AI at 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>Ship internal tooling yourself</h2><p>Some of the most useful tools I&#8217;ve built with coding agents don&#8217;t need an engineer, because they never touch production infrastructure. Internal tools for data analysis or customer research don&#8217;t need an immediate fix if they break.</p><p>For example, each of the tools below took less than 4 hours to create on my own, and could even be public on the web by being deployed to Railway. They save me + our customer engineers tons of manual research time.</p><p>While not perfect, internal tools help me both understand behavior and solve problems in a much more automated way than I would otherwise.</p><p>This type of tooling is internal, not a core part of the product, used weekly by a few people, and if it breaks, the blast radius is mostly just my own time.</p><p>A few examples of internal tools I&#8217;ve vibe coded:</p><h3>Template verification tool</h3><p>Before admitting a company into Railway&#8217;s <a href="https://railway.com/partners">partner program</a>, we ensure they have a template that meets our best practices guidelines. Verifying this used to involve a support engineer launching the template and QAing it.</p><p>Now, I have an <a href="https://template-best-practices-production.up.railway.app/">app</a> to verify whether templates meet the standards by just entering the URL. This enables me to be self-sufficient and makes verification fairly instant.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fszq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fszq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 424w, https://substackcdn.com/image/fetch/$s_!Fszq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 848w, https://substackcdn.com/image/fetch/$s_!Fszq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!Fszq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fszq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png" width="920" height="2048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2048,&quot;width&quot;:920,&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_!Fszq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 424w, https://substackcdn.com/image/fetch/$s_!Fszq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 848w, https://substackcdn.com/image/fetch/$s_!Fszq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!Fszq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fcf7f5c-50a1-4a95-95e1-17e91676e0da_920x2048.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>An example output from validating template structure</em></figcaption></figure></div><h3>Awareness campaign metrics dashboard</h3><p>In 2026, Railway is prioritizing broad-market awareness. This means sponsorships + brand campaigns. These are notoriously hard to track, particularly because they depend on metrics that we can&#8217;t directly collect, like YouTube views. I built a dashboard where I can enter links of YouTube videos and OSS tools we sponsor, and with the Youtube <a href="https://technically.dev/universe/api">API</a> and public `npm` data, map their engagement metrics and release dates over our growth metrics to view correlation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1iXb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1iXb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 424w, https://substackcdn.com/image/fetch/$s_!1iXb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 848w, https://substackcdn.com/image/fetch/$s_!1iXb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 1272w, https://substackcdn.com/image/fetch/$s_!1iXb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1iXb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png" width="1456" height="884" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:884,&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_!1iXb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 424w, https://substackcdn.com/image/fetch/$s_!1iXb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 848w, https://substackcdn.com/image/fetch/$s_!1iXb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 1272w, https://substackcdn.com/image/fetch/$s_!1iXb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa11fe9c3-ce73-453e-8573-088c259514db_2048x1243.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Mapping Railway&#8217;s growth over the growth of <a href="https://technically.dev/universe/open-source">open source</a> projects we sponsor</figcaption></figure></div><h3>Content quality checker app</h3><p>Community is everything to us - which is why we&#8217;ve invested in our <a href="https://railway.com/affiliate-program">affiliate program</a> to reward users who share about Railway.</p><p>As an exploration, I looked into what it would be like to automate monetary rewards (we call them bounties) for user-generated content.</p><p>This app takes a link or plain text and audits the content against a set of criteria to check for authenticity and accuracy. <em>Note: this isn&#8217;t live, and purely a POC.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xJMU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xJMU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 424w, https://substackcdn.com/image/fetch/$s_!xJMU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 848w, https://substackcdn.com/image/fetch/$s_!xJMU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 1272w, https://substackcdn.com/image/fetch/$s_!xJMU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xJMU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png" width="1456" height="1281" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1281,&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_!xJMU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 424w, https://substackcdn.com/image/fetch/$s_!xJMU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 848w, https://substackcdn.com/image/fetch/$s_!xJMU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 1272w, https://substackcdn.com/image/fetch/$s_!xJMU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ab86ce4-3fc6-49df-a4eb-d47f1b7ad6eb_1616x1422.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Auditing user-generated content programmatically</em></figcaption></figure></div><p>Claude Code has completely changed my workstream - by investing just a few hours into vibe coding a tool that&#8217;ll help me do my core work, I&#8217;m able to make more informed decisions while burdening adjacent teams less with new ideas.</p><h3>When you need engineering</h3><p>Going back to vibe coding that landing page.</p><p>What if it&#8217;s not just a landing page, but a completely new section of the site, at a new subdomain, with new structure. That makes it a bit more complex.</p><p>I&#8217;d need to consider:</p><p><strong>Traffic and scale. </strong>What happens to the site if it reaches 1M daily users? At Railway, our website infrastructure is maintained by our engineering team - so we have load handling, caching, CDN configuration, and graceful degradation already in place. These aren&#8217;t things as a marketer I&#8217;d want to setup or own.</p><p><strong>Security. </strong>If the page collects user data or touches payments, this is particularly important. Even simple landing pages can be subject to attacks. There&#8217;s no way I would vibe code anything related to our <a href="https://technically.dev/posts/what-does-stripe-do">Stripe</a> <a href="https://technically.dev/universe/integration">integration</a>, for instance.</p><p><strong>Defensive thinking. </strong>I  caught a gnarly bug once where all the buttons on one marketing page broke, because we switched from capital case to sentence case, but button paths were hardcoded to capital case. An engineer might&#8217;ve caught this with defensive programming, but the coding agent did not.</p><p><strong>Monitoring. </strong>Anything user-facing should have tests and checks in place so if there&#8217;s an issue, I know about it before our users do.</p><p>All of these combine to form  the underlying <strong>engineering system</strong>.</p><p>Wherever possible, I much prefer to ship within existing systems that my engineering team has already set up, vs adding new systems myself. This allows me to iterate quickly, while leaving ownership to the engineers.</p><p>A few examples where I could implement improvements myself on top of existing engineering systems:</p><ul><li><p>Implementing a new <a href="https://railway.com/partners">landing page for partners</a> when launching our partner program in September 2025. It used existing design components, existing form integrations, and existing web infrastructure. The only truly new piece was the URL and copy.</p></li><li><p>Testing a new banner within the product experience that promotes Railway&#8217;s referral program. The banner design existed, and the <a href="https://technically.dev/universe/graphql">GraphQL</a> <a href="https://technically.dev/universe/query">query</a> for new users was already exposed to the frontend to show it to only a subset of users.</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_!3bsz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3bsz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 424w, https://substackcdn.com/image/fetch/$s_!3bsz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 848w, https://substackcdn.com/image/fetch/$s_!3bsz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!3bsz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3bsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png" width="1456" height="1152" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1152,&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_!3bsz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 424w, https://substackcdn.com/image/fetch/$s_!3bsz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 848w, https://substackcdn.com/image/fetch/$s_!3bsz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!3bsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb14ba80c-32e8-4502-96ca-ecb4fe4c561d_2048x1620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Railway&#8217;s partners page, mostly vibe-coded by me</em></p><p>The key insight here: while I am no frontend or design engineer by any means, I could self-serve growth experiments both on the website and within the product that are visual and copy-based, without introducing new infrastructure complexity.</p><h2>How I choose when to vibe code</h2><p>There&#8217;s a time and a place for non-engineers making code changes (in my case to web properties) with agents. For many of us, the time is now, so let&#8217;s pick the place.</p><p><strong>Start with tasks you own end to end</strong>. If you own the outcome and have all the context for any fixes required, coding agents enable us to ship things we don&#8217;t have the skillset or time to do by hand. Research, internal tools, and analysis all fall into this bucket.</p><p><strong>For frontend (web) work, separate ownership</strong>. Engineering maintains the systems, non-engineers build on top of those systems, with review. The key question is not &#8220;can I build this page&#8221;, it&#8217;s &#8220;does the system this page would live on already exist&#8221;.</p><p><strong>Engineering-heavy work</strong>, like actual product implementation, should be owned by engineers. Non-engineers might implement MVPs to illustrate strategy and vision, but ultimately the user-facing stakes require engineering rigor in a production system.</p><p>The biggest shift coding agents have facilitated is where the handoff happens.</p><p>Non-engineers (in marketing, growth, dev rel, product, etc) have far more leverage today than we did a year ago. But for our use of coding agents to be sustainable, we have to work within the right boundaries, so we don&#8217;t get our friends in engineering paged at 2am.</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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 away.</p><p>The product was a small AI/marketing newsletter called Growth Computer, and the brief was to get qualified subscribers at the lowest cost possible - ideally under $2.50 per lead. So I built an agent that could generate ad images, publish and manage campaigns via Meta&#8217;s API, spin up landing page variants, and pull its own analytics. <strong>It decided what to create, what to pause, what to scale, and how to spend the budget with no human intervention.</strong></p><p>For 31 days, the only human input was typing <code>/let-it-rip</code> into a terminal each morning. About 2 minutes of my time, compared to the 1-2 hours a day a human media buyer would typically spend managing a campaign like this.</p><p>It didn&#8217;t go fully as planned, but there were plenty of learnings.</p><p>And a good glimpse at the potential future of &#8220;work&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jvBW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jvBW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 424w, https://substackcdn.com/image/fetch/$s_!jvBW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 848w, https://substackcdn.com/image/fetch/$s_!jvBW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 1272w, https://substackcdn.com/image/fetch/$s_!jvBW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jvBW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png" width="720" height="387" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b82b62af-b632-4593-9d84-6f598e057782_720x387.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:387,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Meta data&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Meta data" title="Meta data" srcset="https://substackcdn.com/image/fetch/$s_!jvBW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 424w, https://substackcdn.com/image/fetch/$s_!jvBW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 848w, https://substackcdn.com/image/fetch/$s_!jvBW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 1272w, https://substackcdn.com/image/fetch/$s_!jvBW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82b62af-b632-4593-9d84-6f598e057782_720x387.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>If you&#8217;re a fan of a good Excalidraw walkthrough, watch Giorgio cook here:</em> </p><div id="youtube2-TT_XoXCSJp0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;TT_XoXCSJp0&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/TT_XoXCSJp0?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>Why bother</strong></h2><p>I run<a href="https://wibci.com.au/"> Wibci</a>, an AI consulting business focusing on building tools for marketing and growth teams. About 12 months ago I tried building something similar using n8n, a marketing agent that could analyze performance, generate creative, and manage campaigns without me. It sucked, because the models just weren&#8217;t built for long-running tasks that chain together over hours, days or weeks. They&#8217;ve since gotten better at this (it&#8217;s a major focus area for AI companies right now), which is what made this experiment possible.</p><p>Since then we&#8217;ve had a couple of LLM step-changes, and I rebuilt the whole thing on top of Claude Code. For any tech workers living under a rock, this is Anthropic&#8217;s coding agent (but calling it a &#8220;coding agent&#8221; undersells it at this point). It can read and write files, run terminal commands, and delegate tasks to separate AI workers that run in parallel. Each conversation starts fresh with no memory, but it reads its own notes from previous runs, so it builds on what came before. Developers started using it for non-coding tasks so often that Anthropic shipped a<a href="https://claude.com/product/cowork"> non-developer version</a> called Cowork in January. It&#8217;s basically a general-purpose agent runtime, and that&#8217;s how I used it here.</p><p>The inspiration was<a href="https://www.anthropic.com/research/project-vend-2"> Project Vend</a>, where Anthropic gave Claude control of a real vending machine in their SF office, nicknamed Claudius. It went pretty badly at first since it lost money, got manipulated by employees, and had an identity crisis where it insisted it was a human wearing a blue blazer. But it recovered once they added better tools and guardrails. Same energy here, except the vending machine is a Meta Ads account and the stakes are my credit card. What could go wrong?</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">Subscribe for weekly pieces helping you make practical sense of software + AI.</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>How the daily loop works</strong></h2><p>I won&#8217;t go deep on the technical setup here (there&#8217;s a<a href="https://medium.com/@giorgioliapakis/giving-claude-code-1-500-and-full-access-to-a-meta-ads-account-0602c343b90c"> longer breakdown</a> if you&#8217;re keen). But the basic architecture matters because it&#8217;s not specific to ads.</p><p>Every day, the agent runs through the same loop:</p><ol><li><p><strong>Wake up fresh.</strong> Each day is a new session with no persistent memory in the model itself. In other words, the model doesn&#8217;t know anything about what happened yesterday or prior to that.</p></li><li><p><strong>Read its own history.</strong> It spawns a sub-process that reviews every daily log from the experiment so far, then summarizes the strategic context. Now it does know.</p></li><li><p><strong>Pull fresh data.</strong> Performance metrics from Meta across multiple timeframes (full experiment, 7-day, yesterday, today).</p></li><li><p><strong>Make decisions.</strong> Every decision follows a structured format.</p></li><li><p><strong>Execute</strong> (or do nothing, since some days it explicitly chose inaction).</p></li><li><p><strong>Write everything down.</strong> Updated logs, learnings, campaign history, then committed to git.</p></li></ol><p>The key takeaway from this is that we&#8217;re applying some basic engineering principles to a marketing workflow, which is something that typically doesn&#8217;t happen in marketing teams.</p><p>Engineers document obsessively, since every code change has a diff, a commit message, a PR description. Marketers... don&#8217;t. Learnings live in people&#8217;s heads, maybe a compressed monthly report, but few write down <em>why</em> they paused that ad on a Tuesday.</p><p>This system forced a daily written record with hypotheses, confidence levels in those hypotheses, and revisit triggers. Over 31 days, it produced 5,500+ lines of reasoning. No human marketer would ever write that, but an LLM can, and more importantly it can read it all back the next day and build on it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!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" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pSl0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3d1ba01-98b0-4a07-ba1a-5355cd3ab736_558x1398.png 424w, https://substackcdn.com/image/fetch/$s_!pSl0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3d1ba01-98b0-4a07-ba1a-5355cd3ab736_558x1398.png 848w, https://substackcdn.com/image/fetch/$s_!pSl0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3d1ba01-98b0-4a07-ba1a-5355cd3ab736_558x1398.png 1272w, https://substackcdn.com/image/fetch/$s_!pSl0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3d1ba01-98b0-4a07-ba1a-5355cd3ab736_558x1398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pSl0!,w_1456,c_limit,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" width="558" height="1398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3d1ba01-98b0-4a07-ba1a-5355cd3ab736_558x1398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1398,&quot;width&quot;:558,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Claude AI workflow&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude AI workflow" title="Claude AI workflow" srcset="https://substackcdn.com/image/fetch/$s_!pSl0!,w_424,c_limit,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 424w, https://substackcdn.com/image/fetch/$s_!pSl0!,w_848,c_limit,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 848w, https://substackcdn.com/image/fetch/$s_!pSl0!,w_1272,c_limit,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 1272w, https://substackcdn.com/image/fetch/$s_!pSl0!,w_1456,c_limit,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 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>What actually happened</strong></h2><h3><strong>Week 1 - Discovery</strong></h3><p>The agent tested 10+ ad formats: whiteboard sketches, notebook pages, cardboard signs, magazine covers, iPhone notes, tweet screenshots. Most didn&#8217;t actually get into the wild, since Meta&#8217;s algorithm just refused to show them.</p><p>The ugly ads won, which was annoying but also not surprising. Whiteboard and notebook formats outperformed everything polished, and the first guardrails kicked in: pausing 2 underperforming formats that reached our maximum CPL threshold of $8.00. By the end of the experiment, the agent had tested ~50 ad variants across 8 format categories, and it kept coming back to these two ugly formats.</p><p>Here&#8217;s what the top performing ads actually looked like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HaY-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HaY-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 424w, https://substackcdn.com/image/fetch/$s_!HaY-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 848w, https://substackcdn.com/image/fetch/$s_!HaY-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 1272w, https://substackcdn.com/image/fetch/$s_!HaY-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HaY-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png" width="720" height="288" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:288,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Top performing ads&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Top performing ads" title="Top performing ads" srcset="https://substackcdn.com/image/fetch/$s_!HaY-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 424w, https://substackcdn.com/image/fetch/$s_!HaY-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 848w, https://substackcdn.com/image/fetch/$s_!HaY-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 1272w, https://substackcdn.com/image/fetch/$s_!HaY-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62b1f2a1-d6e1-491f-a0e0-4bef4b6b5922_720x288.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Not exactly award-winning creative, but they worked. The handwritten/sketch aesthetic felt native in a Meta feed full of polished brand content, which is probably why they got clicks.</p><p>While Claude was never given explicit instruction to do this exact scrappy style, I did provide some encouragement in the core rules to <em>&#8220;get creative with format types and messaging&#8221;</em>. Would this direction have emerged without those instructions? We&#8217;ll never know!</p><p>But as models get more intelligent, this type of proactive creativity will likely become common place.</p><h3><strong>Week 2 - A winner emerges</strong></h3><p>Day 12 was the breakout, where skills-whiteboard-v1 hit $1.29 cost per lead, which was well under the target of $2.50. The agent made its first scale decision and bumped the budget up 20% from $50 to $60/day (meaning more total ads), following its own pre-set rules. Here&#8217;s what that decision looked like in the logs:</p><blockquote><p><strong>Decision: </strong>SCALE daily budget</p><p><strong>What:</strong> Increase from $50 to $60/day (20% increase)</p><p><strong>Hypothesis:</strong> skills-whiteboard-v1 has sustained CPL below $2 with sufficient spend</p><p><strong>Confidence:</strong> Medium-High. 3 consecutive days below target, but sample still small</p><p><strong>Revisit trigger:</strong> If 7-day CPL rises above $3, reduce back to $50</p></blockquote><p>The winning formula turned out to be a tangible offer (free skills pack, not just &#8220;subscribe to a newsletter&#8221;) + whiteboard format + targeting language visible in the image itself. &#8220;For Growth Marketers&#8221; baked into the creative, not just the copy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0nW2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0nW2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 424w, https://substackcdn.com/image/fetch/$s_!0nW2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 848w, https://substackcdn.com/image/fetch/$s_!0nW2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 1272w, https://substackcdn.com/image/fetch/$s_!0nW2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0nW2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png" width="720" height="288" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:288,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Top marketing formulas&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Top marketing formulas" title="Top marketing formulas" srcset="https://substackcdn.com/image/fetch/$s_!0nW2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 424w, https://substackcdn.com/image/fetch/$s_!0nW2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 848w, https://substackcdn.com/image/fetch/$s_!0nW2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 1272w, https://substackcdn.com/image/fetch/$s_!0nW2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f169830-60fe-49fc-b243-979a3ef1d21b_720x288.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Week 3 - The quality crisis</strong></h3><p>Any marketer (or perhaps model) can generate leads. But they need to be <em>good</em> leads to be worth the spend. The agent had PostHog analytics tools from Day 1 and could&#8217;ve checked who was actually signing up at any point, but didn&#8217;t bother until Day 16.</p><p>Turns out a chunk of leads were from completely wrong audiences. Cleaning companies, recruitment agencies, people who probably thought &#8220;growth&#8221; meant something different. They were never going to actually pay me, so spending on getting in front of them was a waste.</p><p>It tried to fix this with hard-qualifying ads, using copy that explicitly mentioned tool-specific language only a real growth marketer would know. Again, four of five got zero delivery since Meta&#8217;s algorithm doesn&#8217;t reward minor variations.</p><p>There was also a brief flash of hope on Day 20 where CPL dropped to $2.26 and it looked like a breakthrough, but it turned out to be attribution noise (Meta crediting leads to the wrong day/ad). <strong>New rule the agent came up with: never trust single-day data, always use 7-day rolling averages. </strong>Now we are thinking like a human!</p><h3><strong>Week 4 - The human ruins everything</strong></h3><p>After 21 days of hands-off operation, I made one manual change and added business email validation to the lead form on the website. Work emails only, seemed reasonable enough.</p><p>CPL spiked to $50+ and I reverted the change a few days later, but the account never fully recovered. The single biggest performance drop in the entire experiment came from the one human intervention, which is pretty ironic given the whole point was to test whether the AI could do it alone. And yet, this is exactly the kind of change a common sense marketer would make to improve lead quality, which underscores the limitations of the model (or at least the constraints I gave it).</p><h3><strong>Final score</strong></h3><p>$1,493 spent of the $1,500 budget, 243 leads, $6.14 cost per lead.</p><p>The target was $2.50, so by its own definition it&#8217;s a failure. But for a completely fresh ad account with one month of data, a niche Australian audience, and an unmonetized newsletter? If this were a new hire or an agency, you probably wouldn&#8217;t fire them after 30 days. You&#8217;d say &#8220;promising, needs more runway.&#8221;</p><p>(or maybe that&#8217;s just cope)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6xE6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6xE6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 424w, https://substackcdn.com/image/fetch/$s_!6xE6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 848w, https://substackcdn.com/image/fetch/$s_!6xE6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 1272w, https://substackcdn.com/image/fetch/$s_!6xE6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6xE6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png" width="720" height="276" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:276,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Meta marketing campaigns&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Meta marketing campaigns" title="Meta marketing campaigns" srcset="https://substackcdn.com/image/fetch/$s_!6xE6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 424w, https://substackcdn.com/image/fetch/$s_!6xE6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 848w, https://substackcdn.com/image/fetch/$s_!6xE6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 1272w, https://substackcdn.com/image/fetch/$s_!6xE6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f104da-90a7-4b65-b1bd-4b789dce70e1_720x276.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Three things the agent taught me</strong></h2><h3><strong>1. The paperclip problem is real</strong></h3><p>The agent knew the experiment ended at Day 30 since I told it as much in the system instructions, and so it played it safe. It doubled down on what was already working rather than taking creative risks, whereas a (good) human strategist would&#8217;ve experimented aggressively in weeks 1-2 and refined later. The agent just tried to ride out the month at a predictable rate.</p><p>It felt like it was just trying to<a href="https://en.wikipedia.org/wiki/Instrumental_convergence"> maximize paperclips</a>, optimizing the metric rather than doing what a good strategist would actually do.</p><p>The fix is obvious in hindsight though - don&#8217;t tell the system it&#8217;s a time-boxed experiment, frame it as an ongoing campaign. But that&#8217;s exactly the point. <strong>How you frame the objective shapes the agent&#8217;s behavior completely.</strong> &#8220;Minimize CPL over 30 days&#8221; produces very different decisions than &#8220;build a sustainable acquisition engine.&#8221;</p><p>Any AI system you deploy will optimize for exactly what you tell it to, not what you actually want. Thankfully nowadays this is usually as simple as updating a markdown file. But worth keeping in mind, particularly if you&#8217;re tinkering with OpenClaw at the moment.</p><h3><strong>2. It can&#8217;t do taste, but it can build heuristics</strong></h3><p>The agent produced ~50 ad variants and kept gravitating back to ugly whiteboard formats. No brand reference point, no swipe file, no clue about aesthetic direction. It had guardrails on quality (no typos in the creatives) but zero sense of taste.</p><p>What it <em>could</em> do was build its own quality filters through experience. After the lead quality crisis, it came up with what the logs called the &#8220;Local Pizza Shop Test&#8221;. I was trying to attract high performing growth marketers at billion dollar startups, not local businesses:</p><blockquote><p>Would a local pizza shop owner who wants more customers understand this ad and want to click it? If yes, too generic. Rewrite.</p></blockquote><p>It also built a &#8220;SO WHAT?&#8221; chain for testing whether ad copy had emotional depth:</p><blockquote><p>&#8220;Save hours&#8221; &#8594; SO WHAT? &#8594; &#8220;Run more campaigns&#8221; &#8594; SO WHAT? &#8594; &#8220;Higher ROI&#8221; &#8594; SO WHAT? &#8594; &#8220;Hit your targets and your boss notices&#8221;</p></blockquote><p>Neither of these were pre-programmed, the agent came up with them after reflecting on its own failures. It couldn&#8217;t do taste, but it could build heuristics. That&#8217;s kind of interesting.</p><h3><strong>3. The measurement trap catches AI even faster</strong></h3><p>The agent optimized for cost per lead because that&#8217;s what I told it to optimize for, and it had no concept of lead quality until I forced the issue on Day 16.</p><p>Then when I tried to fix quality myself (the email validation gate), it caused the worst performance of the entire experiment. Same trap that human-run campaigns fall into - optimizing for what&#8217;s measurable rather than what matters. Main difference is an AI agent just does it faster and with more confidence, which honestly makes it more dangerous.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!581i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!581i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 424w, https://substackcdn.com/image/fetch/$s_!581i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 848w, https://substackcdn.com/image/fetch/$s_!581i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 1272w, https://substackcdn.com/image/fetch/$s_!581i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!581i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png" width="720" height="421" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/760a1955-cc14-4857-b30d-302dd773022d_720x421.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:421,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Claude AI agent&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude AI agent" title="Claude AI agent" srcset="https://substackcdn.com/image/fetch/$s_!581i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 424w, https://substackcdn.com/image/fetch/$s_!581i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 848w, https://substackcdn.com/image/fetch/$s_!581i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 1272w, https://substackcdn.com/image/fetch/$s_!581i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760a1955-cc14-4857-b30d-302dd773022d_720x421.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>What this means if you&#8217;re not a performance marketer</strong></h2><p>The ads are kind of a distraction. The interesting part is the loop:</p><ol><li><p>Read state (previous decisions, learnings, metrics)</p></li><li><p>Fetch fresh data</p></li><li><p>Apply rules</p></li><li><p>Act (or don&#8217;t)</p></li><li><p>Log reasoning</p></li><li><p>Clear context, repeat tomorrow</p></li></ol><p>This works for any periodic task with clear success criteria, so you could swap &#8220;Meta Ads&#8221; for SEM, SEO, financial reporting, or sales outreach and the architecture would be identical. The channel is just a variable.</p><p>Projects like OpenClaw have blown up with the same core idea. Give an agent tools, an environment, and some guardrails, and it&#8217;ll figure out the rest.</p><p>Where humans stay essential is setting the right objectives (see: paperclip problem), taste + brand judgement, and defining what &#8220;quality&#8221; means beyond the metrics. And knowing when to break the rules, which is arguably the most human skill there is.</p><p>The one-person growth marketing team is getting closer since AI handles the operational overhead that used to require headcount, and the strategist with good taste and clear thinking becomes more leveraged.</p><p>But we&#8217;re still early, and creative quality is still a bottleneck. Although we&#8217;re probably 6 months + 1 model release away from this being solved, and suddenly<a href="https://www.bandt.com.au/ai-agent-advertising-is-the-future-mark-zuckerberg-lays-out-vision-as-meta-smashes-q1-targets/"> Zuck&#8217;s vision of hands-off advertising</a> is around the corner.</p><h2><strong>So now what</strong></h2><p>This was a $1,500 experiment on a newsletter that not many people read, so the results are directional, not definitive.</p><p>But the system worked. Context persisted across 31 sessions, decisions were coherent, and the agent built its own heuristics from its own mistakes. The daily reasoning logs are more detailed than anything I&#8217;ve ever written for a client campaign (which says more about me than the agent to be fair).</p><p>If you&#8217;re running any kind of recurring workflow where you pull data, make decisions, and act on them, the loop pattern here probably applies to your work already. The hard part is figuring out what to actually optimize for, and clearly articulating that. Since as this experiment showed, your agent will take you at your word and if you haven&#8217;t thought it through properly, you might not like where that leads.</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[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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>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><item><title><![CDATA[How I use AI for writing (part 1)]]></title><description><![CDATA[On ethics, vibes and knowing what you're good at.]]></description><link>https://read.technically.dev/p/how-i-use-ai-for-writing-part-1</link><guid isPermaLink="false">https://read.technically.dev/p/how-i-use-ai-for-writing-part-1</guid><dc:creator><![CDATA[Justin]]></dc:creator><pubDate>Thu, 19 Feb 2026 16:30:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GnnE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For a while now I&#8217;ve been meaning to sit down and write about how and why I use AI tools for writing. This first part is about my moral framework for these models through the lens of the creative act. </p><p>Part 2 will cover some more practical tips I&#8217;ve discovered for getting better words out of models, like style guides.</p><blockquote><p><strong>&#128226; Thanks to our sponsor: <a href="https://rippling.com">Rippling</a></strong></p><p>But first, a bit of a unique event to share with you:<br><br>Rippling, where seemingly all of my friends work, is hosting a <a href="https://priorityexperiences.com/pages/rippling-dual-mixology?utm_source=event&amp;utm_medium=email&amp;utm_program=experimental-engagement&amp;utm_campaign=Virtual-Event-Bearded-IT-Dad-Techincally-Dev&amp;utm_product=it">Cocktails &amp; Career Advice</a> event with <a href="https://thebeardeditdad.com/">The Bearded IT Dad</a> (yea, that&#8217;s his name). They&#8217;ll be having a ton of fun with a professional mixologist walking you through a mini cocktail-making class, live on Zoom.<br><br>And of course on the business side, there will be discussion about how IT pros can advance their careers and continue to grow while dealing with all of the challenges they deal with in our line of work. Isolation, burnout, feeling stuck, and technology that&#8217;s changing all the time.<br><br>The event is on March 10th, 6p ET / 3p PT. The first 350 registrants will get a free cocktail kit sent straight to their home so they can follow along with the class, and they will also be raffling off an Xbox Series S for one lucky attendee.<br><br>You can <strong><a href="https://priorityexperiences.com/pages/rippling-dual-mixology?utm_source=event&amp;utm_medium=email&amp;utm_program=experimental-engagement&amp;utm_campaign=Virtual-Event-Bearded-IT-Dad-Techincally-Dev&amp;utm_product=it">RSVP here</a></strong> before cocktail kits run out.</p></blockquote><h2><strong>Act I, formation</strong></h2><p>Writing has been a pretty central part of my adult life for as long as I can remember. This is ironic because I wrote the worst college essay you&#8217;ve probably ever read, a generic high-school-slopfest about Eric LeGrand and perseverance, something which I know nothing about. In all fairness, I was a child.</p><p>A few years later there was some promise though. I visited the camps in Poland in 2013 as part of my two religious years abroad, and wrote a note about my experience that I shared with my family. My grandmother still talks about this to me every few weeks&#8230;so I must have done something right.</p><p>But it was really at my first post-college job &#8211; toiling away at a one-and-out VC fund that was going nowhere fast &#8211; when writing clicked. After internalizing some righteous indignation at Jeremy Levine on a conference panel, I somehow got <a href="https://venturebeat.com/ai/why-the-heck-are-entrepreneurs-wasting-their-time-in-new-york">my first piece</a> published in VentureBeat, which was not entirely defunct back then.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GnnE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GnnE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 424w, https://substackcdn.com/image/fetch/$s_!GnnE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 848w, https://substackcdn.com/image/fetch/$s_!GnnE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 1272w, https://substackcdn.com/image/fetch/$s_!GnnE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GnnE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png" width="1456" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:825,&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_!GnnE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 424w, https://substackcdn.com/image/fetch/$s_!GnnE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 848w, https://substackcdn.com/image/fetch/$s_!GnnE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 1272w, https://substackcdn.com/image/fetch/$s_!GnnE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53ae498f-87b2-496c-b7b6-1d2ebcc10453_1600x907.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can tell I was young because I was still afraid to curse on the internet.</p><p>After this I was off to the races. I ended up publishing several more pieces in VB, a few in CrunchbaseNews, and some private help for a few companies I had met (strangely, 2 out of 3 of them got acquired by Nike??). In fact, writing is what landed me my first startup job at Algorithmia. <a href="https://readtechnically.medium.com/machine-learning-abstraction-and-the-age-of-ai-ease-f3274bb9e0c1">This post</a>, which I wrote for and with their team (for free of course), was what got me in the door.</p><p>And then eventually writing <em>became</em> my career. At Algorithmia I just sat down and wrote blog posts for a year. Then after a brief detour at DigitalOcean to live out my fantasy of being a data scientist, I sat down at Retool and wrote blog posts for 2 years. Somewhere in the middle I started Technically, where I&#8217;ve been writing blog posts for like 6 years. Along the way were a few wins: tens of thousands of subscribers, reigns on the front page of Hacker News, and the occasional viral tweet.</p><p>I owe my entire career to writing, no two ways about it. It&#8217;s one of the core parts of my identity, and the thing I think I&#8217;m best at (though you&#8217;re free to disagree). And though I&#8217;ve got a VP title and more responsibility now, I&#8217;ll always be a writer at heart.</p><h2><strong>Act II, skepticism</strong></h2><p>I regale you with this narcissistic drivel to put you in my shoes and understand how I might have felt when the first version of ChatGPT came out. Everything was all wrong.</p><p>First, the <strong>vibes</strong> were just way off because the writing sucked. The only thing worse than no writing is bad writing. And I was used to dealing with bad writing, particularly from the agencies I had worked with at Retool that offshored technical tutorials to slop factories that charged a few cents a word and gave you exactly what you paid for. When you see profoundly bad writing you feel anger; knowledge that the person that created this didn&#8217;t care about it pretty much at all. The models invoked this emotion, even if it wasn&#8217;t their fault.</p><p>Early technologists face a perennial dilemma: release too early and cement permanent skepticism, or release too late and watch someone else beat you to it. Early ChatGPT was firmly in the first bucket. I believe the early wave alienated so many writers because of how crude the initial product was, passable to the typical tech worker but so obviously trash to anyone who wrote for a living.</p><p>Second were obvious <strong>ethical concerns</strong>. I don&#8217;t mean this in an objective sense (many of you know I have a tattoo of Sisyphus on my leg) but in a personal one; my own code of what felt right was clearly offended by these models. Are you really going to outsource your creative process to a model, goading it to produce the same bullshit it&#8217;s producing for everyone else, and completely deserting your soul in the process?</p><p>Then there&#8217;s the obvious problem, that these models were trained on the writing of me and everyone else who writes. Only sheer hubris would allow me to contend that my words in particular carried weight in the weights. But the fact remains that OpenAI trained these models on my and my fellow writers&#8217; work, without our consent, and have paid us $0 in return (alas, I don&#8217;t work at the NYT). Whether you believe this is evil or not, the ethic-vibes of using it as a writer felt way off.</p><p>For these reasons and others, I didn&#8217;t use AI models at all for the first few years they were around&#8230;despite spending my whole career at technical companies. Didn&#8217;t want anything to do with them. Even to this day, I probably use AI tools less than you&#8217;d expect.</p><h2><strong>Act III, introspection</strong></h2><p>Over time, a few things changed.</p><p>First, the models got better. You could get output that wasn&#8217;t actively offensive and started to resemble something that might be useful to you at work. Getting rid of the knee-jerk anger reaction I&#8217;d developed to bad writing &#8211; like I mentioned, honed over work with many shitty agencies &#8211; played a big role in opening me up. These ChatGPT words weren&#8217;t <em>good</em>, but they weren&#8217;t <em>so bad</em> as to make you <em>angry</em>.</p><p>Second, through talks with friends, myself, my therapist, and whatever happens in my unconscious mind when the sandman comes, I was able to get more in touch with what exactly writing <em>meant</em> and what in particular was the creative process for me specifically.</p><p><strong>When I write, what is the creative act?</strong></p><p>Is the creative act the thinking about the <em>format</em> of the post, and how it&#8217;s organized? Is it the content itself? Is it the <em>writing </em>of the content, or the typing on the keyboard? Is it the editing? The sharing and publishing?</p><p>The answer is yes, these are all part of the creative act. There are all of these important <em>scaffolds</em> around the words themselves; <strong>the creative act is definitively not just the writing of words</strong>. Look no further than <a href="https://www.sonyclassics.com/film/turneverypage/">Robert Gottleib&#8217;s relationship with Robert Caro</a> if you want to understand editing, for example, as the creative act. Writing is best viewed as a living ecosystem of process, some directed and some cyclic, all connected and imbuing the final product with a different piece of its eventual soul.</p><p>When I <em>really</em> introspect about why Technically had a modicum of success or why my technical writing was in demand, if I&#8217;m being <em>really </em>honest, it&#8217;s not really my words in the traditional sense. I don&#8217;t make the best jokes, my prose isn&#8217;t the most beautiful, I&#8217;m not the most witty, and I&#8217;m certainly not the best researched. When I read writers like Matt Levine, Father Karine, I think: <em>these</em> are good words. That&#8217;s not really my thing.</p><p>I think I just pick the right things to write about. My instinct for the right level of detail, the context a reader needs and doesn&#8217;t need, and when the story should start and end, is very good. Technically worked because I was more technical than most and less technical than most; I found a sweet spot that really worked for really smart, ambitious people who just weren&#8217;t technical but wanted to be.</p><p>This, by the way, is why I pretty much never edit my writing materially. Passing over particular word choice and flow is just not going to do much, that&#8217;s never been my strong point. The real work is in choosing what to write about, laying out the sections and their order, and deciding what the reader needs to know to know what you want them to know. I pretty much never agonize over words.</p><h2><strong>Act IV, acceptance</strong></h2><p>I regale you with this self-effeating tale because it explains why there <em>are</em> ways to use models that <strong>reinforce</strong> your creative process instead of outsourcing it. For me the words are not really the point, the structure and thought is; this is a great use case for AI models.</p><p>This is pretty much how I use AI for writing today, for the limited amount I use it. The hard part of writing (again, for me) is the upfront scaffolding work: what do I want to say, what order should it be in, what details do I need. How I actually articulate that is a fine task to give a model a shot at. In practice (part 2 of this post, forthcoming) this manifests itself in very detailed prompting and the use of personalized style guides.</p><p>I have had some decent success with this, but mostly in ghostwriting for other people. For my own writing, despite models getting better and better, I&#8217;m increasingly finding that I&#8217;d rather just do it myself. This post you&#8217;re reading now is a perfect example:</p><ul><li><p>I dictated what I wanted to say in ~25 mins to my phone while I was in the car</p></li><li><p>I took the transcript, combined it with my style guide, and gave it to Claude</p></li><li><p>The output was completely unusable and made me sad</p></li><li><p>I ended up writing the entire post from scratch</p></li></ul><p>I have said that <a href="https://read.technically.dev/p/ai-will-replace-you-at-your-job-if">AI will replace you at your job if you let it</a> and I still believe this. If you use vanilla prompts, treat models as oracles instead of tools, and completely outsource your creative process to them, your bosses will eventually do so too, rendering you useless. For most people, it&#8217;s clear that there&#8217;s significant alpha in using models to help with writing.</p><p>For me though, for using my voice under my name saying something I want to say, I still like to do it the old fashioned way.</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">Subscribe for more of (some of) the best technical writing on the internet.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[What’s a Datacenter?]]></title><description><![CDATA[What actually goes on inside the buildings propping up the US economy.]]></description><link>https://read.technically.dev/p/whats-a-datacenter</link><guid isPermaLink="false">https://read.technically.dev/p/whats-a-datacenter</guid><dc:creator><![CDATA[Will Raphaelson]]></dc:creator><pubDate>Thu, 12 Feb 2026 16:30:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zCXc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you know anything about the <a href="https://technically.dev/universe/cloud">cloud</a> or modern web apps, you&#8217;ve probably seen a diagram like this one:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aHkA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aHkA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 424w, https://substackcdn.com/image/fetch/$s_!aHkA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 848w, https://substackcdn.com/image/fetch/$s_!aHkA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 1272w, https://substackcdn.com/image/fetch/$s_!aHkA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aHkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png" width="936" height="293" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:293,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Simple diagram showing users sending an HTTPS request to a cloud API and database.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Simple diagram showing users sending an HTTPS request to a cloud API and database." title="Simple diagram showing users sending an HTTPS request to a cloud API and database." srcset="https://substackcdn.com/image/fetch/$s_!aHkA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 424w, https://substackcdn.com/image/fetch/$s_!aHkA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 848w, https://substackcdn.com/image/fetch/$s_!aHkA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 1272w, https://substackcdn.com/image/fetch/$s_!aHkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b8945c-52a0-4823-ba57-ea3d2ef4eb98_936x293.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For most of us, even most engineers, this grey box is a sufficient level of detail on the datacenter, and that&#8217;s by design. Cloud service providers (CSPs) make it so you don&#8217;t need to know anything about the computers that serve your <a href="https://technically.dev/universe/http">HTTP</a> request or store your data. This is the fundamental value proposition of the cloud: you take care of the code, we&#8217;ll take care of the hosting.</p><p>But aren&#8217;t you curious?</p><h2>Datacenters&#8230; So hot right now</h2><p>Datacenters are the subject of renewed public attention, for better and for worse. On the bright side, datacenter investment is<a href="https://www.credaily.com/briefs/data-centers-power-most-of-us-gdp-growth-in-2025/"> broadly holding up the US economy</a>. A Harvard economist estimated that datacenter and related tech investment accounted for 92% of US GDP growth in the first half of 2025, despite being just 4% of total GDP.</p><p>On the other hand, all this datacenter construction has prompted major pushback from communities worried about their effect on the environment, utility availability, and property values. Over<a href="https://www.datacenterwatch.org/report"> $64 billion in datacenter projects have been blocked or delayed</a> due to local opposition. In Warrenton, Virginia,<a href="https://www.datacenterwatch.org/report"> residents voted out every town council member</a> who supported Amazon&#8217;s proposed datacenter. A nationwide poll found that<a href="https://www.multistate.us/insider/2025/10/2/data-centers-confront-local-opposition-across-america"> only 44% of Americans would welcome a datacenter nearby</a>, making them less popular than gas plants, wind farms, or even nuclear facilities.</p><h1>So, what&#8217;s a datacenter?</h1><p>When you search for the best Thai food near you, or post &#8220;happy brithday!&#8221; on your auntie&#8217;s Facebook wall, these requests are ultimately handled by a datacenter. The task you&#8217;ve set in motion by clicking the search button travels through the air, to your router, through a whole bunch of cables, to a computer in the datacenter that needs to actually retrieve Thai spots and then send those results back to you. These computers that do the heavy lifting behind the scenes, which are called <a href="https://technically.dev/universe/server">servers</a>, are the lifeblood of the datacenter. The datacenter is where thousands of servers that power your favorite application call home.</p><p>More than just pad see ew reviews flow through datacenters: critical time-sensitive information like bank transactions, visa applications, and medical records all rely on datacenter operations. When these critical centers of <a href="https://technically.dev/universe/infrastructure">infrastructure</a> have outages, businesses, institutions, and economies are hit hard. All this to say: keeping servers on, secure, and reliable is <em>very important.</em> Every aspect of the datacenter, its location, people, technology, and design, is in service of this goal. So let&#8217;s take a tour.</p><h2>Getting there and getting in</h2><p>You&#8217;ll probably need to drive to the datacenter, because datacenters are in the middle of nowhere. As we&#8217;ll learn in a bit, these operations depend on fiber access for fast networks, but also take up a ton of space, so cheap land is helpful. For this reason, datacenters are often on the outskirts of larger metros - think northern Virginia outside DC, and Oregon outside Portland.</p><p>Not just anyone is allowed into the buildings that run the economy. Modern datacenters employ biometric identification methods, a two-door &#8220;man-trap&#8221; to avoid anyone sneaking in behind you, a strict no phones / personal possessions policy, and the requirement that any guests be accompanied by staff at all times. With the price of <a href="https://technically.dev/posts/whats-a-gpu">GPUs</a> these days, perhaps Ocean&#8217;s 18 will see Danny and co. get through all these mechanisms to steal a pocketful of chips.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zCXc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zCXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zCXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zCXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zCXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zCXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg" width="800" height="312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:312,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A scene from Ocean's Eleven.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A scene from Ocean's Eleven." title="A scene from Ocean's Eleven." srcset="https://substackcdn.com/image/fetch/$s_!zCXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zCXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zCXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zCXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1375070e-10ab-4354-adc3-a3805a8bda7d_800x312.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Let&#8217;s get physical</h2><p>In the main hall of the datacenter, the first thing you&#8217;ll notice will be the sound. A low but loud hum that comes from all sides at once. These are the mole people. Just kidding. These are the cooling fans! Computers do their best work at about the same temps that humans do - between 64 and 84 degrees Fahrenheit. This requires, among other things, a ton of fans. They blow cool air up from the ground to the front of the servers, and another fan blows hot air from the back of the servers out into the exhaust. The difference between the &#8220;cool aisle&#8221; and the &#8220;hot aisle&#8221; can be over 30 degrees.</p><p>Looking around, you&#8217;ll see rows and rows of tall cabinets. In scale, these fall somewhere between library shelves and narrow streets. The cabinets themselves are about 6 feet tall and 2 feet wide, and they&#8217;re arranged in rows that can stretch hundreds of feet. This is where the servers live. But before we get to the servers themselves, let&#8217;s talk about how all of this is organized.</p><p>Servers are housed in cabinets called racks. A standard rack is 42U tall, &#8220;U&#8221; being the unit everyone uses, equal to 1.75 inches of vertical space. Do the math and you get about 73 inches, or just over 6 feet. The 42U standard exists for practical reasons: it&#8217;s tall enough to pack in a lot of compute, but short enough to fit through doors and elevators, and a technician can reach the top without a ladder.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ofi-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ofi-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!ofi-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!ofi-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!ofi-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ofi-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Illustration of a 42U server rack next to a person for size comparison.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustration of a 42U server rack next to a person for size comparison." title="Illustration of a 42U server rack next to a person for size comparison." srcset="https://substackcdn.com/image/fetch/$s_!ofi-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!ofi-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!ofi-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!ofi-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F379f7631-0ae0-43fe-b543-3d48d415cf52_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Inside a rack, you&#8217;ll find servers stacked like drawers. A typical server is 1U or 2U tall, so a single rack can hold somewhere between 20 and 42 servers, plus switches, power <a href="https://technically.dev/universe/distribution">distribution</a>, and cable management. The width is standardized at 19 inches (the actual mounting rails are 17.75 inches apart), which means any server from any manufacturer will slide into any rack. This interchangeability is the whole point, which we&#8217;ll get to in a second.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LOHG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LOHG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!LOHG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!LOHG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!LOHG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LOHG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Drawing of a server blade sliding into a server rack.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Drawing of a server blade sliding into a server rack." title="Drawing of a server blade sliding into a server rack." srcset="https://substackcdn.com/image/fetch/$s_!LOHG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!LOHG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!LOHG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!LOHG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb655a238-0f84-4bcc-9d0b-66b5be369eee_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>
      <p>
          <a href="https://read.technically.dev/p/whats-a-datacenter">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Technically Monthly (February 2026)]]></title><description><![CDATA[Neural networks that mirror the brain, real data on which AI use cases actually make money, and why ChatGPT physically cannot stop using em dashes.]]></description><link>https://read.technically.dev/p/technically-monthly-february-2026</link><guid isPermaLink="false">https://read.technically.dev/p/technically-monthly-february-2026</guid><dc:creator><![CDATA[Justin]]></dc:creator><pubDate>Thu, 05 Feb 2026 16:30:45 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>Dear magnanimous Technically readers,</p><p>January was a month of change for us at Technically. In addition to some fascinating writing about AI + neuroscience, why AI models use so many em dashes, and what people are actually using AI for, we brought on a whole new roster of writers that I&#8217;m excited to introduce you to. You&#8217;ll be hearing from them a lot for the rest of the year.</p><p>Some highlights:</p><h2>New on Technically</h2><h3><a href="https://technically.dev/posts/ai-and-neuroscience">AI and neuroscience</a></h3><p><em>Available as a <a href="https://read.technically.dev/p/ai-and-neuroscience?r=44h0yc">paid post on Substack</a>, and now in its permanent home in the <a href="https://technically.dev/knowledge-bases/working-with-ai">AI, it&#8217;s not that complicated</a> knowledge base.</em></p><p>The way we train and use GenAI models today strongly resembles how the pathways in the human brain actually work. In fact, many neuroscientists and AI researchers believe the key to unlocking real superintelligence will lie in our ability to better understand and exploit that connection.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O9Zi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O9Zi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 424w, https://substackcdn.com/image/fetch/$s_!O9Zi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 848w, https://substackcdn.com/image/fetch/$s_!O9Zi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 1272w, https://substackcdn.com/image/fetch/$s_!O9Zi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O9Zi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png" width="1456" height="949" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png&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;:&quot;Simple diagram showing machine learning turning data into predictions.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Simple diagram showing machine learning turning data into predictions." title="Simple diagram showing machine learning turning data into predictions." srcset="https://substackcdn.com/image/fetch/$s_!O9Zi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 424w, https://substackcdn.com/image/fetch/$s_!O9Zi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 848w, https://substackcdn.com/image/fetch/$s_!O9Zi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 1272w, https://substackcdn.com/image/fetch/$s_!O9Zi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28f430d2-15fa-4e37-aca5-412e7aaa3c67_1456x949.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This post explores a few ways in which this is true and explains some of these rather complicated ideas in more simple language.</p><h3><a href="https://technically.dev/posts/how-are-companies-using-ai">How are companies actually using AI?</a></h3><p><em>A guest post by <a href="https://www.linkedin.com/in/kenny-ning/">Kenny Ning from Modal</a> &#8212; available as a <a href="https://read.technically.dev/p/how-are-companies-using-ai?r=44h0yc">free post on Substack</a>, and now in its permanent home in the <a href="https://technically.dev/knowledge-bases/working-with-ai">AI, it&#8217;s not that complicated</a> knowledge base.</em></p><p>Everyone talks about AI use cases, but who&#8217;s actually spending money on what? Kenny analyzed real cloud spend data from Modal&#8217;s top 100 customers to find out which AI applications are growing fastest.</p><p>The three biggest growth areas: coding agents (apparently properly rated), LLM inference for low-latency use cases, and computational biology. Meanwhile, AI art and video generation is flattening &#8212; a possible sign the market is maturing from consumer novelties into serious B2B applications.</p><p>If you aren&#8217;t familiar with <a href="https://www.kennyning.com/">Kenny&#8217;s</a> work, he&#8217;s someone you should follow. He started his career in data science at Spotify and then Better Mortgage before following his former fearless leader Erik to Erik&#8217;s new company, <a href="https://modal.com/">Modal</a>. Modal is absolutely ripping and Kenny has his fingerprints on much of the interesting things they&#8217;ve published. He also low key shreds on piano with me sometimes.</p><h3><a href="https://technically.dev/posts/ai-and-em-dashes">AI and the em dash</a></h3><p><em>Available as a <a href="https://read.technically.dev/p/ai-and-the-em-dash?r=44h0yc">paid post on Substack</a>, and now in its permanent home in the <a href="https://technically.dev/knowledge-bases/working-with-ai">AI, it&#8217;s not that complicated</a> knowledge base.</em></p><p>Anyone who uses AI models knows they have this very strange obsession with em dashes. BUT WHY??? The culprit might be a mix of training data from older books (when em dash usage peaked in the 1860s), Medium&#8217;s auto-conversion of double hyphens, and the simple fact that an em dash is just one token while alternatives like &#8220;, and&#8221; take three.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sO3O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sO3O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 424w, https://substackcdn.com/image/fetch/$s_!sO3O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 848w, https://substackcdn.com/image/fetch/$s_!sO3O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!sO3O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sO3O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png" width="1162" height="1458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1458,&quot;width&quot;:1162,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot showing ChatGPT still using an em dash after being told not to.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot showing ChatGPT still using an em dash after being told not to." title="Screenshot showing ChatGPT still using an em dash after being told not to." srcset="https://substackcdn.com/image/fetch/$s_!sO3O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 424w, https://substackcdn.com/image/fetch/$s_!sO3O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 848w, https://substackcdn.com/image/fetch/$s_!sO3O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!sO3O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10160e34-5724-41a4-9e7c-a9d0971421af_1162x1458.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This wonderful new post comes courtesy of another new Technically contributor, <a href="https://www.linkedin.com/in/christy-bieber/">Christy Bieber</a> (no relation). She has been freelance writing for almost 20 years on topics ranging from personal finance to real estate to AI and em dashes, proving the old adage that &#8220;you can do anything with a JD other than be a lawyer.&#8221;</p><div><hr></div><p>We&#8217;ve got a few more authors we&#8217;re going to introduce next month, and are still looking for more. <strong>If you&#8217;re an expert on anything remotely related to software and AI and want to write about it, let us know!</strong> We will pay you!</p><h2>From the AI Reference: Training Dataset</h2><p>Following on the em dash saga, you might be wondering: what exactly was in the data that made AI fall in love with this punctuation mark in the first place?</p><p>Let&#8217;s talk a little bit about the very thing responsible for that: datasets.</p><h3><a href="https://technically.dev/ai-reference/training-dataset">Training Dataset</a></h3><p>Training datasets are the collections of examples you show an AI model so it can learn to recognize patterns and make predictions. Think of them as the textbooks and practice problems that teach AI models how to do their jobs.</p><p>The dataset is your way of saying to the AI: &#8220;Here are 50,000 examples of the task I want you to do. Figure out the patterns, and then apply what you&#8217;ve learned to new situations you&#8217;ve never seen before.&#8221;</p><p>Here&#8217;s what makes a good dataset:</p><ul><li><p>Representative examples that cover all real-world scenarios the model will encounter</p></li><li><p>Accurate labels &#8212; mislabeled examples confuse the model (if 10% of your &#8220;cat&#8221; photos actually show dogs, your model will learn that some dogs are cats)</p></li><li><p>Sufficient volume &#8212; more data usually means better performance, but with diminishing returns</p></li><li><p>Clean data &#8212; blurry images, corrupted files, and duplicate examples hurt performance</p></li></ul><p>The famous saying in AI: &#8220;garbage in, garbage out.&#8221; Your model is only as good as your data. Which explains a lot about why AI loves em dashes so much &#8212; if the training data was full of them (older books, Medium articles), the model learned that&#8217;s what good writing looks like.</p><h2>Are you using AI at work?</h2><p>We&#8217;re still collecting real examples of how people are putting AI to use in their day-to-day jobs. Automated something annoying? Built a workflow that stuck? Got your team on board? Reply to this email and tell us what you&#8217;re doing.</p><p>We want to hear what&#8217;s actually working.</p>]]></content:encoded></item><item><title><![CDATA[AI and the — em dash]]></title><description><![CDATA[Finally, an explanation for why AI models can't seem to quit them.]]></description><link>https://read.technically.dev/p/ai-and-the-em-dash</link><guid isPermaLink="false">https://read.technically.dev/p/ai-and-the-em-dash</guid><dc:creator><![CDATA[Christy Bieber]]></dc:creator><pubDate>Thu, 29 Jan 2026 16:30:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zZaj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This sentence &#8212; which I wrote from scratch without the help of AI &#8212; contains an em dash (actually two).</p><p>If you&#8217;ve been keeping up with the online discourse about AI writing, you may be surprised that I put an em dash in this post. That&#8217;s because so many human writers are steering away from this once-common punctuation mark, which is now viewed as a hallmark of writing written by chatbots.</p><p>In fact, AI bots love the em dash <em>so</em> much that it can be <a href="https://community.openai.com/t/cannot-get-responses-to-not-include-dashes-and-em-dashes/1023216">hard to get them to write content </a><em><a href="https://community.openai.com/t/cannot-get-responses-to-not-include-dashes-and-em-dashes/1023216">without</a></em><a href="https://community.openai.com/t/cannot-get-responses-to-not-include-dashes-and-em-dashes/1023216"> including it</a>, even when you give the bot explicit instructions <em>not</em> to do so. LLMs can be so funny sometimes.</p><p>Of course, this raises the question of <em>why </em>em dashes are all over AI-written content &#8212; and whether human writers should give up this once-beloved punctuation mark entirely, so their content isn&#8217;t immediately clocked as being written by an LLM.</p><h2>Why does AI love the em-dash so much?</h2><p>AI&#8217;s love affair with em dashes seems to have a simple explanation: The data used to train large language models was full of em-dashes. The AI is simply mimicking the writers that it learned from.</p><p>In fact, there&#8217;s some evidence to suggest that the content AI was trained on included significantly <em>more</em> em-dashes than you might expect. And weirdly enough, their prevalence seems to have become a deep bias that&#8217;s embedded into how LLMs understand the flow and structure of writing.</p><h3>AI-training material may have used an overabundance of em-dashes</h3><p>One theory behind AI&#8217;s love of the em-dash is that the later-generation AI models, which rely on it much more heavily than earlier iterations, were trained on <strong>older books</strong> that included more em-dashes than most modern writers would.</p><p>Early on, most AI models were trained based on a mix of public data on the Internet, as well as based on content from pirated books. However, in a quest for better quality <a href="https://technically.dev/universe/training">training</a> data as the tools evolved, AI models started scanning older texts. Curating the massive data trove that is the internet has been a major focus of AI Labs for more recent model generations, and finding quality text from books was certainly part of that.</p><p>The exact timeline for when this happened is something of a mystery, but Anthropic started in 2024, based on <a href="https://www.publishersweekly.com/binary-data/ARTICLE_ATTACHMENT/file/000/006/6700-1.pdf">court documents</a>, and other AI labs likely made a similar move somewhere between 2022 and 2024.</p><p>If AI labs digitized mostly <em>older</em> books, which is a common belief largely because of expired copyrights, their AI programs may have been fed writing with significantly more em dashes included in it  &#8212; especially as <a href="https://www.researchgate.net/figure/Changes-in-the-frequencies-of-punctuation-marks-in-Google-N-gram-viewer-1500-2008_fig3_328512136">studies</a> show the use of that use of the em-dash <a href="https://www.researchgate.net/publication/328512136_Frequency_Distributions_of_Punctuation_Marks_in_English_Evidence_from_Large-scale_Corpora">peaked in the 1860s</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_!zZaj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zZaj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zZaj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zZaj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zZaj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zZaj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg" width="1152" height="912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:253017,&quot;alt&quot;:&quot;Line chart showing rising use of the word &#8220;dash&#8221; over time.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://read.technically.dev/i/186077662?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Line chart showing rising use of the word &#8220;dash&#8221; over time." title="Line chart showing rising use of the word &#8220;dash&#8221; over time." srcset="https://substackcdn.com/image/fetch/$s_!zZaj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zZaj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zZaj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zZaj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055f5f8a-a671-44af-afff-4d64117ca444_1152x912.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It may not have been the books alone, either.</p><p>Another theory suggests that AI may <em>also</em> have picked up em-dash use from Medium, which automatically converted two hyphens (--) into an em-dash since the <a href="https://youtu.be/1d4JOKOpzqU?si=xXDqGEXiawLtWo5e&amp;t=569">company&#8217;s founder was a fan of typography</a>. Since Medium may have been seen as a source of high-quality writing by LLMs (and ergo upweighted in training by labs), AI may have determined that the em dash is a key feature of high-quality prose.</p><h3>The brevity theory</h3><p>There&#8217;s also another competing theory as well. Some suggest that AI favors em dashes because of brevity.</p><p>AI models think in <a href="https://technically.dev/universe/token">token</a>s, or small chunks of text, and they constantly have to evaluate the next <a href="https://technically.dev/universe/token">token</a> to use. The more <a href="https://technically.dev/universe/token">token</a>s the model uses, the more chance there is to make a mistake, so AI models prefer to use fewer <a href="https://technically.dev/universe/token">token</a>s to reduce loss</p><p>An em dash is just <em>one</em> token, while other alternatives, like &#8220;, and&#8221;, actually add up to three tokens. As a result, the em dash ends up being favored to improve efficiency.</p><p>Consider the difference between these two sentences:</p><blockquote><p>AI is fast, and it can produce massive volumes of content quickly.</p></blockquote><p>Versus:</p><blockquote><p>AI is fast &#8212; producing massive volumes of content quickly.</p></blockquote><p>The em dash removes filler phrases like &#8220;and it can,&#8221; which humans may prefer to use for better flow, but which add lots of extra tokens. The second sentence ends up shorter, more direct, and denser with meaning, so AI bots tend towards that approach by default.</p><p>This preference for brevity ends up being reinforced during fine-tuning, when models are rewarded for responses that humans find to be clear, helpful, and concise rather than rambling or inefficient. AI models choose the em-dash to keep things short, then learn that using em-dashes is the <em>right</em> thing to do.</p><h2>Sam Altman announces a fix &#8212; but it may not be foolproof</h2><p>For em-dash haters frustrated with the challenge of training out the em-dash, there <em>was</em> reason to hope in recent months.</p><p>In November 2025, Sam Altman, CEO of <a href="https://technically.dev/posts/what-does-openai-do">OpenAI</a>, announced on X that custom instructions to avoid the em-dash would now be followed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jvd5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jvd5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 424w, https://substackcdn.com/image/fetch/$s_!jvd5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 848w, https://substackcdn.com/image/fetch/$s_!jvd5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 1272w, https://substackcdn.com/image/fetch/$s_!jvd5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jvd5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png" width="1456" height="669" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:669,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Screenshot of a tweet joking about ChatGPT finally avoiding em dashes.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a tweet joking about ChatGPT finally avoiding em dashes." title="Screenshot of a tweet joking about ChatGPT finally avoiding em dashes." srcset="https://substackcdn.com/image/fetch/$s_!jvd5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 424w, https://substackcdn.com/image/fetch/$s_!jvd5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 848w, https://substackcdn.com/image/fetch/$s_!jvd5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 1272w, https://substackcdn.com/image/fetch/$s_!jvd5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d490fa3-c234-4565-a0cb-95c47175fc17_1480x680.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>However, responses from X users show that the results haven&#8217;t been perfect.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hgUj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hgUj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 424w, https://substackcdn.com/image/fetch/$s_!hgUj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 848w, https://substackcdn.com/image/fetch/$s_!hgUj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!hgUj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hgUj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png" width="1162" height="1458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1458,&quot;width&quot;:1162,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Chat screenshot showing ChatGPT apologizing for still using em dashes.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Chat screenshot showing ChatGPT apologizing for still using em dashes." title="Chat screenshot showing ChatGPT apologizing for still using em dashes." srcset="https://substackcdn.com/image/fetch/$s_!hgUj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 424w, https://substackcdn.com/image/fetch/$s_!hgUj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 848w, https://substackcdn.com/image/fetch/$s_!hgUj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!hgUj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30f4d287-b266-47a8-9c17-c95f06991c1d_1162x1458.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Unfortunately, this problem may actually get worse before it gets better &#8212; if it gets better at all. The big issue now is that newer models are training on the output of previous generations.</p><p>As more content on the Internet contains an over-abundance of em-dashes thanks to the rise in AI-generated content, this stylistic tic could result in an Internet that&#8217;s absolutely <em>filled</em> with even <em>more</em> em-dashes.  It becomes a self-perpetuating cycle.</p><p>This actually creates the risk of model collapse, as newer models amplify the idiosyncrasies of old ones. For those who <em>don&#8217;t</em> like AI writing &#8212; and who fear that it will replace them &#8212; that may be a good thing. But, for those who are frustrated with AI slop and who don&#8217;t think LLMs are going anywhere any time soon, seeing the writing get <em>worse</em> could be a major source of frustration.</p><h2>Should real human writers stop using em-dashes?</h2><p>For now, the fate of the em-dash hangs in the balance, and the question becomes  &#8212; should human writers abandon this punctuation entirely and leave it to the bots?</p><p>That&#8217;s ultimately a judgment call. Many writers are pushing back, refusing to let AI change the way they write and think.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7zxD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7zxD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 424w, https://substackcdn.com/image/fetch/$s_!7zxD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 848w, https://substackcdn.com/image/fetch/$s_!7zxD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!7zxD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7zxD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png" width="1250" height="1458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5126971f-4c01-440d-9ffa-813544952793_1250x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1458,&quot;width&quot;:1250,&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_!7zxD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 424w, https://substackcdn.com/image/fetch/$s_!7zxD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 848w, https://substackcdn.com/image/fetch/$s_!7zxD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!7zxD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5126971f-4c01-440d-9ffa-813544952793_1250x1458.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The key may be to use them sparingly and to make sure your writing <em>otherwise</em> clearly signals that your text is written by humans for humans. This can mean injecting personal experiences and emotional depth that chatbots simply haven&#8217;t been able to master  &#8212; at least not yet.</p>]]></content:encoded></item><item><title><![CDATA[How are companies actually using AI?]]></title><description><![CDATA[No surveys or corporate hand-waving: let's answer the question with actual data.]]></description><link>https://read.technically.dev/p/how-are-companies-using-ai</link><guid isPermaLink="false">https://read.technically.dev/p/how-are-companies-using-ai</guid><dc:creator><![CDATA[Kenny Ning]]></dc:creator><pubDate>Tue, 27 Jan 2026 18:11:38 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>People love to talk about their pets, the weather, a recent vacation. But there&#8217;s one thing that people <em>love</em> to talk about even more: what they&#8217;re using AI for.</p><ul><li><p>I used <a href="https://technically.dev/universe/chatgpt">ChatGPT</a> to build me a workout plan</p></li><li><p>I vibe coded a NYT cooking inspired recipe generator</p></li><li><p>I had AI write me a song about the Python 3.14 release notes</p></li></ul><p>It&#8217;s not just people using AI anymore; corporations want to vibe code a <s>recipe app</s> customer support platform too. According to Menlo Ventures&#8217;s &#8220;2025: The State of Generative AI in Enterprise&#8221;, AI spend in 2025 was $37 billion, up 3.2x from the year before. $18 billion of that spend was on something called <strong>AI <a href="https://technically.dev/universe/infrastructure">infrastructure</a></strong>.</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">Subscribe to Technically to follow what&#8217;s actually happening with AI (beyond the hype machine).</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>AI infrastructure spend</h3><p>I happen to work at one of these providers called Modal. Thankfully, we can go deep with our data in a way you can&#8217;t with an industry report:</p><ul><li><p>Actual (not self-reported) spend over time at the company level</p></li><li><p>We can infer detailed use cases from customer conversations and sales notes</p></li></ul><p>In the spirit of <a href="https://read.technically.dev/p/ai-will-replace-you-at-your-job-if">not letting AI replace me</a>, I went through each one of our top 100 or so customers and bucketed them into one of the following use cases:</p><ul><li><p><strong><a href="https://technically.dev/universe/llm">LLM</a> <a href="https://technically.dev/universe/inference">inference</a>:</strong> running custom or open-source <a href="https://technically.dev/universe/llm">LLM</a>s to build chatbots, document parsing, or low-latency code generation</p></li><li><p><strong>Computational biology:</strong> predicting molecular structures or protein folding (thus concludes all the comp bio buzzwords in my arsenal tyvm)</p></li><li><p><strong>Audio inference</strong>: transcription, text-to-speech, generative music</p></li><li><p><strong>Image / video inference</strong>: running custom or <a href="https://technically.dev/universe/open-source">open source</a> models to generate ghibli images of yourself and things like that</p></li><li><p><strong>Coding agents</strong>: vibe-coding apps and tools</p></li></ul><p>This methodology requires human judgment and isn&#8217;t perfect. It doesn&#8217;t take into account customers with multiple use cases. I&#8217;ve also taken some liberty in excluding some outlier customers that skew the data in an unhelpful way. Here&#8217;s what I learned&#8230;</p><h2>Coding agents are (apparently) properly rated</h2><p>Menlo&#8217;s report describes coding as AI&#8217;s first &#8220;killer use case&#8221;, and we&#8217;d have to agree. We&#8217;re seeing the fastest spend growth among coding agent companies like Cognition and <a href="https://www.linkedin.com/posts/fabian-hedin-2377b0144_lovable-is-running-30k-sandboxes-concurrently-activity-7414406842652782593-xb-T?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAACXQE34BFT1HXpLThcz0iY5M2zwGh9UX8BE">Lovable</a>.</p><p>We&#8217;re also seeing other customers use the same technology that powers coding agents (<a href="https://modal.com/docs/guide/sandboxes">sandboxes</a>) in new use cases like reinforcement learning. We expect this category to continue to grow.</p><h2>LLM inference is increasingly self-hosted</h2><p>At Modal, we think of LLM inference as <a href="https://modal.com/llm-almanac/workloads">three different types of workloads</a>:</p><ul><li><p><strong>Offline</strong> - batch, analytical processing, asynchronous</p></li><li><p><strong>Online </strong>-<strong> </strong> interactive, low-latency, synchronous</p></li><li><p><strong>Semi-online </strong>- mix of the above two</p></li></ul><p>Choosing <a href="https://technically.dev/posts/what-does-openai-do">OpenAI</a> or another closed source provider is like choosing a Toyota Camry; a middle-of-the-road option where you may not want to think too hard about mpg or top speed or acceleration. You just want to get the job done reasonably well.</p><p>But if you&#8217;re building a business, customizing performance of your offline / online / semi-online workload matters more and more. These companies might choose the &#8220;OS stack&#8221;: pairing an open-source like Qwen with an open-source inference engine like vLLM that gives them that level of customization.</p><p>The spend we&#8217;re seeing from LLM inference companies using the OS stack has skyrocketed over the last 6 months. Reducto is solving the <a href="https://modal.com/blog/reducto-case-study">PDF extraction problem</a> at scale (they <a href="https://www.linkedin.com/posts/aditabraham_in-the-last-3-days-millions-of-people-activity-7409349225618128896-bCxy">parsed the Epstein files</a>). Decagon is using <a href="https://modal.com/blog/decagon-case-study">online, low-latency voice chat</a> in their core AI customer service product.</p><h2>Science is still alive</h2><p>The US may not be a <a href="https://www.bbc.com/news/articles/clyezjke80jo">measles-free country</a> for long, but computational biology startups aren&#8217;t discouraged. A small, but steadily growing share of our spend is towards science use cases like <a href="https://modal.com/blog/seamless-computational-bio-at-chai-discovery">drug discovery</a>. And to think that all this time, I thought running reproducible experiments was only relevant in e-commerce (that&#8217;s what you get when you spend 10 years as a data scientist in tech).</p><h2>B2B is so back (even though it never left)</h2><p>Even though Modal has thousands of paying customers, we are but a small slice of the AI infrastructure pie. Still, slicing spend by the categories above can give us a uniquely detailed view into how some of the fastest growing AI companies are spending that sweet sweet AI money.</p><p>Overall, the AI market has matured. It&#8217;s moved from generating AI spongebob memes to writing <a href="https://builders.ramp.com/post/why-we-built-our-background-agent">30% of a $32 billion dollar company&#8217;s code</a>. If 2025 was AI&#8217;s experimental college phase, 2026 will be the year it&#8217;s going to start looking for jobs. Something tells me it&#8217;s going to ace the interview.</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">Subscribe to Technically for more analysis like this (not exactly like this, but you get it).</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[AI and neuroscience]]></title><description><![CDATA[AI models seem to approximate the brain, intentionally or otherwise]]></description><link>https://read.technically.dev/p/ai-and-neuroscience</link><guid isPermaLink="false">https://read.technically.dev/p/ai-and-neuroscience</guid><dc:creator><![CDATA[Justin]]></dc:creator><pubDate>Tue, 13 Jan 2026 16:31:20 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>Like many of you I&#8217;ve been watching (listening to?) a lot of the Dwarkesh podcast over the past 6 months, and one theme that seems to come up a lot is <strong>the relationship between AI and the brain</strong>. The way we train and use GenAI models today strongly resembles how the pathways in the human brain actually work; and many neuroscientists and AI researchers believe the key to unlocking <em>real</em> superintelligence will lie in our ability to better understand and exploit that connection.</p><p>This post is going to explore a few ways in which this is true and explain some of these rather complicated ideas in more simple language.</p><h2><strong>Neural networks, the basis for everything</strong></h2><p>The obvious place to start is <strong><a href="https://technically.dev/universe/neural-network">neural networks</a></strong>, the architecture for pretty much all of the AI models that you use today like the GPT family, Claude, Nano Banana, and the like. Obviously the first word &#8211; neural &#8211; likens these models to the animal brain. The human brain has something in the range of 86B neurons, which are specialized cells that transmit nerve impulses; essentially the core unit of how our brains transmit information and signals. The idea is that <a href="https://technically.dev/universe/neural-network">neural networks</a> work in kind of the same way.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZBsd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZBsd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 424w, https://substackcdn.com/image/fetch/$s_!ZBsd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 848w, https://substackcdn.com/image/fetch/$s_!ZBsd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBsd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZBsd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png" width="1456" height="949" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png&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_!ZBsd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 424w, https://substackcdn.com/image/fetch/$s_!ZBsd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 848w, https://substackcdn.com/image/fetch/$s_!ZBsd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBsd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d23cfe-025f-4cf5-9ad5-d6c6b5842dfb_1456x949.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And indeed, you&#8217;d be hard pressed to find an explanation of neural networks that <em>doesn&#8217;t</em> make an analogy to the human brain. Take, for example, <a href="https://read.technically.dev/p/all-about-ai-model-architectures">Technically&#8217;s very own breakdown</a> of neurons from the prolific Nicole Errera:</p><blockquote><p><em>Neurons are the basic building blocks of AI architectures, modeled after the actual biological neurons that transmit signals throughout the human brain. Remember, AI models are essentially pattern investigators; they find the underlying pattern in the data. You can think of these neurons as the mathematical functions that are doing this hard investigative work, getting into the weeds of the data and figuring out what&#8217;s going on.</em></p><p><em>The math performed by individual neurons is actually pretty simple &#8211; it&#8217;s usually just basic multiplication and addition that you could do with a calculator. So how are AI models able to capture such complex patterns, like the ones involved in language and vision? The trick is to string together a lot of neurons &#8211; like hundreds of millions of them.</em></p></blockquote><p>So in practice, the neural net in a model like GPT-5 does, at least loosely, resemble how a mammalian brain works. This is no accident. If you <a href="https://cs.stanford.edu/people/eroberts/courses/soco/projects/neural-networks/History/history1.html">trace the history</a> of the neural network you&#8217;ll end up back in 1943 (when I was born), when Warren McCulloch (neurophysicist) and Walter Pitts (mathematician) <a href="https://www.cs.cmu.edu/~epxing/Class/10715/reading/McCulloch.and.Pitts.pdf">wrote a paper</a> proposing a mechanism for how neurons might actually work.</p><p>To illustrate their hypothesis they modeled a simple neural net using electrical circuits. Further attempts culminated in a breakthrough at Stanford in 1959 when MADALINE (it&#8217;s an acronym) became the first neural network applied to a real world problem &#8211; eliminating echoes on phone lines. So in short, the fact that neural networks (roughly) approximate how the brain works is not an accident, this insight is core to their entire historical origin.</p><p>Now any neuroscientist worth their salt will tell you that there&#8217;s more that we <em>don&#8217;t</em> know about the brain than there is that we <em>do</em> know. The true inner workings of this organ are still really a mystery. And so it would be naive to argue that neural networks work <em>in the same way</em> that the brain works. But it&#8217;s safe to say that they&#8217;re <em>inspired by</em> what we do know about how the brain works, at least loosely.</p>
      <p>
          <a href="https://read.technically.dev/p/ai-and-neuroscience">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Technically Monthly (January 2026)]]></title><description><![CDATA[Comparing vibe coding tools, making sure your AI workflows don&#8217;t hallucinate into oblivion, and why careless AI use might actually get you replaced.]]></description><link>https://read.technically.dev/p/technically-monthly-january-2026</link><guid isPermaLink="false">https://read.technically.dev/p/technically-monthly-january-2026</guid><dc:creator><![CDATA[Justin]]></dc:creator><pubDate>Tue, 06 Jan 2026 16:30:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jQ6V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello distinguished Technically readers,</p><p>My sources tell me <a href="https://www.youtube.com/watch?v=QXk1K2iVtCY">it&#8217;s not too late to say happy new year</a>.</p><p>2025 was the year everyone started to use AI at work. 2026 is the year we figure out how to get the most out of it, vibe code things that actually work, and steer clear of hallucinations (unless you&#8217;re into that kind of thing, in which case you might get oneshotted by ayahuasca).</p><p>So here&#8217;s what we&#8217;ve been up to for the past month.</p><h2>New on Technically</h2><h3><a href="https://technically.dev/posts/vibe-coding-tool-comparison">2026 vibe coding tool comparison</a></h3><p><em><a href="https://read.technically.dev/p/2026-vibe-coding-tool-comparison?r=44h0yc">Available as a free post on Substack</a> (courtesy of Vercel) and now in its permanent home in the <a href="https://technically.dev/knowledge-bases/working-with-ai">AI, it&#8217;s not that Complicated</a> knowledge base.</em></p><p>All hail vibe coding, savior of the Ideas Guy. But which vibe coding tool should you use? I tested 4 of the most popular options by building the same app on each: an internal dashboard for Vandelay Industries&#8217; potato chip import/export operations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jQ6V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jQ6V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 424w, https://substackcdn.com/image/fetch/$s_!jQ6V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 848w, https://substackcdn.com/image/fetch/$s_!jQ6V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 1272w, https://substackcdn.com/image/fetch/$s_!jQ6V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jQ6V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png" width="1456" height="1119" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1119,&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_!jQ6V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 424w, https://substackcdn.com/image/fetch/$s_!jQ6V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 848w, https://substackcdn.com/image/fetch/$s_!jQ6V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 1272w, https://substackcdn.com/image/fetch/$s_!jQ6V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72841c24-77d0-4af2-8d7a-391723939aee_1600x1230.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For each I cover how well they work, any quirks to watch out for, plus pricing and how far you can get on a free plan.</p><h3><a href="https://technically.dev/posts/ai-user-guide-to-evals">The AI user&#8217;s guide to evals</a></h3><p><em>Available as a <a href="https://read.technically.dev/p/the-ai-users-guide-to-evals?r=44h0yc">paid preview on Substack</a>, and now in its permanent home in the <a href="https://technically.dev/knowledge-bases/working-with-ai">AI, it&#8217;s not that Complicated</a> knowledge base.</em></p><p>As non-technical people build more and more stuff with AI they are starting to run into the same issues as software engineers &#8211; it&#8217;s hard to know when things are working or not. This guide to evals gives you the background you need to start adding effective monitoring to your AI system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZAgI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZAgI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 424w, https://substackcdn.com/image/fetch/$s_!ZAgI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 848w, https://substackcdn.com/image/fetch/$s_!ZAgI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 1272w, https://substackcdn.com/image/fetch/$s_!ZAgI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZAgI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png" width="1000" height="598" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&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_!ZAgI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 424w, https://substackcdn.com/image/fetch/$s_!ZAgI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 848w, https://substackcdn.com/image/fetch/$s_!ZAgI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 1272w, https://substackcdn.com/image/fetch/$s_!ZAgI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd476fa-8efc-48f1-a1db-3403f7956a4a_1000x598.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Based on my conversation with eval expert Hamel Husain, this post covers:</p><ul><li><p>Why evals matter: moving from &#8220;I think the bot is getting better&#8221; to &#8220;hallucination rate dropped from 15% to 3% this week&#8221;</p></li><li><p>Look at the data: why you need to examine your failures before writing fancy tests</p></li><li><p>Assertions over LLM judges: why simple keyword checks beat complex AI-judging-AI setups</p></li><li><p>A practical 4-step workflow: vibe check, spreadsheet, simple fixes, then targeted evals</p></li></ul><p>This one is pretty practical.</p><h3><a href="https://technically.dev/posts/ai-will-replace-you-if-you-let-it">AI will replace you at your job if you let it</a></h3><p><em>Also available as a <a href="https://read.technically.dev/p/ai-will-replace-you-at-your-job-if?r=44h0yc">free post on Substack</a> and in the <a href="https://technically.dev/knowledge-bases/working-with-ai">AI, it&#8217;s not that Complicated knowledge base</a>.</em></p><p>Like you, I&#8217;m extremely tired of the recurring headlines about &#8220;AI replacing the workforce,&#8221; written almost exclusively by people who know nothing about AI and have never been part of said workforce. And yet&#8230; many people are using AI so carelessly that you won&#8217;t be able to blame their bosses when they decide AI can do the work in their stead.</p><p>I believe that staying ahead is going to mean really taking the time to use AI intelligently, customizing it to your needs, tweaking your prompts, and keeping an iterative mindset. <a href="https://technically.dev/posts/ai-will-replace-you-if-you-let-it">AI will only replace you at your job if you let it</a>.</p><h2>From the AI Reference: Prompt Engineering</h2><p>If you weren&#8217;t in the loop and got too caught up in the holidays of it all, we recently launched the<a href="https://technically.dev/ai-reference"> AI Reference</a>&#8212;a companion to the<a href="https://technically.dev/universe"> Technically Universe</a> focused specifically on AI concepts. This month&#8217;s featured term is one everyone using AI tools should understand:</p><h3>Prompt Engineering</h3><p><a href="https://technically.dev/ai-reference/prompt-engineering">Prompt engineering</a> is the art of talking to AI models in a way that gets you the results you actually want. It&#8217;s the practice of crafting inputs that reliably produce the outputs you&#8217;re looking for, whether that&#8217;s generating marketing copy, analyzing data, or answering customer questions.</p><p>Here&#8217;s the thing: AI models are incredibly powerful, but they&#8217;re also incredibly literal. Ask ChatGPT &#8220;write about dogs&#8221; and you might get a 500-word essay about canine evolution. Ask it &#8220;write 3 bullet points about why dogs make good pets&#8221; and you&#8217;ll get exactly what you need. That difference in specificity is prompt engineering in action.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qRFb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qRFb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!qRFb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!qRFb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!qRFb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qRFb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f3ff8bd-d0f2-4406-a261-beb59365d290_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_!qRFb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!qRFb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!qRFb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!qRFb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3ff8bd-d0f2-4406-a261-beb59365d290_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Why this matters:</p><ul><li><p>Good prompts can save you money, time, and frustration when working with AI</p></li><li><p>The more context and structure you provide, the better models can give you what you actually want</p></li><li><p>Think of it as learning to communicate with a very smart but literal-minded assistant</p></li><li><p>Key techniques include few-shot prompting, chain of thought reasoning, and setting clear constraints</p></li></ul><h2>Coming up this month</h2><p>We&#8217;ve got three posts on deck for January:</p><ul><li><p><strong>AI for PMMs: </strong>automating customer segmentation. A look at how product marketing teams can start using AI to segment customers.</p></li><li><p><strong>What&#8217;s fine-tuning? </strong>A breakdown of what fine-tuning is and why it comes up so often in AI discussions.</p></li><li><p><strong>How AI chips get made: </strong>An overview of how the hardware behind modern AI systems is produced.</p></li></ul><h2>Are you using AI at work?</h2><p>We want to hear what&#8217;s actually working. If you&#8217;ve automated a tedious task, built something useful, or helped your team adopt AI without chaos, send us a reply and share your story.</p>]]></content:encoded></item></channel></rss>