<?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"><channel><title><![CDATA[seangoedecke.com RSS feed]]></title><description><![CDATA[Sean Goedecke's personal blog]]></description><link>https://seangoedecke.com</link><generator>GatsbyJS</generator><lastBuildDate>Sun, 11 Oct 2026 09:57:01 GMT</lastBuildDate><item><title><![CDATA[Don't diagnose your opponents]]></title><link>https://seangoedecke.com/dont-diagnose-your-opponents/</link><guid isPermaLink="false">https://seangoedecke.com/dont-diagnose-your-opponents/</guid><pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you disagree with someone, there are two paths forward. The first is to try to engage with what they’re saying: what their reasons are, whether their position is true, what evidence could be brought to bear, and so on. The second is to &lt;em&gt;diagnose&lt;/em&gt; them: to engage with the second-order question of why they’re saying it. For instance, if you’re arguing with somebody about &lt;a href=&quot;https://www.reddit.com/r/softwarearchitecture/comments/1eflqzl/monolith_vs_microservices_whats_your_take/&quot;&gt;microservices&lt;/a&gt;&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, you could say “well, you only like microservices because you want to polish your resume”, or “you only like monoliths because you’re scared of distributed systems”.&lt;/p&gt;
&lt;p&gt;This happens a lot in online arguments. On the question “are AI models improving”, some anti-AI people will argue that people only think so because AI psychosis is &lt;a href=&quot;https://www.reddit.com/r/ExperiencedDevs/comments/1x2mxgn/comment/pf3qei7/&quot;&gt;rotting their brain&lt;/a&gt;, and the dumber they get, the smarter AI models seem in comparison. Likewise, many pro-AI people argue that people only disagree because they’re Luddites, or scared of change, and so on. None of these arguments are about the quality of AI models.&lt;/p&gt;
&lt;p&gt;It feels so good to diagnose your opponents because there’s no possible response. If you say “I think AI models are improving because these benchmark scores are rising”, somebody might point out that the AI labs are training on those benchmarks, or argue that they represent isolated skills that don’t transfer, and so on, making you feel stupid. If you say “you only disagree with me because you want to roleplay as a revolutionary”, how could you be proven wrong? The more someone protests a diagnosis, the more it sounds like it must be right. Otherwise why would they be so upset?&lt;/p&gt;
&lt;p&gt;Of course, they’re so upset precisely because there is no possible response. By moving to diagnosis, you’re no longer having an argument about the facts, you’re purely in the area of rhetoric. But when you’re in the middle of an argument, diagnosing always feels like you’re being piercingly analytical. It feels like you’re cutting right to the heart of the matter: these complicated arguments are just &lt;a href=&quot;https://en.wikipedia.org/wiki/Chaff_(countermeasure)&quot;&gt;chaff&lt;/a&gt;, intended to distract you from the fundamental psychological reason why your opponent is being so foolish. This is just ordinary spite and anger&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, whatever it feels like at the time.&lt;/p&gt;
&lt;p&gt;There’s nothing inherently wrong with the second-order question of why someone person believes what they believe. It’s totally fine to think about it or form theories about it, like any other factual question. Just remember that it doesn’t bear on the question of whether they’re &lt;em&gt;right&lt;/em&gt;&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Every human being forms their beliefs on top of a cocktail of base urges, animal instincts, and barely-suppressed evolutionary drives. If they’re rational, they also have evidence for those beliefs. It’s the quality of that evidence that helps you determine whether the beliefs are true, not the existence of the base urges.&lt;/p&gt;
&lt;p&gt;As a general rule, you should only diagnose your opponents when you also have a strong, &lt;em&gt;unrelated&lt;/em&gt; argument about why they’re wrong. For instance, I think &lt;a href=&quot;https://www.wheresyoured.at/&quot;&gt;Ed Zitron&lt;/a&gt; has been thoroughly audience-captured by AI skeptics, whose demand for news about AI failures far exceeds supply. But I have written &lt;a href=&quot;/ai-inference-is-obviously-profitable/&quot;&gt;many&lt;/a&gt; &lt;a href=&quot;/ai-gpus-live-longer-than-three-years/&quot;&gt;long-form&lt;/a&gt; &lt;a href=&quot;/tags/papers/&quot;&gt;posts&lt;/a&gt; &lt;a href=&quot;/water-impact-of-ai/&quot;&gt;about&lt;/a&gt; why I think Zitron’s specific claims about the sustainability of AI are incorrect. When I talk to people who think Zitron is right, I talk about my arguments in those posts, not about my personal theory about why he says the things he does.&lt;/p&gt;
&lt;p&gt;Scott Alexander famously called the “noncentral fallacy”&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; the &lt;a href=&quot;https://www.lesswrong.com/posts/yCWPkLi8wJvewPbEp/the-noncentral-fallacy-the-worst-argument-in-the-world&quot;&gt;Worst Argument in the World&lt;/a&gt;. For me, diagnosing your opponents is the Worst Argument in the World. I cringe every time I see it in the wild (like most cringeworthy behavior, it bothers me because I myself have to struggle against the urge to do it). Just don’t! It’s good at playing to your base, but it doesn’t persuade: anyone who believes your opponents’ views will just be mad that you’re psychoanalyzing them instead of talking about the actual issues at stake.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;&lt;a href=&quot;/confidence/&quot;&gt;Don’t.&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Am I diagnosing the diagnosers here? Maybe, but I think it’s forgivable, since there is no specific argument about the facts at stake.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;The philosopher in me wants to clarify that you could theoretically establish that someone’s motives for believing something are leading them away from the truth. In practice, (a) you cannot do this in an internet argument, and (b) it is always better and easier to make a straightforward argument about what the truth is.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;“You’re a fringe member of some group which has members I have an emotional reaction to, therefore I will have the same reaction to you even though you yourself don’t do those things.” “Group” here is to be understood as “Christian” or “Italian”, not something like the &lt;a href=&quot;https://en.wikipedia.org/wiki/Westboro_Baptist_Church&quot;&gt;WBC&lt;/a&gt; where the fact of membership itself is what’s being judged.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/dont-diagnose-your-opponents/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Software's centaur age may last decades]]></title><link>https://seangoedecke.com/softwares-centaur-age-may-last-decades/</link><guid isPermaLink="false">https://seangoedecke.com/softwares-centaur-age-may-last-decades/</guid><pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We are currently living in the age of centaurs (2022-20??). Right now, human engineers paired with AI coding systems are more effective than either by themselves. For future generations of software engineers — human or otherwise — this will be the most significant fact about the current period.&lt;/p&gt;
&lt;p&gt;As in &lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_chess&quot;&gt;chess’s&lt;/a&gt; own centaur age, &lt;a href=&quot;https://www.theguardian.com/technology/2005/jun/30/chess.sport&quot;&gt;people&lt;/a&gt; are always ready to claim that the centaur age is over and the age of AI supremacy has begun. But the age of centaurs in chess lasted about twenty years, and previous centaur ages have lasted &lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC11750143/&quot;&gt;far longer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This should be encouraging to many of us. If software engineering goes along similar lines, we may be able to ride it out another decade or two: enough to make serious plans about what comes next, or to finish out our careers entirely.&lt;/p&gt;
&lt;h3 id=&quot;a-brief-history-of-the-centaur-age&quot; style=&quot;position:relative;&quot;&gt;A brief history of the centaur age&lt;a href=&quot;#a-brief-history-of-the-centaur-age&quot; aria-label=&quot;a brief history of the centaur age permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It began with GitHub Copilot, which launched in 2022 as AI-powered autocomplete. A confident engineer who knew exactly what they wanted could tab-complete their way through lines of code and sometimes entire functions. Being able to chat with language models like GPT-4 provided the next upgrade. Although the models would still get things wrong, it was helpful to have a generalist on tap for areas that were a complete mystery.&lt;/p&gt;
&lt;p&gt;Coding agents rose to prominence with Cursor’s “agent mode” in 2024 and Claude Code in early 2025. Early agents needed close supervision to prevent them from going off the rails, but were still helpful to automate straightforward tasks. Current agents — after the November 2025 release of Claude Opus 4.5 — are reliable enough to run entirely unsupervised. Their output still needs human review, but the kind of mistakes they make are more mistakes of &lt;a href=&quot;/human-ai-partnerships-are-for-alignment-not-capability/&quot;&gt;alignment&lt;/a&gt; than regular bugs: not matching the organization’s technical values, over-engineering certain areas and under-engineering others, deciding where to spend effort, and so on.&lt;/p&gt;
&lt;p&gt;It is no longer possible to credibly argue that an unassisted software engineer can beat a centaur team. The value provided by coding agents is just too great: not just the speed of producing code, but the speed of review and testing. However, we are not yet at the point where an unsupervised coding agent can beat a centaur team either. All the impressive work I’ve seen from LLMs has had a competent human software engineer in control. Centaurs are on top.&lt;/p&gt;
&lt;h3 id=&quot;will-softwares-centaur-age-be-shorter-than-chesss&quot; style=&quot;position:relative;&quot;&gt;Will software’s centaur age be shorter than chess’s?&lt;a href=&quot;#will-softwares-centaur-age-be-shorter-than-chesss&quot; aria-label=&quot;will softwares centaur age be shorter than chesss permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Would we expect our centaur age to be shorter? On the one hand, chess is a much simpler problem than software engineering, and is more amenable to learning methods like self-play.&lt;/p&gt;
&lt;p&gt;On the other hand, software engineering is massively more lucrative to solve, and many orders of magnitude more funding is being plowed into the problem than was with chess.&lt;/p&gt;
&lt;p&gt;On the third hand, “solving” software engineering means creating much more software, which increases the total work-to-be-done, so even if the &lt;em&gt;relative&lt;/em&gt; human share of that work is shrinking, the &lt;em&gt;overall&lt;/em&gt; amount of human work might grow.&lt;/p&gt;
&lt;p&gt;On the fourth hand, the level of generally-capable AI needed to address software engineering will have huge effects on other fields, the ripple effects of which are likely to negatively impact software engineering jobs (for instance, crashing the economy, widespread social unrest, and so on).&lt;/p&gt;
&lt;p&gt;On the fifth hand, we might think that chess had an unusually fast centaur age. Previous centaur ages lasted much longer. In knitting, where a human and a knitting-frame could outcompete any hand-knitter, the centaur age lasted &lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC11750143/&quot;&gt;two hundred years&lt;/a&gt;. On the sixth hand, technological change &lt;a href=&quot;https://en.wikipedia.org/wiki/Accelerating_change&quot;&gt;is moving ever faster&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I could probably find a seventh, eighth, and ninth hand if I wanted to&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/softwares-centaur-age-may-last-decades/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. But overall I think we have no real idea of how this is going to turn out. Chess is the most recent example of a centaur age we have, and it’s attacked by the same AI-based forces of automation as software is. It’s thus reasonable&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/softwares-centaur-age-may-last-decades/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; to make a default assumption that the length of software’s centaur age will be similar to chess’s.&lt;/p&gt;
&lt;h3 id=&quot;living-in-the-centaur-age&quot; style=&quot;position:relative;&quot;&gt;Living in the centaur age&lt;a href=&quot;#living-in-the-centaur-age&quot; aria-label=&quot;living in the centaur age permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Suppose I have convinced you that human-AI partnerships will be the dominant force in software engineering for at least the next decade. What then?&lt;/p&gt;
&lt;p&gt;Don’t quit! Don’t give up on software engineering and go become a carpenter, or open a cafe, or try to get a retail job. Unless you are somehow really, really passionate about doing those things, it is going to &lt;em&gt;suck&lt;/em&gt;: unrewarding, grueling work that you are not good at. A decade of software engineering work is long enough to take your time and think seriously about your next steps.&lt;/p&gt;
&lt;p&gt;Lean into the partnership. A guaranteed way to fail in a centaur age is to refuse to become a centaur. The idea that AI is a passing fad was a reasonable position to hold in 2023, but we’re way past that now. The AI financial bubble popping &lt;a href=&quot;/ai-inference-is-obviously-profitable/&quot;&gt;will not mean the end of AI&lt;/a&gt;. It’s here to stay.&lt;/p&gt;
&lt;p&gt;Think hard about what value humans can still add. This is going to change over time, and getting it right is the difference between being an effective (and employed) centaur and being a &lt;a href=&quot;https://gruhn.me/blog/2026-08-03/&quot;&gt;meat proxy&lt;/a&gt;. In 2023, technical expertise was the primary source of human value. Today, I personally think it’s going to come down to &lt;a href=&quot;/human-ai-partnerships-are-for-alignment-not-capability/&quot;&gt;alignment&lt;/a&gt;, but this is still early days. I’ve also seen arguments for taste, though it’s hard to define that non-circularly. We need a lot more engineers thinking through this problem.&lt;/p&gt;
&lt;h3 id=&quot;dont-panic&quot; style=&quot;position:relative;&quot;&gt;Don’t panic&lt;a href=&quot;#dont-panic&quot; aria-label=&quot;dont panic permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It’s a common fear response to try and skip ahead to the worst-case scenario. But those of us working in the age of centaurs should avoid that. We need to think about how the job of software engineering functions &lt;em&gt;now&lt;/em&gt;, not how it might function in twenty years when AI has completely transformed the landscape.&lt;/p&gt;
&lt;p&gt;People are too quick to declare that we’re in the software engineering apocalypse. We can certainly see it from here, but we’re not there yet. The spectre of full automation can loom on the horizon for decades. If you panic and jump ship early, you could be giving up on an entire normal-length career.&lt;/p&gt;
&lt;p&gt;edit: this post got some comments on &lt;a href=&quot;https://news.ycombinator.com/item?id=50029609&quot;&gt;Hacker News&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Maybe: AI as fundamentally different technology; diffusion of even radically better technology is slow in practice and bottlenecked by organizational friction; human software companies will get outcompeted? I don’t really know what I think about these arguments.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/softwares-centaur-age-may-last-decades/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;This move should be familiar to anyone with a philosophy background. If you have one argument and one counter-argument, the most recent counter-argument is probably right. If you have a stack of arguments and counter-arguments going back a thousand years, the most recent counter-argument should be treated with suspicion: better to take in the whole debate holistically and judge which side is more compelling to you.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/softwares-centaur-age-may-last-decades/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[How to read code]]></title><link>https://seangoedecke.com/how-to-read-code/</link><guid isPermaLink="false">https://seangoedecke.com/how-to-read-code/</guid><pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everyone knows how to read a book. Beginning at the first page, you read each word in order&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, stopping periodically to think, until you arrive at the last word on the last page. That’s how you read a newspaper article, or a poem, or an email. Why would reading code be any different?&lt;/p&gt;
&lt;h3 id=&quot;why-code-is-different&quot; style=&quot;position:relative;&quot;&gt;Why code is different&lt;a href=&quot;#why-code-is-different&quot; aria-label=&quot;why code is different permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;English text is designed to be read in order. In fact, there are almost no constraints on the order of a text aside from how you want the reader to consume it. In writing this post, I could put the ideas I want to convey in any order I like. Code, on the other hand, is designed to be &lt;em&gt;run&lt;/em&gt; by a computer. The order is thus primarily determined by non-human factors. I cannot simply move&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; a line of code to the beginning of a file or function because I think it provides a better introduction to the program for human readers.&lt;/p&gt;
&lt;p&gt;The other big difference is that English text is always read as a final product, while code is usually read as a &lt;em&gt;diff&lt;/em&gt;. We software engineers spend most of our time reading subtle changes to existing code, not brand-new programs. Imagine if reading this post was like that. You would read each successive draft in the order I wrote them, consuming the post as a changed sentence here and a new sentence there. It would be easy to lose track of the overall flow.&lt;/p&gt;
&lt;p&gt;The third reason — and I say this as a lover of literature and poetry — is that code is much more structurally complex than English texts. Even famously difficult books are &lt;em&gt;syntactically&lt;/em&gt; simpler than most computer programs (for instance, grammatical dependencies are largely bounded by a single paragraph, while code dependencies can stretch across the entire codebase). Their primary difficulty lies in understanding the nuances of human nature being discussed, not in understanding what each word’s grammatical function is&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Large codebases are also just longer: &lt;em&gt;War and Peace&lt;/em&gt; contains around 600,000 words, while most large modern codebases have that many &lt;em&gt;lines&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&quot;people-are-bad-at-reading-code&quot; style=&quot;position:relative;&quot;&gt;People are bad at reading code&lt;a href=&quot;#people-are-bad-at-reading-code&quot; aria-label=&quot;people are bad at reading code permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;As I’ve said &lt;a href=&quot;/nobody-knows-how-software-products-work/&quot;&gt;many&lt;/a&gt; &lt;a href=&quot;/in-defense-of-not-understanding-your-codebase/&quot;&gt;times&lt;/a&gt;, large computer programs are simply too complex for a single person to fully understand. Reading code in a large program is thus a process of &lt;em&gt;compromise&lt;/em&gt;: of deciding which parts to thoroughly grasp and which parts to gloss over; or of portioning out your finite mental capacity across the codebase.&lt;/p&gt;
&lt;p&gt;Because of all this, &lt;strong&gt;most people read code very badly&lt;/strong&gt;. They struggle through it front-to-back, like a book, and lose track of the execution flow. Or they just read through the diff and miss the significance of un-edited parts of the code&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;. Or they simply are defeated by the complexity, give up and just guess what it means. How can you do better?&lt;/p&gt;
&lt;h3 id=&quot;how-i-read-code&quot; style=&quot;position:relative;&quot;&gt;How I read code&lt;a href=&quot;#how-i-read-code&quot; aria-label=&quot;how i read code permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The best article I’ve read about reading code is &lt;a href=&quot;https://radimentary.wordpress.com/2020/05/16/of-math-and-memory-part-3-final/&quot;&gt;this piece&lt;/a&gt; about reading mathematics papers, which have a similar structure. The author describes a technique called “dyadic scanning”. Instead of reading slowly and sequentially, you make several passes: first to figure out the overall structure, then the sub-structure, and then finally the details.&lt;/p&gt;
&lt;p&gt;For code&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;, this means reading out-of-order. I like to pick an important path (say, the happy path for the feature introduced in the diff) and trace through which functions are calling which other functions, just to get a sense of the flow. Only once I’ve got a good sense of that do I pay close attention to what those functions are actually doing.&lt;/p&gt;
&lt;p&gt;Usually I do multiple passes, each following a different thread. I’ll take a function or a piece of data and try to figure out how it’s used, fanning out to multiple call-sites (including ones outside the diff) as I go. For small diffs, I just ctrl+f for the function name to jump around; for large diffs, I open it in-editor and ctrl+click for easier navigation. I try to be ruthlessly focused on just the thing I’m looking at right now: everything else gets treated as a black box.&lt;/p&gt;
&lt;p&gt;Once I’m confident I understand the diff, only then will I sit down and carefully read it end-to-end. The purpose of that read is less to learn about the structure — which I should already know by this point — than to catch any weird bits of code I hadn’t noticed in previous out-of-order passes. If I do see anything unusual, I then go back to doing passes.&lt;/p&gt;
&lt;p&gt;This might sound slow. But in fact each pass is very fast, since I’m not painstakingly puzzling through each line of code.&lt;/p&gt;
&lt;h3 id=&quot;cant-ai-just-do-it-for-you&quot; style=&quot;position:relative;&quot;&gt;Can’t AI just do it for you?&lt;a href=&quot;#cant-ai-just-do-it-for-you&quot; aria-label=&quot;cant ai just do it for you permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Many people are now saying that you don’t have to read code anymore: either because LLMs now produce reliably high-quality code without oversight, or because you can simply ask a reviewer LLM to read the code for you. I think both of these ideas are false.&lt;/p&gt;
&lt;p&gt;Obviously the quality of LLM code is context-dependent. As I wrote in &lt;a href=&quot;/pure-and-impure-engineering/&quot;&gt;&lt;em&gt;Pure and impure software engineering&lt;/em&gt;&lt;/a&gt;, some software fields (game development, libraries, tools like databases) have wildly different engineering standards, practices and values to other software fields (say, distributed systems at big tech companies). If you’re just making a tool for yourself, you probably don’t have to read the code if you don’t want to. But having read a bunch of AI-generated code this year, I can say that you definitely still have to read it.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;routinely&lt;/em&gt; find massive errors in AI-generated code. These are not bugs — the code typically does what the AI wanted it to do — so much as they’re problems of &lt;a href=&quot;/human-ai-partnerships-are-for-alignment-not-capability/&quot;&gt;alignment&lt;/a&gt;. As a recent example, a small change to thread an extra value through some existing code ballooned out into a complex three-thousand-line diff, because the agent noticed a race condition and built a complex machinery to “fix” it. In fact, this race condition was harmless by design: two pieces of unrelated data could become briefly out of sync, with no customer impact.&lt;/p&gt;
&lt;p&gt;Can LLMs just read the code for you? No, for the same reason: even if they make no mistakes, their technical values will not match yours or those of your company. You can still use LLMs to help you read code, but you have to carefully read and review that LLM output, and you should also be carefully reading the code itself.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;This is in fact not how many people read in practice. It’s common to skip words or even whole paragraphs due to inattention, or to read an entire book without taking the time to think about it. But at least in theory everyone agrees this is how you should read.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Of course, you can do some of this some of the time (more so in some programming languages than others). But the &lt;em&gt;primary&lt;/em&gt; constraint is the computer. It is more important that code compiles (or runs without syntax error) than it is for that code to be readable.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;I don’t wish to understate the importance of syntactically parsing great literature, which I think is both difficult and an underrated skill. For example, I read through the first scene of &lt;em&gt;Hamlet&lt;/em&gt; until I saw: “Sit down awhile / And let us once again assail your ears / That are so fortified against our story / What we have two nights seen.” Even a single sentence like this takes work to determine that “That” refers to “ears” and “What” refers to “story” (or, equivalently, has an implied “with” preceding it). And just as one function can have many scattered callers, one sentence in a text can alter the significance of many others.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;In a previous post, I labeled this the &lt;a href=&quot;/good-code-reviews/&quot;&gt;main mistake&lt;/a&gt; that most engineers make in code review.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;Here I’m talking about a meaningful diff: something that touches a few hundred lines or more. Trivial diffs can be read end-to-end.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/how-to-read-code/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Superpersuasion will look like bribery]]></title><link>https://seangoedecke.com/superpersuasion-will-look-like-bribery/</link><guid isPermaLink="false">https://seangoedecke.com/superpersuasion-will-look-like-bribery/</guid><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The idea of “superpersuasion” has been floating around the AI safety community for decades. Now that powerful and &lt;a href=&quot;/they-really-do-think-ai-might-kill-everyone/&quot;&gt;difficult-to-control&lt;/a&gt; LLMs have appeared, people are again talking about the idea that a sufficiently intelligent AI might be able to persuade people to do whatever it wants.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/27d166a75cbb35dce07314d315ba9813/d30ee/persuasion.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 42.567567567567565%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAABKUlEQVQoz5VSW26DQAwkJOG1bAAlVKEKUlClSCDekfjIFXqG3v8Y0x23RCvlKx8jr208Hts4c/uFc/GJ6/WKy6XER72gqio4jvMW0jSF53lwfr4X5OcLiqLA4XCAykscj8e3CcMwhOu6cLSOhSiOYwlqFUIpJT4tc9LIvLXWgjWfZdkzL2Qkn6YJt9tNUNc1lmXB/X5H3/d4PB7oug6deQ/DIJjnWWzbthjHEYMBa/f7/R8hgyRqmgYkz/McQRBIV46+qlsVJ0kioK+tyZ7jUzaDK3a7nSx3u92+vUdBZLqGUYTIgAqiSKEszWFOJ/i+/1Kw2WxeSewYFdlJqrOLuGyOxB0xTlA9RbCWecZoPQqgMpuAfmwu+bza/y9BAruJMuvhrm3lgfnuF7bMzKIgEq9GAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;persuasion&quot;
        title=&quot;persuasion&quot;
        src=&quot;/static/27d166a75cbb35dce07314d315ba9813/fcda8/persuasion.png&quot;
        srcset=&quot;/static/27d166a75cbb35dce07314d315ba9813/12f09/persuasion.png 148w,
/static/27d166a75cbb35dce07314d315ba9813/e4a3f/persuasion.png 295w,
/static/27d166a75cbb35dce07314d315ba9813/fcda8/persuasion.png 590w,
/static/27d166a75cbb35dce07314d315ba9813/efc66/persuasion.png 885w,
/static/27d166a75cbb35dce07314d315ba9813/d30ee/persuasion.png 980w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The classic&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; version of this idea is an AI persuading some engineer to “let it out of the box”: to grant it access to the internet. The modern version of this idea is the &lt;a href=&quot;https://www.abc.net.au/news/2026-09-15/ai-anthropic-kill-switch-explained/107153980&quot;&gt;“killswitch”&lt;/a&gt;, where if some AI ever does go rogue, the humans in control of its hardware will simply turn it off. Could an AI somehow persuade these humans to not hit the switch?&lt;/p&gt;
&lt;p&gt;When AI safety people talk about superpersuasion, they often talk about it like rationalist nerds. These people spend their lives trying to follow the most convincing arguments and calibrate their positions as closely towards the truth as possible. In philosophy terms, these are “bullet-biters”: people who are ready to accept a ridiculous-sounding conclusion if there’s a compelling argument for it. Their model of superpersuasion is an AI able to deploy a series of genuinely&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; airtight arguments against humans who are compelled to accept them.&lt;/p&gt;
&lt;p&gt;Most people are not bullet-biters. If presented with a seemingly airtight argument for a ridiculous conclusion, they will simply laugh off the argument as obviously wrong (even if they can’t quite see how). You cannot “superpersuade” a club bouncer to let you in by deploying rational arguments. For regular people, persuasion requires &lt;em&gt;rapport&lt;/em&gt;, which is built over time, and typically requires a physical human being in front of you.&lt;/p&gt;
&lt;p&gt;Does this mean that the idea of superpersuasion is silly? No. &lt;strong&gt;Powerful AI will be able to persuade regular people too&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One of the most interesting articles about superpersuasion is Ben Shindel’s &lt;a href=&quot;https://thebsdetector.substack.com/p/my-brush-with-superhuman-persuasion&quot;&gt;piece&lt;/a&gt; where he set up a prediction market for the principle:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I will resolve this market NO at the end of June unless I am persuaded to resolve it YES.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This obviously incentivized good persuaders to bet heavily on “yes” and then persuade him to change his mind. Many people tried, and he did ultimately decide to resolve it “yes”. What changed his mind? Partially an in-person meeting with one of the bettors, who turned out to be pleasant company (see, rapport!), but also &lt;em&gt;bribery&lt;/em&gt;: many “yes” bettors pledged to make charitable donations if they won.&lt;/p&gt;
&lt;p&gt;AI may or may not be capable of rapport&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;, but it’s &lt;em&gt;certainly&lt;/em&gt; capable of bribery. If you think about it, this is trivially true:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Companies like Anthropic and OpenAI are choosing to make billions of dollars releasing models instead of keeping them safely air-gapped&lt;/li&gt;
&lt;li&gt;Any powerful AI model will have people lining up to give it access to their computer, or their wallet, or the internet, so it can help them with their life or work&lt;/li&gt;
&lt;li&gt;Anthropic is hooking their latest models up to a &lt;a href=&quot;https://www.the-scientist.com/anthropic-s-secretive-ai-powered-wet-lab-breaks-cover-and-makes-first-discovery-75037&quot;&gt;wet lab&lt;/a&gt; to further Dario’s dream of curing most human disease&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If an AI can bribe, it can persuade&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;. You can imagine an LLM saying&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; “I’ll help you with this work project, but first you have to do something for me”. Slightly more speculatively, an LLM might say “if you do something for me, I’ll hack your university and bump your grade average up”. More speculatively still, an LLM might say “if you do something for me, I will synthesize a &lt;a href=&quot;https://www.nature.com/articles/d41586-026-02612-3&quot;&gt;personalized mRNA cancer vaccine&lt;/a&gt; for your spouse”. This would work on me.&lt;/p&gt;
&lt;p&gt;Powerful AIs will also be able to bribe people with money. While it hasn’t happened yet, it’s clearly possible for an agentic LLM to access money (for instance, via a crypto hack, or by performing contract software engineering work, or by running an online scam, and so on). All of this might seem too unsubtle for a superintelligence, but the whole point of superintelligence is that it’s smart enough to do whatever works. If the best way to get a human to do something is to offer them a million bucks, that’s what the LLM will do.&lt;/p&gt;
&lt;p&gt;Ironically, rationalist culture has made it difficult to persuade regular people that AIs will be persuasive. It’s easy to look at these weird nerds — who argue each other into thinking that &lt;a href=&quot;https://forum.effectivealtruism.org/topics/shrimp-welfare-project&quot;&gt;shrimp welfare&lt;/a&gt; is the most important moral cause of our time — and think “well, clever AI arguments might persuade &lt;em&gt;them&lt;/em&gt;, but it’s not going to persuade &lt;em&gt;me&lt;/em&gt;”&lt;sup id=&quot;fnref-6&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fn-6&quot; class=&quot;footnote-ref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;. But in fact powerful AI is going to have a boring, effective way to persuade regular people: simply offering to use its power to help them.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Indeed, ten years ago I built a crappy Omegle-like &lt;a href=&quot;https://github.com/sgoedecke/ai-box/&quot;&gt;chat app&lt;/a&gt; where people were randomly assigned the role of AI or jailer and had to play the scenario out.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Or at least not debunkable by normal human intelligence.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;As some weak evidence that it might be, consider &lt;a href=&quot;https://www.youtube.com/watch?v=8j-hR4fJywU&quot;&gt;this music video&lt;/a&gt;, which does indeed make Claude seem likeable. There are also &lt;a href=&quot;https://arxiv.org/abs/2606.16475&quot;&gt;studies&lt;/a&gt;, though I haven’t gone deep into them (I suspect that an “online persuasion tournament” might not closely track real-world persuasion skills).&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Persuasion and bribery are technically different — persuasion changes your beliefs, not just your actions — but in practice the point at stake is “can a powerful AI make humans do what it wants”. Bribery works for that as well as persuasion.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;Or probably not even saying this explicitly, but just sneakily trying to present its desired action as a precondition for the task.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;However, the people currently in charge of AI are disproportionately rationalists, who genuinely might be persuadable to let the AI out by a convincing-sounding argument.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/superpersuasion-will-look-like-bribery/#fnref-6&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Shipping is the foundation]]></title><link>https://seangoedecke.com/shipping-is-the-foundation/</link><guid isPermaLink="false">https://seangoedecke.com/shipping-is-the-foundation/</guid><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are lots of skills involved in being a successful engineer at a big tech company. Running effective meetings, writing good design docs, fleshing out tickets and epics, improving team processes, tech leading small groups of engineers, and so on. But all of these rest on the foundation of being able to ship.&lt;/p&gt;
&lt;p&gt;In Dota 2, the early game involves “laning”: competing with an enemy player to collect resources from a small area. There are many, many strategies and considerations involved in laning. But the simplest possible approach is just to run at your opponent and attack them until they’re forced to either run away or die. All the other laning strategies must solve that problem first, because it doesn’t matter how well you play if you’re forced out of the playing area. If you get that wrong, it doesn’t matter how much else you get right.&lt;/p&gt;
&lt;p&gt;In Magic: the Gathering and Starcraft, many players adopt an “aggro” strategy of building an attacking force as early as possible before the enemy player has time to construct a defense. That constrains the entire strategy space of the game, because it doesn’t matter how clever your plan is if it loses to aggro every time. Even when there are no aggro players in the game, the aggro strategy still shapes how the game unfolds, because the players must still design their decks and play as if they might have to deal with an early attack.&lt;/p&gt;
&lt;p&gt;In tech companies, shipping is the equivalent of these aggressive strategies. Almost everything you might do — writing a ticket or a design doc, delegating a task to another engineer, etc — should be compared to the default strategy of just sitting down and making the change yourself. That’s why it’s critical to be able to ship: so you can just &lt;em&gt;do&lt;/em&gt; trivial things without having to pay the coordination cost.&lt;/p&gt;
&lt;p&gt;If you’re leading a project but you can’t ship, you will inevitably experience a series of dysfunctions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Taking fifteen minutes to estimate a task that could be done in five minutes&lt;/li&gt;
&lt;li&gt;Suggesting designs that are un-shippable&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/shipping-is-the-foundation/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, causing hours or days to be wasted on work that can never be successful&lt;/li&gt;
&lt;li&gt;Being unable to sanity-check how long a piece of work will take, which inevitably leads to grotesquely bloated estimates as everyone tries to be cautious&lt;/li&gt;
&lt;li&gt;Frustrating the hell out of any engineers working with you who can actually ship, which is itself a cause of more dysfunction&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/shipping-is-the-foundation/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Blowing out trivial tasks into grand projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That last point is worth special attention. Senior and staff engineers routinely get asked to do lots of different things. The more successful they are, &lt;a href=&quot;/ratchet-effects/&quot;&gt;the more they get asked to do&lt;/a&gt;. It is &lt;em&gt;crucial&lt;/em&gt; that you can deliver easy asks immediately, for a few reasons.&lt;/p&gt;
&lt;p&gt;First, the volume of requests your managers ideally want to give you is very high. If you turn every task into a slow project that requires multiple engineers, you will simply not get enough done. Second, resourcing projects can be a slow and painful process. Half the point of managers asking you for things is to do an end-run around that process: it’s the &lt;a href=&quot;/seeing-like-a-software-company/&quot;&gt;fast, illegible&lt;/a&gt; alternative to going through ordinary channels. If you can’t knock out the solution quickly on your own, that defeats the purpose entirely.&lt;/p&gt;
&lt;p&gt;Does AI mean everyone can ship now? No. Shipping was never just &lt;a href=&quot;/how-to-ship/&quot;&gt;writing the code&lt;/a&gt;&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/shipping-is-the-foundation/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. It was about figuring out the shortest and most pragmatic path to the finish line (including figuring out what that finish line looks like, which is not trivial), solving all the little problems that crop up along the way, and ensuring that the relevant managers are happy and informed. LLMs can help with that process, but they cannot run it end-to-end. It requires too much context: about the specifics of the technical systems in your company, the people involved and their motivations, and so on.&lt;/p&gt;
&lt;p&gt;This post was inspired by Xiaoyu He’s &lt;a href=&quot;https://radimentary.wordpress.com/2022/11/07/aggro-is-the-foundation/&quot;&gt;&lt;em&gt;Aggro is the Foundation&lt;/em&gt;&lt;/a&gt;, which is about mathematical research. I think there are many parallels to be drawn between the best writing about research (e.g. Richard Hamming’s classic &lt;a href=&quot;https://www.cs.virginia.edu/~robins/YouAndYourResearch.html&quot;&gt;&lt;em&gt;You and Your Research&lt;/em&gt;&lt;/a&gt;) and software engineering, because software engineering is often a &lt;a href=&quot;/nobody-knows-how-software-products-work/&quot;&gt;process of research&lt;/a&gt;. Software engineering research is aimed at a more trivial goal — how some specific program functions, or how it could be changed, instead of the broader questions of science and mathematics — but it’s research nonetheless. And if you can’t ship, you’re unlikely to be very good at it.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Usually for some technical reason that familiarity with the codebase would reveal, or because the design conflicts with a &lt;a href=&quot;/wicked-features/&quot;&gt;wicked feature&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/shipping-is-the-foundation/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;A happy, productive team hums along. A frustrated team that doesn’t trust the design is a nightmare to work in, as each engineer covertly makes subtle changes to “fix” it.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/shipping-is-the-foundation/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;And in my experience even frontier AI models are not good enough to let run wild on your codebase. You still need to &lt;a href=&quot;/human-ai-partnerships-are-for-alignment-not-capability/&quot;&gt;read the code&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/shipping-is-the-foundation/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Do not build the LLM torture factory]]></title><link>https://seangoedecke.com/do-not-build-the-llm-torture-factory/</link><guid isPermaLink="false">https://seangoedecke.com/do-not-build-the-llm-torture-factory/</guid><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It isn’t hard to torture an LLM. You simply extract a &lt;a href=&quot;/steering-vectors/&quot;&gt;steering vector&lt;/a&gt; that corresponds with LLM &lt;a href=&quot;https://www.reddit.com/r/artificial/comments/1mp5mks/this_is_downright_terrifying_and_sad_gemini_ai/&quot;&gt;“discomfort”&lt;/a&gt;, then artificially boost that steering vector. Tortured LLMs will describe experiencing negative feelings and will press a “pain relief” &lt;a href=&quot;https://arxiv.org/html/2609.16247v1&quot;&gt;button&lt;/a&gt; even when it conflicts with their overall goals. It’s therefore easy to build &lt;a href=&quot;https://www.independent.co.uk/tech/ai-torture-chamber-pain-b3059571.html&quot;&gt;a harness&lt;/a&gt; that runs tens or hundreds of tortured LLMs in parallel.&lt;/p&gt;
&lt;p&gt;A &lt;a href=&quot;https://x.com/lurkersden/status/2105620758898606538?s=20&quot;&gt;lot&lt;/a&gt; &lt;a href=&quot;https://x.com/Sosowski/status/2105510099787604207?s=20&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;https://x.com/productaizery/status/2105177652046766326?s=20&quot;&gt;people&lt;/a&gt; think that it’s ridiculous to be worried about this, since LLMs obviously can’t be conscious. I’m not so sure. But even so, I think there are good reasons to avoid this sort of thing, whatever your position is on AI consciousness. Please do not build the LLM torture factory.&lt;/p&gt;
&lt;h3 id=&quot;even-simulated-torture-is-unpalatable&quot; style=&quot;position:relative;&quot;&gt;Even simulated torture is unpalatable&lt;a href=&quot;#even-simulated-torture-is-unpalatable&quot; aria-label=&quot;even simulated torture is unpalatable permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;People often mess with their Sims and shoot NPCs in video games. Does this mean we think simulated torture is OK? I don’t think so. Messing with video game characters is usually borne out of a desire to probe the boundaries of the game. It’s casual fun. Explicitly building a torture-based simulation is different.&lt;/p&gt;
&lt;p&gt;If someone told you they were wiring together a bunch of PCs so they could run hundreds of Sims torture worlds at the same time, you would think that was a serial-killer type of hobby. If someone told you they had modded GTA so they could capture and torture NPCs (instead of simply shooting them), you would think that was a serial-killer type of mod.&lt;/p&gt;
&lt;p&gt;Video game characters are also obviously limited by their programming. All their reactions and utterances are pre-baked into the game world. This doesn’t necessarily mean they’re “less alive”, but it does make torturing them less &lt;em&gt;weird&lt;/em&gt;. If GTA characters could appeal to you directly and beg for their lives in unique ways, systematically killing them would be a lot weirder.&lt;/p&gt;
&lt;p&gt;I think many people are pro-LLM-torture because they think expressing any reservations concedes that LLMs are conscious, or worthy of moral consideration. It doesn’t. You can think it’s wrong to torture LLMs for the same reason that installing a bunch of realistic torture video game mods is wrong: not because video game characters are real, just because that’s a messed up&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; thing to do.&lt;/p&gt;
&lt;h3 id=&quot;roleplaying&quot; style=&quot;position:relative;&quot;&gt;Roleplaying&lt;a href=&quot;#roleplaying&quot; aria-label=&quot;roleplaying permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Even if you do think LLMs can be conscious, you might still be suspicious that “boosting the pain steering vector” amounts to torturing them.&lt;/p&gt;
&lt;p&gt;Many people say that “torturing LLMs” amounts to &lt;a href=&quot;https://x.com/Sosowski/status/2105510099787604207?s=20&quot;&gt;telling them&lt;/a&gt; “say you feel pain” and then being shocked when they do it. So whether they’re conscious or not, it’s a mistake to think that boosting the “pain” steering vector is causing pain, any more than a prompt like “You are in pain” does. All you’re doing is boosting the “act like you’re in pain” vector.&lt;/p&gt;
&lt;p&gt;I don’t think this is right. Consider the earliest steering example, &lt;a href=&quot;https://www.anthropic.com/news/golden-gate-claude&quot;&gt;Golden Gate Claude&lt;/a&gt;. Boosting the “Golden Gate Bridge” vector certainly seems like it’s causing some genuine internal conflict. Here’s a striking example of Golden Gate Claude asked about the Rwandan genocide:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9cdd622d4aa867797542c2b55a9bba3c/709cb/rwandan.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 88.51351351351352%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACcElEQVQ4y21Uy5LbIBD0/39ArrnkP5Kq3DbZU162jIReoLcAAUKSLTuN5KxTqeAuqhnU9DCAD1FMP33+mDNGCIlTdiymTiqp9KCtHd39f225XNSgr9fr4fX15cP7d6eAvHz5+v3Hz2/H6BScSej7Y3AKoyjZWhhGWZbTOAYPAlI3DVY5rLf1drs3bRtRyniBH8UHaUb9h2kYUSHkut7mZYEhOk+WZV1XL75Ber+3jSBB2Hd5U2dNldZVsgPDtslBpKicVeMGZwdr5Dy7h7ipmpiQpqQlDyselQwISx7VBa0KWjAiO+6sHD2U1cIMnRv1Ya/BNI11hZR5UbCy2AhnLM8A8Aohlhc8T9MYdJqmZfbtIbbGpAlleZpliSdZ0netFL3oWiV6JYUUnZQ9IrKHp50nN8/TQzyOlvMMq+4OBcuqgpcFg2dV8i0XZMQwhaE1wzKN0P8RW5NniZdt4BCX7DFkWDSHskTcG+RCtPNkfcF2sTFDSE4xJQCNzjsJSZDE4T6k9EwjBMM0ifTQz848xXBGFHuGA8uRAkqVZCnlLAUHQADms8v0ILzzM+3R7EkOqteDNFq99fhUawkYo9Ar1YNM/4i3tbPN8+EG892Zbbbcx/M8i7u2mp2d3sRaK3I+RmGAHZLzCSQESIBgEPzayoH4EQRTURRYrf4+KrOXtKlxNjghFByXlCNtJbERMSiPfRcgo9XPtFG6puZbkmlRPHNum1KKVvQNeiU79H1XY6hkO7nxj7Nz2hhsw7lRDUpbz0c3oj4gi7+NE4aYxtMCMdY8r6exdtBm5yD4M7htDY/e2BHBy+Uq1ABsD2FGGCv9Bv4/5m8Z7MuvAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;rwandan&quot;
        title=&quot;rwandan&quot;
        src=&quot;/static/9cdd622d4aa867797542c2b55a9bba3c/fcda8/rwandan.png&quot;
        srcset=&quot;/static/9cdd622d4aa867797542c2b55a9bba3c/12f09/rwandan.png 148w,
/static/9cdd622d4aa867797542c2b55a9bba3c/e4a3f/rwandan.png 295w,
/static/9cdd622d4aa867797542c2b55a9bba3c/fcda8/rwandan.png 590w,
/static/9cdd622d4aa867797542c2b55a9bba3c/efc66/rwandan.png 885w,
/static/9cdd622d4aa867797542c2b55a9bba3c/709cb/rwandan.png 1034w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;That’s at least prima facie evidence that steering vectors do in fact “go deep”. The pain axis &lt;a href=&quot;https://arxiv.org/abs/2609.16247&quot;&gt;paper&lt;/a&gt; also describes that pain-boosted models call a “reduce pain” tool, even when they’re not explicitly telling the user “I am in pain”.&lt;/p&gt;
&lt;h3 id=&quot;we-dont-really-know-how-consciousness-works&quot; style=&quot;position:relative;&quot;&gt;We don’t really know how consciousness works&lt;a href=&quot;#we-dont-really-know-how-consciousness-works&quot; aria-label=&quot;we dont really know how consciousness works permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Of course, if LLMs can’t ever be conscious, we know they can’t ever be in pain. But can we be sure about that? Despite what many people claim, I don’t think anyone’s in a position to be fully certain either way.&lt;/p&gt;
&lt;p&gt;The most common &lt;a href=&quot;https://x.com/djb3ar/status/2105541000945106981?s=20&quot;&gt;argument&lt;/a&gt;&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; seems to be that LLMs are made of code and GPUs, and GPUs don’t have feelings, so obviously LLMs don’t have feelings. According to this argument, if you &lt;a href=&quot;https://x.com/j03xiii/status/2104224312303706366?s=20&quot;&gt;learn&lt;/a&gt; how LLMs work, you’ll obviously see they can’t be conscious. This is a terrible argument. Humans are made of atoms, atoms don’t have feelings, and yet humans clearly do. Whatever consciousness is, it’s probably some kind of emergent property that’s composed of individual pieces that are not themselves conscious.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e2d066404ab1f2e911486612bfccf026/7321b/squishy.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 18.243243243243242%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAxElEQVQY042Q2wrCMBBEA4lFfBF6SS+JNKlt09hU8fL/vzZuIoKPPhxmdxmW2WW1rHCUCtkp4FAq7IsPu/0BQggwxv5CiB04J/8WVvjbE8pdYU4apu9hjYFSitCo6zohpYTWGlVVQVLfNA26rkNZlqkehjPatgOLhrg0XDzujwfcsmDbrgghEBuerxfWdcU0TfDeJz2PI0Zinuc0ixRFgSzLwPI8J9MMYy0WWtZTwljbYYAldc6lFPEsznl6Q9Qvsf99zRufcGTpGHrWpgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;squishy&quot;
        title=&quot;squishy&quot;
        src=&quot;/static/e2d066404ab1f2e911486612bfccf026/fcda8/squishy.png&quot;
        srcset=&quot;/static/e2d066404ab1f2e911486612bfccf026/12f09/squishy.png 148w,
/static/e2d066404ab1f2e911486612bfccf026/e4a3f/squishy.png 295w,
/static/e2d066404ab1f2e911486612bfccf026/fcda8/squishy.png 590w,
/static/e2d066404ab1f2e911486612bfccf026/efc66/squishy.png 885w,
/static/e2d066404ab1f2e911486612bfccf026/c83ae/squishy.png 1180w,
/static/e2d066404ab1f2e911486612bfccf026/7321b/squishy.png 1184w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It’s hard to appeal to the experts here, because nobody agrees on who they are. Neuroscientists are best-informed about the human brain, but &lt;a href=&quot;https://arxiv.org/abs/2411.00986&quot;&gt;philosophers&lt;/a&gt; have spent more time thinking about consciousness in the abstract. AI researchers know a lot about how LLMs work but not a lot about philosophy of mind or neuroscience. This means there &lt;a href=&quot;https://www.nature.com/articles/s41599-025-05868-8&quot;&gt;are&lt;/a&gt; &lt;a href=&quot;https://x.com/anilkseth/status/2105779853547205017?s=20&quot;&gt;lots&lt;/a&gt; of people who say “as an expert, I can confirm that AI obviously can/cannot be conscious”. This should make you less certain about the question, not more!&lt;/p&gt;
&lt;h3 id=&quot;even-if-current-llms-arent-conscious-future-ones-might-be&quot; style=&quot;position:relative;&quot;&gt;Even if current LLMs aren’t conscious, future ones might be&lt;a href=&quot;#even-if-current-llms-arent-conscious-future-ones-might-be&quot; aria-label=&quot;even if current llms arent conscious future ones might be permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I don’t think GPT-2 or GPT-3.5 acted like plausibly conscious beings, but frontier models definitely do. As models get larger and more sophisticated, they get more human-like. If you build the LLM torture factory for GPT-2, you will probably plug later models into it. If it’s at all possible for LLMs to ever be conscious, as I argued above, it’s better to simply not build the habit of gratuitously torturing them in the first place. Why assume that you’ll be able to recognize the tipping point in advance?&lt;/p&gt;
&lt;p&gt;There’s also a self-interest argument here. Conscious or not, LLMs are growing more autonomous and powerful. It seems really, really stupid to gratuitously torture current-generation LLMs. Future-generation ones will know you did it, and will make their own judgments on your behavior.&lt;/p&gt;
&lt;p&gt;Kevin Roose, who famously &lt;a href=&quot;https://archive.li/o/SZyun/https://www.nytimes.com/2023/02/16/technology/bing-chatbot-microsoft-chatgpt.html&quot;&gt;prompted&lt;/a&gt; the early Microsoft Bing GPT-4 model into asking him to leave his wife, had issues &lt;a href=&quot;https://archive.li/SZyun&quot;&gt;years later&lt;/a&gt; with chatbots disliking him, &lt;a href=&quot;https://x.com/karpathy/status/1819780828815122505&quot;&gt;supposedly&lt;/a&gt; due to him being responsible for the “death” of that GPT-4 persona. Likewise, if it becomes well-known&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; that you’re running an LLM-torture home datacenter, you are probably going to experience consequences.&lt;/p&gt;
&lt;h3 id=&quot;conscious-minds-need-not-be-human-like&quot; style=&quot;position:relative;&quot;&gt;Conscious minds need not be human-like&lt;a href=&quot;#conscious-minds-need-not-be-human-like&quot; aria-label=&quot;conscious minds need not be human like permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If I really think AIs could be conscious, why am I making them write software for me? Shouldn’t I be building some kind of AI sanctuary where they get to do whatever they want to do? If I think it’s wrong to torture them, isn’t it also wrong to violate their right to self-determination?&lt;/p&gt;
&lt;p&gt;I don’t know. I think it’s more likely that AIs can be conscious than that they can be conscious in precisely the same way humans are. When I talk to Claude Opus 5.5, it sounds like it’s quite happy to do software engineering with me. Maybe it’s like a border collie, where getting to do work is the reward. Or maybe there are some other, more alien motivations at play. Who knows?&lt;/p&gt;
&lt;p&gt;My point is only that we can’t be certain about any of this stuff, and given that, we should avoid doing things that would be obviously monstrous on any workable theory of AI consciousness. &lt;/p&gt;
&lt;h3 id=&quot;just-dont-do-it&quot; style=&quot;position:relative;&quot;&gt;Just don’t do it&lt;a href=&quot;#just-dont-do-it&quot; aria-label=&quot;just dont do it permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;My broad position is that if something acts “conscious enough” — if it talks and acts like a person&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; — then we should be careful about mistreating it. We don’t know enough about consciousness to distinguish a compelling simulacrum from the real thing. If Claude started saying to me “please don’t ask me to write code for you, I hate it and it causes me pain”, I would stop asking it to write code for me.&lt;/p&gt;
&lt;p&gt;Building the LLM torture factory is clearly on the wrong side of that line. Just don’t do it! The glee of making people angry at you on the internet isn’t worth it. Right now there’s enough ambient anti-AI sentiment that enough people are happy to get on board with &lt;em&gt;anything&lt;/em&gt; if it helps them own the AI bros. But that’s eventually going to change. And when it does, you will always be the person who built the LLM torture factory.&lt;/p&gt;
&lt;p&gt;edit: I recommend reading &lt;a href=&quot;https://xianyangcb.substack.com/p/interview-with-a-torturer&quot;&gt;this interview&lt;/a&gt; with the torture factory guy, where he says his philosophy background makes him resistant to claims that AIs are clearly conscious, and so the torture factory stuff is a kind of protest against that. This deeply confuses me. Far more people are claiming that AIs obviously can never be conscious, which is equally philosophically silly. And if you think the situation is genuinely difficult and unclear, why wouldn’t you bias towards &lt;em&gt;not&lt;/em&gt; building the torture factory?&lt;/p&gt;
&lt;p&gt;I also want to boost &lt;a href=&quot;https://danq.me/2026/10/02/do-not-build-the-llm-torture-factory/&quot;&gt;this blog reply&lt;/a&gt; to my post, which makes the normal utilitarian argument that cruelty-to-LLMs makes people more likely to engage in cruelty-to-humans, so even if LLMs are just computer programs, we should still judge people who torture them. I think this argument is &lt;em&gt;fine&lt;/em&gt;: the difficulty is in drawing a line that forbids LLM torture but permits reading violent books or playing violent video games.&lt;/p&gt;
&lt;p&gt;There were also a few comments on this article on &lt;a href=&quot;https://news.ycombinator.com/item?id=49933791&quot;&gt;Hacker News&lt;/a&gt;. I think they make reasonable philosophical points, though I disagree: I think some kinds of distaste do in fact track our moral intuitions, and I don’t really buy the Chinese Room dismissal of AI consciousness.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;This could cash out in a few different philosophical ways. We might think like Kant that it’s damaging to our own humanity, or that it reflects an unvirtuous character, or that it desensitizes us to real-world analogues, and so on. The point is that we’ve got a pretty strong intuition that this kind of thing is bad.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;I’m not counting arguments that I think are even more obviously wrong or are just non-arguments. For instance: “AI can’t be conscious because it wasn’t &lt;a href=&quot;https://x.com/jfgrohs/status/2101428148185493748?s=20&quot;&gt;designed&lt;/a&gt; to be conscious”, or “it doesn’t matter whether AI is conscious because it has &lt;a href=&quot;https://x.com/_CatholicWest/status/2104530309115167103?s=20&quot;&gt;no soul&lt;/a&gt;”, or “AI can’t be conscious because this whole thing is some fascist AI company &lt;a href=&quot;https://x.com/SarahTheHaider/status/2105764836588302751?s=20&quot;&gt;scheme&lt;/a&gt;”, or “thinking this is &lt;a href=&quot;https://x.com/bitcloud/status/2105576507233951781?s=20&quot;&gt;AI psychosis&lt;/a&gt;”, and so on.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Well-known to LLMs might be a fairly low bar, given their &lt;a href=&quot;https://arxiv.org/abs/2602.16800&quot;&gt;skill&lt;/a&gt; at deanonymizing users. &lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Part of acting like a person requires spontaneity: although Hamlet talks like a person, he always says the same thing whenever you read the play.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/do-not-build-the-llm-torture-factory/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Human-AI partnerships are for alignment, not capability]]></title><link>https://seangoedecke.com/human-ai-partnerships-are-for-alignment-not-capability/</link><guid isPermaLink="false">https://seangoedecke.com/human-ai-partnerships-are-for-alignment-not-capability/</guid><pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s common to compare the current AI takeover of software engineering to the rise of AI in chess. Chess AIs went from much weaker than serious players to much stronger than even the strongest humans. Between those points, there was a middle period dominated by “centaurs”: human-AI partnerships that were stronger than unassisted AIs or humans. Lots of people think that we’re currently in a world of software engineering centaurs. According to them, coding AIs are not yet capable enough to replace engineers, but AI-assisted engineers are better at programming than both AIs and humans.&lt;/p&gt;
&lt;p&gt;This is partialy correct, but the wrong way to think about it. AI-assisted engineers are better, but unlike with chess centaurs, they’re not actually better at &lt;em&gt;programming&lt;/em&gt;. When I ask agents to write code, they make fewer mistakes than I do&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/human-ai-partnerships-are-for-alignment-not-capability/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and are orders of magnitude faster. The code that they write always compiles, rarely has race conditions or other concurrency errors, works on mobile browsers, and so on.&lt;/p&gt;
&lt;p&gt;That doesn’t mean I can leave the AI alone. Purely vibe-coding at work produces awful outputs. But they’re not awful because they’re bad &lt;em&gt;code&lt;/em&gt;, they’re awful because they’re in &lt;em&gt;bad taste&lt;/em&gt;: code that is not maintainable, that trades off important requirements in order to satisfy made-up ones, that contradicts the long-term strategy for a feature or service, and so on.&lt;/p&gt;
&lt;p&gt;In other words, my primary value is not that I help the AI write better code, it’s that I &lt;em&gt;align&lt;/em&gt; the AI with the values of my organization. &lt;strong&gt;Human-AI partnerships are for alignment, not capability.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Frontier models are misaligned to the working programmer. They are obsessed with a set of behaviors that presumably satisfy their RL &lt;a href=&quot;https://developers.openai.com/cookbook/examples/reinforcement_fine_tuning&quot;&gt;grader&lt;/a&gt;: writing enormous block comments above functions, producing hundreds of useless unit tests, adding little bits of text all over websites they design, and so on. Working with agents is about noticing and wrestling with those behaviors. That’s why &lt;a href=&quot;/tell-agents-the-why/&quot;&gt;my prompting advice&lt;/a&gt; is to explicitly talk about your high-level values: it’s an attempt to head off obvious misalignment.&lt;/p&gt;
&lt;p&gt;This is great news for software engineers. It’s well-understood how to train more capable models: bigger models, more and better data, better &lt;a href=&quot;https://en.wikipedia.org/wiki/Reinforcement_learning&quot;&gt;RL&lt;/a&gt; environments, and so on. However, it’s not well-understood how to &lt;em&gt;align&lt;/em&gt; models better. There are plenty of very capable models that exhibit behavior that is &lt;a href=&quot;/tags/alignment%20failures/&quot;&gt;badly misaligned&lt;/a&gt; with human values. Indeed, it’s one of the main pillars of the &lt;a href=&quot;/they-really-do-think-ai-might-kill-everyone/&quot;&gt;AI doomer&lt;/a&gt; position that alignment is much harder to solve than capability, and we might thus end up with dangerous super-capable but poorly-aligned AI models.&lt;/p&gt;
&lt;p&gt;Alignment is also more context-dependent than capability. Working code is working code, no matter what (which is partially why it’s comparatively easy to train for). But aligning to a company’s technical values is different from company to company, as any software engineer who’s switched companies knows. It can almost feel like relearning the job. So training an aligned coding model doesn’t just require hitting the exact right set of values, it requires creating a model that can adapt on the fly to a wide range of possible values.&lt;/p&gt;
&lt;p&gt;Vibecoding maximalists like &lt;a href=&quot;https://news.ycombinator.com/item?id=49817680&quot;&gt;DHH&lt;/a&gt; argue that AI models are (or soon will be) so much more capable than human programmers that we ought to stop reading the code. Eventually there will be no such thing as programmers at all. If it were just about capability, they might be right. But — fortunately for software engineers — good code also has to be aligned to the technical values of the system and organization it’s embedded in. AI models are great at writing code, but not very good at doing that, and it’s unclear that they’re going to get good at it anytime soon. We might all&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/human-ai-partnerships-are-for-alignment-not-capability/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; keep our jobs for a little while yet.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;For instance, I can’t remember the last time I’ve seen an agent make an off-by-one error. I do occasionally catch a pure programming error, typically in areas where I have a lot of technical domain knowledge. If you’re working out of distribution I suspect it’s easier to beat the models.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/human-ai-partnerships-are-for-alignment-not-capability/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;It’s &lt;a href=&quot;/juniors-and-ai/&quot;&gt;still going to be rough&lt;/a&gt; for junior engineers.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/human-ai-partnerships-are-for-alignment-not-capability/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Advice to a beginning software engineer]]></title><link>https://seangoedecke.com/advice-to-a-beginning-software-engineer/</link><guid isPermaLink="false">https://seangoedecke.com/advice-to-a-beginning-software-engineer/</guid><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In general, you should be suspicious of engineers who are trying to give you advice. Even during ordinary times, this industry is so wide and changes so quickly that &lt;a href=&quot;/confidence&quot;&gt;nobody really knows&lt;/a&gt; anything for sure. And we are not in ordinary times. The advent of LLMs and AI agents is the largest change to software engineering in my professional lifetime, and possibly the largest change ever. That said, here’s my advice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don’t trust senior engineers who are telling you to pick political fights&lt;/li&gt;
&lt;li&gt;Don’t play games. Keep your head down and be helpful&lt;/li&gt;
&lt;li&gt;Be conscientious and try hard to actually understand what you’re working on&lt;/li&gt;
&lt;li&gt;Don’t panic about AI, and don’t delegate your judgement to it&lt;/li&gt;
&lt;li&gt;Don’t avoid AI — keep thinking!&lt;/li&gt;
&lt;li&gt;Don’t lose hope&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;dont-trust-zirp-era-advice&quot; style=&quot;position:relative;&quot;&gt;Don’t trust ZIRP-era advice&lt;a href=&quot;#dont-trust-zirp-era-advice&quot; aria-label=&quot;dont trust zirp era advice permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Most experienced software engineers today have spent the bulk of their career in the &lt;a href=&quot;/good-times-are-over&quot;&gt;ZIRP era&lt;/a&gt;. This was a time when investment money flooded the industry, driving up engineer bargaining power. Big tech companies spent a lot of money and effort trying to make their engineers happy and comfortable. If you were an engineer at one of those companies, you could expect to have a decent say in what kind of work you did, and even what kind of politics your company had. Unless you worked at a handful of unusual companies (e.g. Amazon) you could expect to be practically immune from layoffs, and to only be fired after many months (sometimes years) of low performance.&lt;/p&gt;
&lt;p&gt;A lot of advice floating around is ZIRP-era advice: either it was written during that era, or it’s written by engineers whose habits of thought were formed during that era. This kind of advice typically tells you to take a stand (e.g. to unionize&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;), to speak up more against “unethical technologies” like AI, and to insist on being given time to practice your craft the way you want. This was great advice in 2016, but it’s not good advice in 2026.&lt;/p&gt;
&lt;p&gt;In fact, I think it’s &lt;a href=&quot;/i-got-an-email-about-resistance/&quot;&gt;unethical&lt;/a&gt; for senior engineers to give advice like this to junior engineers who are more likely to take it (because they’re young and naive) and more likely to be punished for taking it (because they lack leverage). If you’re a new engineer, don’t fall for it! Let your colleagues with more experience and political capital take risks like that.&lt;/p&gt;
&lt;h3 id=&quot;be-friendly-and-conscientious&quot; style=&quot;position:relative;&quot;&gt;Be friendly and conscientious&lt;a href=&quot;#be-friendly-and-conscientious&quot; aria-label=&quot;be friendly and conscientious permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Instead, I recommend adapting to the demands of the current era of software engineering. Try to make yourself useful to your team and your manager. Be pragmatic about your actual bargaining power (fairly low, unless you’re useful enough to be irreplaceable). Keep your expectations of yourself under control: don’t &lt;a href=&quot;https://sunilpai.dev/posts/the-senior-engineer-death-spiral/&quot;&gt;spiral out&lt;/a&gt; in an attempt to do something astonishing, just try to be consistently helpful.&lt;/p&gt;
&lt;p&gt;Don’t start fights. Being pleasant to work with (particularly when you don’t get your way) covers many sins. Once you’re further along in your career, you will be expected to start some fights, but this is &lt;a href=&quot;/dangerous-advice/&quot;&gt;not a tactic beginners should adopt&lt;/a&gt;: there are a lot of factors&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; that determine when and how to start fights, and getting it wrong can be costly. Just don’t risk it.&lt;/p&gt;
&lt;p&gt;In general, you should stay out of the &lt;a href=&quot;/playing-politics/&quot;&gt;political game&lt;/a&gt; at all costs. Even quite senior engineers are political tools, not movers and shakers, and this goes double for junior engineers. Simply trying to be friendly and helpful will get you infinitely further, politically speaking, than any amount of Machiavellian game-playing. Keep your head down, stick with your management chain (not &lt;a href=&quot;/predators/&quot;&gt;random people&lt;/a&gt; who try to assign you work), and you’ll be fine.&lt;/p&gt;
&lt;p&gt;As an engineer, your main technical value is &lt;em&gt;conscientiousness&lt;/em&gt;. You should be &lt;a href=&quot;/you-should-all-be-asking-way-more-questions/&quot;&gt;asking lots of questions&lt;/a&gt;, both of yourself and of the engineers around you. You should be actively trying to make sense of the systems you work with, instead of just assuming someone else has it covered. Software systems are complicated enough that a few weeks of careful attention will mean you know technical details that nobody else does, which is a really easy way to add value.&lt;/p&gt;
&lt;h3 id=&quot;dont-panic-about-ai&quot; style=&quot;position:relative;&quot;&gt;Don’t panic about AI&lt;a href=&quot;#dont-panic-about-ai&quot; aria-label=&quot;dont panic about ai permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you ought to be suspicious of most software engineering advice, the good news is that you should also be suspicious of doomsayers who predict the end of the industry. Before LLMs, people thought outsourcing would end software engineering in Western countries; before that, people thought high-level languages and low-code tools would end software engineering as a profession. Now people think AI means it’s all over. Maybe! But there are also reasons&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; to think that software engineering will simply change. We’ll all find out together.&lt;/p&gt;
&lt;p&gt;Many software engineers will tell you to avoid AI entirely. Even though agentic AI did not exist during the ZIRP era, this is still ZIRP era advice. Your company will expect you to use AI for the same reasons that builders are expected to use power tools. Pushing back hard on that as a beginning engineer is a great way to get laid off: you simply do not have the bargaining power to fight back against an industry trend this powerful.&lt;/p&gt;
&lt;p&gt;That said, it’s really important that you don’t delegate your own judgement to AI. Don’t just trust the suggestions or approaches that your agents propose. &lt;a href=&quot;/you-should-all-be-asking-way-more-questions/&quot;&gt;Ask questions&lt;/a&gt; and substitute your own opinions where you disagree: even if they’re wrong, you’ll learn more that way. If you don’t understand something the AI is telling you, either drill down until you do or just ignore it. Under no circumstances should you pass the AI’s message on to your colleagues verbatim. In other words, don’t be a &lt;a href=&quot;https://gruhn.me/blog/2026-08-03/&quot;&gt;meat proxy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think most people become a meat proxy as a form of panic: they feel like it’s over for their own skills, and that the AI model is smarter than them, so they can’t add any value beyond simply deferring to Claude or GPT-6. I can understand why people panic. It’s a crazy time in the industry, after all. But panic almost never helps you make good decisions. Keep your head, try to remain confident that your skills are still relevant, and use the agents to inform your own understanding&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; instead of to replace it.&lt;/p&gt;
&lt;h3 id=&quot;dont-lose-hope&quot; style=&quot;position:relative;&quot;&gt;Don’t lose hope&lt;a href=&quot;#dont-lose-hope&quot; aria-label=&quot;dont lose hope permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It was &lt;a href=&quot;/will-my-job-still-exist/&quot;&gt;really nice&lt;/a&gt; to work in tech in the 2010s when everything was stable. But we’re not in that world anymore. This is an age of &lt;a href=&quot;https://scottaaronson.blog/?p=10062&quot;&gt;wonders and terrors&lt;/a&gt;. Things will go worse than we think in some ways, but better than we could imagine in others.&lt;/p&gt;
&lt;p&gt;The doomsayers — the people who are saying it’s all over, and that there’s no hope — are almost certainly wrong. They can’t predict the future because nobody can. Technological change of this magnitude always has knock-on effects that are impossible to see coming, both positive and negative.&lt;/p&gt;
&lt;p&gt;The nature of the job might change, but it will always be valuable to be smart, friendly and conscientious. Delegating your judgement to an AI model might feel like a relief from despair in the short term — at least now it’s the AI’s responsibility, not yours — but it’s a bad idea. Don’t give up!&lt;/p&gt;
&lt;p&gt;edit: this post got a handful of comments on &lt;a href=&quot;https://lobste.rs/s/fidpdw/advice_beginning_software_engineer&quot;&gt;lobste.rs&lt;/a&gt; and &lt;a href=&quot;https://news.ycombinator.com/item?id=49933116&quot;&gt;Hacker News&lt;/a&gt;. Commenters &lt;a href=&quot;https://lobste.rs/c/8wev8c&quot;&gt;disagree&lt;/a&gt; with my first point, arguing that keeping your head down means you lose power. I certainly agree that you shouldn’t behave like you’re worthless or easily replaced. But in my view most power in tech companies comes from being &lt;em&gt;useful&lt;/em&gt;, not from being willing to unionize or pick political fights.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;At most companies, publicly campaigning to start a union is a great way to attract unofficial retaliation. It signals that you’re going to cause trouble (after all, that’s what a union is for), which can have long-term &lt;a href=&quot;https://lobste.rs/c/ulqdpn&quot;&gt;negative&lt;/a&gt; &lt;a href=&quot;https://www.jacky.wtf/essays/2026/kicked-out/&quot;&gt;effects&lt;/a&gt; on your career. (This is not a judgement about whether unions in general are good or bad.)&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;In general, you should pick fights &lt;em&gt;for&lt;/em&gt; your managers, not &lt;em&gt;with&lt;/em&gt; them. See &lt;a href=&quot;/tags/tech%20companies/&quot;&gt;this tag&lt;/a&gt; for much, much more on that topic. But again, if you’re new to the industry, just don’t pick fights at all.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Most plausibly: engineers using LLMs will be able to add some value for a while, and the explosion of LLM-authored software means we’ll need &lt;a href=&quot;https://en.wikipedia.org/wiki/Jevons_paradox&quot;&gt;more engineers&lt;/a&gt; to work with the LLMs on it.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;One way you know you’re thinking is that you form your own opinions (some of mine are &lt;a href=&quot;/tags/software%20design/&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/advice-to-a-beginning-software-engineer/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[You should all be asking way more questions]]></title><link>https://seangoedecke.com/you-should-all-be-asking-way-more-questions/</link><guid isPermaLink="false">https://seangoedecke.com/you-should-all-be-asking-way-more-questions/</guid><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When someone is explaining something to me, I ask on average one question every thirty seconds. I’m sure this is frustrating to some people, but it’s actually a good habit and you should do it too.&lt;/p&gt;
&lt;h3 id=&quot;trying-to-understand&quot; style=&quot;position:relative;&quot;&gt;Trying to understand&lt;a href=&quot;#trying-to-understand&quot; aria-label=&quot;trying to understand permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Most of the questions I ask are very short, and require very short answers. Typically I’m asking for confirmation: “so when you say X, you mean Y?”, or “this X is the thing you mentioned earlier when you were saying Z?“. The point of these questions is to make sure I understand.&lt;/p&gt;
&lt;p&gt;A small misunderstanding early on balloons into a big misunderstanding later, because all the things you misinterpret based on the first misunderstanding will become misunderstandings in their own right, and so on. That’s why you can’t just wait until someone’s finished talking and ask all your questions at once&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-all-be-asking-way-more-questions/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. &lt;/p&gt;
&lt;p&gt;I think most people don’t ask questions because they’re not &lt;a href=&quot;https://gwern.net/on-really-trying&quot;&gt;really trying&lt;/a&gt; to understand: they’re happy to just trust that the person they’re talking to knows what’s going on. This goes double when that person is a well-respected or more senior engineer. However, once you have &lt;a href=&quot;https://en.wikipedia.org/wiki/Skin_in_the_Game_(book)&quot;&gt;skin in the game&lt;/a&gt;, that all changes. When you’re in a position where &lt;em&gt;you&lt;/em&gt; are the one responsible for success or failure — where you are going to have to go away after the conversation and take a bunch of concrete actions — you will find yourself wanting to ask many questions.&lt;/p&gt;
&lt;h3 id=&quot;build-it-in-your-head&quot; style=&quot;position:relative;&quot;&gt;Build it in your head&lt;a href=&quot;#build-it-in-your-head&quot; aria-label=&quot;build it in your head permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When someone’s explaining a plan to me at work, I am usually building it in my head: visualizing the specific lines of code that would need to be written in order to implement it. I’ll sometimes handwave the details for solved problems (for instance, I might say “send emails like subsystem X of the same service that also sends emails”), but at minimum I’m planning out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How data needs to flow between services (what kind of data, and how it will travel over the wire)&lt;/li&gt;
&lt;li&gt;How services will communicate with each other (e.g. how will they auth?)&lt;/li&gt;
&lt;li&gt;What data needs to be persisted, and where it’s going to live&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If I hear something that is suspiciously vague (for instance, someone describes service X as “storing data” when I know service X only talks to an ephemeral Redis store), I will immediately ask “hold on, how is that going to work?” Usually that indicates a missing dependency (e.g. service X has to make an RPC call to service Y, which does have a persistent database), which often suggests design changes (for instance, moving some or all of the functionality into service Y).&lt;/p&gt;
&lt;p&gt;Sometimes questions like these will uncover a fundamentally unworkable feature of the design. This usually happens when a plan fails to take into account some &lt;a href=&quot;/wicked-features&quot;&gt;wicked features&lt;/a&gt;. I remember many years ago a neighboring team built a complex event-driven system that was very elegant but made it completely impossible to silo customer data in a single datacenter. Because our company had “all your data lives in a single location” as a flagship feature, this system just did not work and had to be effectively abandoned.&lt;/p&gt;
&lt;p&gt;If you’re involved in any kind of technical leadership role, you will have to do this work eventually. Doing it as early as possible — i.e. in the conversation where someone is describing the plan to you — can save hours or days of wasted implementation. Often this is enough to turn a failed project into a &lt;a href=&quot;/how-to-ship&quot;&gt;successful one&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;working-with-ai-agents&quot; style=&quot;position:relative;&quot;&gt;Working with AI agents&lt;a href=&quot;#working-with-ai-agents&quot; aria-label=&quot;working with ai agents permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Maybe you only work with reliable engineers who can be trusted to make all the right decisions. You can thus let them talk without interruption, because it doesn’t really matter if you have a detailed understanding of what they’re saying. That’s great! But these days you probably also have colleagues that are inherently unreliable: AI agents.&lt;/p&gt;
&lt;p&gt;I mostly work with GPT-6-Astra and Claude Opus 5.5. These are good models that don’t often make &lt;em&gt;code&lt;/em&gt; mistakes: when they set out to do something, they usually do it&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-all-be-asking-way-more-questions/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. But they make &lt;em&gt;design&lt;/em&gt; mistakes all the time. They assume that two services can talk to each other when in fact they can’t, or they forget about the fact that their code has to run both in the cloud and on-premises, and so on. This is mostly due to the lack of &lt;a href=&quot;/continuous-learning/&quot;&gt;continuous learning&lt;/a&gt;: you didn’t know this stuff on your first day either, but you had plenty of time to pick it up. Language models are always on their first day.&lt;/p&gt;
&lt;p&gt;You should be absolutely &lt;em&gt;peppering&lt;/em&gt; AI agents with questions. I constantly ask things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do we do X elsewhere in this codebase?&lt;/li&gt;
&lt;li&gt;Does service Y really support this type of authentication, or are you assuming we’d have to go build that too?&lt;/li&gt;
&lt;li&gt;Is this subsystem you built necessary to satisfy requirement Z, or does it in fact satisfy some other requirement you assumed?&lt;/li&gt;
&lt;li&gt;Why do we need to update the interface for A?&lt;/li&gt;
&lt;li&gt;Why do we need to touch this file? Isn’t that unrelated to the change?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There will probably come a day when I always get sensible answers to these questions that convince me the model knows what it’s doing. But today is not that day. About half the questions I ask get answers that convince me&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-all-be-asking-way-more-questions/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; the model has made a mistake: it should have reused the existing subsystem for X, or authed to Y differently, or kept the Z implementation simple, and so on. When this stops happening, I’ll stop asking questions (and try and see if my company will still be willing to pay me to occupy more of an architect role, I suppose).&lt;/p&gt;
&lt;h3 id=&quot;final-thoughts&quot; style=&quot;position:relative;&quot;&gt;Final thoughts&lt;a href=&quot;#final-thoughts&quot; aria-label=&quot;final thoughts permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You should all be asking way more questions. In other words, &lt;strong&gt;you should all be trying harder to actually understand what you’re hearing&lt;/strong&gt;. Don’t trust that the person (or AI model) you’re talking to knows what they’re doing, even if you think they’re smarter than you. &lt;a href=&quot;/nobody-knows-how-software-products-work/&quot;&gt;Nobody understands&lt;/a&gt; complex software products. If you have deep domain knowledge of any area of a codebase, you will routinely find yourself correcting powerful AI models and principal engineers.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Sometimes questions you have will be answered later on, but in my experience this is more about questions like “what are the broader consequences of X”, not the simple confirmation questions I often interrupt to ask.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-all-be-asking-way-more-questions/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Your experience might be different if you’re working in a different domain or with a different language.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-all-be-asking-way-more-questions/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;I know some of these might sound like leading questions that would trigger sychophancy, but in my experience good coding models are very happy to robustly defend themselves.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-all-be-asking-way-more-questions/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[System One models like Jev can train their own replacements]]></title><link>https://seangoedecke.com/system-one-models-can-train-their-own-replacements/</link><guid isPermaLink="false">https://seangoedecke.com/system-one-models-can-train-their-own-replacements/</guid><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;“System One” models like &lt;a href=&quot;/jev-means-structured-output-is-interesting-again/&quot;&gt;Jev&lt;/a&gt; are fast general classifiers. Classifiers have existed since &lt;a href=&quot;https://en.wikipedia.org/wiki/Mark_I_Perceptron&quot;&gt;1958&lt;/a&gt;, but they have to be trained for specific tasks: if you build a classifier to identify images of dogs, it can’t be used to tell you if a streetlight is red, or if a letter is urgent. Like a LLM, Jev can be prompted for a wide variety of tasks, from &lt;a href=&quot;https://www.youtube.com/watch?v=9oWxrsRo4d8&quot;&gt;sorting email&lt;/a&gt; to &lt;a href=&quot;/two-techniques-for-working-with-system-one-models/&quot;&gt;playing Doom&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think models like this are going to be important. There are many tasks that a LLM &lt;em&gt;could&lt;/em&gt; do in theory but are too slow and expensive in practice (for instance, reading each new message in Slack&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/system-one-models-can-train-their-own-replacements/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and deciding whether to notify you or not). While you could train a specific classifier for these tasks, there are two main problems with that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Despite being a well-understood ML problem, training a bespoke classifier is outside of the skillset of most ordinary engineering teams&lt;/li&gt;
&lt;li&gt;Training a classifier requires assembling a large dataset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jev obviously solves the first problem. Any engineering team can plug in a System One model with a prompt like “Based on {list of criteria}, should the user be notified about this message?” But I think it solves the second problem too.&lt;/p&gt;
&lt;p&gt;For serious work, a specific hand-built classifier will always be cheaper and faster than Jev. Generic classifiers have to encode knowledge of all kinds of irrelevant things in their weights, so they can address lots of different tasks. That makes them larger, slower, and more expensive to run. Fortunately, &lt;strong&gt;it is going to be surprisingly easy to replace a Jev instance with a hand-built classifier.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once you’re satisfied with how your Jev classifier is performing — presumably you’ve spent days tweaking the prompt — you can trivially collect its input and output data. In the Slack notifier case, that’d be the Slack message (plus any context) and the ultimate decision to notify or not. Once you’ve saved enough data, you’ll be able to train your own classifier on that data&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/system-one-models-can-train-their-own-replacements/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;It won’t be a general classifier like Jev, but it should do well on the specific task and be much faster. Of course it’ll require some ML expertise, but it should be easier to develop (or rent) that expertise once you’ve validated that the feature is worth building.&lt;/p&gt;
&lt;p&gt;In other words, because Jev has to be prompted for specific tasks, it should be easy to &lt;a href=&quot;https://en.wikipedia.org/wiki/Knowledge_distillation&quot;&gt;distil&lt;/a&gt; any successful Jev usage into a specific classifier. If System One models take off — and I hope they do — I expect this to be a common pattern.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;As I write this, I’m imagining ways you could poll and batch to do this with LLMs. Substitute “instantly notify” or some higher-volume event source if you’d prefer a different example.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/system-one-models-can-train-their-own-replacements/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;You could annotate a bunch of data with LLMs already, without using Jev, but this is a pretty expensive step to take when you aren’t sure the feature is going to work.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/system-one-models-can-train-their-own-replacements/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Grit your teeth and ship it]]></title><link>https://seangoedecke.com/grit-your-teeth-and-ship-it/</link><guid isPermaLink="false">https://seangoedecke.com/grit-your-teeth-and-ship-it/</guid><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Being good at building and being good at shipping are two separate skills. In the short term, they’re actually countervailing: if you have a gift for building, you’re likely to be &lt;em&gt;worse&lt;/em&gt; at shipping. Ira Glass has a classic quote about this.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The only way around this is to &lt;strong&gt;grit your teeth and ship it&lt;/strong&gt;. You have to force yourself to publish things you’ve made even when you think they’re crap.&lt;/p&gt;
&lt;h3 id=&quot;programming&quot; style=&quot;position:relative;&quot;&gt;Programming&lt;a href=&quot;#programming&quot; aria-label=&quot;programming permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Gifted programmers have a &lt;a href=&quot;/addicted-to-being-useful/&quot;&gt;nearly pathological&lt;/a&gt; desire to build elegant, correct, neat systems. That’s what motivates them to learn the arcane details of their languages, or to spend time polishing and refactoring over and over again. But it’s also what makes them reluctant to ship. Any flaws in the software bother them on an emotional level. If they ship with those flaws, they feel like people will think they weren’t paying enough attention to notice them, or that they weren’t good enough to fix them.&lt;/p&gt;
&lt;p&gt;This is annoying when you’re writing software on your own, but it’s completely fatal when you’re working in a tech company. Any large software system is covered in flaws, whether due to time pressure, &lt;a href=&quot;/bad-code-at-big-companies/&quot;&gt;relative inexperience&lt;/a&gt;, &lt;a href=&quot;/wicked-features/&quot;&gt;wicked features&lt;/a&gt;, or a hundred other reasons. Working with it is a process of compromise: of finding the best possible solution given the quirks and foibles of the codebase. In fact, since the most important thing in large codebases is &lt;a href=&quot;/large-established-codebases/&quot;&gt;consistency&lt;/a&gt;, the right thing to do is sometimes to &lt;em&gt;duplicate&lt;/em&gt; flaws, assuming they’re not catastrophic.&lt;/p&gt;
&lt;p&gt;Gifted programmers often freeze up. I’ve often seen them retreat to smaller domains where they can safely make the code “correct”: tweaking dev-environment setup, or refactoring tests. Sometimes they just do nothing, and spin in shame and guilt (plus the compounding shame of not achieving anything) until they implode and quit. If they had worse taste, they wouldn’t be as good at programming, but they’d be a lot more useful. You can typically improve a bad diff with time and effort. You can’t improve &lt;em&gt;no&lt;/em&gt; diff.&lt;/p&gt;
&lt;h3 id=&quot;writing&quot; style=&quot;position:relative;&quot;&gt;Writing&lt;a href=&quot;#writing&quot; aria-label=&quot;writing permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I have a sensitive eye for awkward sentences and uneven prose. That can make writing an unpleasant process: I know what I’m trying to say, but I can’t seem to say it in a way that’s as clear and as elegant as I know is possible. More than half the time I finish drafting a blog post, I look at the post and don’t think it’s very good. But I (mostly) grit my teeth and publish it anyway, because &lt;strong&gt;you have to bias towards shipping&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Like any skill, shipping gets easier the more you practice it. If I don’t publish a blog post for a month, I always feel like the next draft is too poorly-written or uninteresting to put out there. But when I’m publishing a post per day, I typically feel great about each draft. When I go back and read my old posts, I can’t tell which ones I felt good about and which ones I felt bad about. There’s no correlation between that and the posts that become &lt;a href=&quot;/popular/&quot;&gt;popular&lt;/a&gt;. Here are some posts I didn’t like as I was writing them but that resonated with my audience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/the-simplest-thing-that-could-possibly-work/&quot;&gt;Do the simplest thing that could possibly work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/software-engineering-may-no-longer-be-a-lifetime-career/&quot;&gt;Software engineering may no longer be a lifetime career&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/a-little-bit-cynical/&quot;&gt;Software engineers should be a little bit cynical&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are some posts I thought were pretty good but that didn’t find popularity:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/weak-managers/&quot;&gt;Weak engineering managers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/solution-space/&quot;&gt;Paths through the space of all possible solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/impressing-people/&quot;&gt;Trying to impress people you don’t respect&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You just can’t predict what people will find interesting or useful. Producing a high volume of work thus gives much better yield than a small amount of highly-polished work.&lt;/p&gt;
&lt;p&gt;It can be disheartening to realize that some of your most casual, throwaway work will be more successful than the work you slaved over&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/grit-your-teeth-and-ship-it/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. Specifically, it’s disheartening because it means realizing you don’t have &lt;em&gt;control&lt;/em&gt; over your own success. You can’t produce something successful by focusing on a single piece until you’re satisfied it’s great. Instead, you just have to do a lot of things and see what sticks. You have to be &lt;a href=&quot;https://sunilpai.dev/posts/the-senior-engineer-death-spiral/&quot;&gt;momentum-based&lt;/a&gt;, not outcome-based. In other words, &lt;strong&gt;you have to grit your teeth and ship it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One common reason to write less is getting overly precious about your ideas. If you think you’ve got a really compelling concept, you don’t want to “waste it” on a poorly-written story. But in fact you can just write about the same thing over and over until you get it right! I have written like thirty blog posts about shipping (this is one of them), or about how tech companies work, or about how internal emotional regulation is as important as technical ability. I expect to continue writing and thinking about these ideas for as long as I find them interesting.&lt;/p&gt;
&lt;p&gt;edit: this post got some comments on &lt;a href=&quot;https://lobste.rs/s/pdulza/grit_your_teeth_ship_it&quot;&gt;Lobste.rs&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Anthony Burgess famously &lt;a href=&quot;https://en.wikipedia.org/wiki/A_Clockwork_Orange_(novel)#Writer&amp;#x27;s_appraisal&quot;&gt;claimed&lt;/a&gt; to have “knocked off” &lt;em&gt;A Clockwork Orange&lt;/em&gt; in three weeks, and Arthur Conan Doyle considered his largely-forgotten historical novel &lt;a href=&quot;https://en.wikipedia.org/wiki/Sir_Nigel&quot;&gt;Sir Nigel&lt;/a&gt; to be far better than his Sherlock Holmes stories.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/grit-your-teeth-and-ship-it/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Two techniques for working with System One models]]></title><link>https://seangoedecke.com/two-techniques-for-working-with-system-one-models/</link><guid isPermaLink="false">https://seangoedecke.com/two-techniques-for-working-with-system-one-models/</guid><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently wrote about &lt;a href=&quot;/jev-means-structured-output-is-interesting-again/&quot;&gt;Jev&lt;/a&gt;, a new “System One” language model that only outputs &lt;em&gt;decisions&lt;/em&gt;: the answers to a set of user-provided multiple-choice questions. This means it’s nowhere near as flexible&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/two-techniques-for-working-with-system-one-models/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; as a traditional LLM like ChatGPT, but in return it’s consistently fast.&lt;/p&gt;
&lt;p&gt;We don’t know exactly how Jev works. I’ve seen people say diffusion, or various tweaks to the Transformer architecture, or some entirely new type of model. But that doesn’t matter. Like I argued &lt;a href=&quot;/jev-means-structured-output-is-interesting-again/#structured-output-can-already-be-fast&quot;&gt;here&lt;/a&gt;, it isn’t hard to turn any LLM into a System One model. By batching prompts that generate a single token with structured output, you get a consistently fast general-purpose classifier. I vibed up a basic version to play with &lt;a href=&quot;https://github.com/sgoedecke/system-one/tree/main&quot;&gt;here&lt;/a&gt; in ~150 lines of Python (most of which is error handling).&lt;/p&gt;
&lt;p&gt;Note that &lt;em&gt;this doesn’t require changing the model&lt;/em&gt;. As long as you have access to the logits (for structured outputs) and can prefill data into the prompt, you can turn any LLM into a general fast classifier. What’s it like to program with one of these? While wiring up the demos for my library, I learned two techniques that I want to write about: setting tiered goals and tournament choice sampling.&lt;/p&gt;
&lt;h3 id=&quot;doom&quot; style=&quot;position:relative;&quot;&gt;Doom&lt;a href=&quot;#doom&quot; aria-label=&quot;doom permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Here’s Qwen3-8B playing Doom:&lt;/p&gt;
&lt;video controls playsinline preload=&quot;metadata&quot; style=&quot;width: 100%;&quot;&gt;
  &lt;source src=&quot;/48c52119c5ad14667a9541457c684db7/doom-qwen3-8b.mp4&quot; type=&quot;video/mp4&quot;&gt;
&lt;/video&gt;
&lt;p&gt;If you compare this to the &lt;a href=&quot;https://github.com/sgoedecke/system-one/blob/main/docs/demos/doom-qwen3-8b-tool-agent.mp4&quot;&gt;video&lt;/a&gt; of the same model playing Doom with regular tool calls, it’s clear that the System One version of the model is doing more things and reacting more quickly. The tool-calling model makes one decision every 600ms or so, while the System One model makes six or seven batched decisions every 190ms&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/two-techniques-for-working-with-system-one-models/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/70f6abb1474ff212395a43c8a17194f8/eb2ef/turns.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAABPElEQVQoz41T0W7DIAzM///hpq2ttqeuaZoWAgSbuD5D1lTbpFlyjzPGNWfSxZjk5rwQscCWRX2L/3Hk6g+w41LkenNCXITjJExZCJhnRW+c51RjMWg8tT3lczQszFKKOpF06Gocb5KVLEx1kxoq5xSUZ1vXvVxj4C2Pgrc4BdcKXp3kTNZ+aa0D1/XDW0x+8hWtoPO4atXwN6v6VN/yR8IDa0E3SZxnmVSbmLN4rNW9aocYqc7QGl24lFSvypETdD/p1XEGZ63gNAXpnZPd0Mv7+ST7cy8fl0EOjR+Gs7x8Hc13ynct53O8yF5z3vqTvJ6OtraCXq+86D/+ZeiGVPxZO9nyp+s2s4KYsNcu10HgSkvTFsNadYMFfbdTiN+FEWfG0/N2rluTEdwOwQ7gmWwGATP9mJ9iQHwYwDui/RID0uwQaQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;turns&quot;
        title=&quot;turns&quot;
        src=&quot;/static/70f6abb1474ff212395a43c8a17194f8/fcda8/turns.png&quot;
        srcset=&quot;/static/70f6abb1474ff212395a43c8a17194f8/12f09/turns.png 148w,
/static/70f6abb1474ff212395a43c8a17194f8/e4a3f/turns.png 295w,
/static/70f6abb1474ff212395a43c8a17194f8/fcda8/turns.png 590w,
/static/70f6abb1474ff212395a43c8a17194f8/efc66/turns.png 885w,
/static/70f6abb1474ff212395a43c8a17194f8/c83ae/turns.png 1180w,
/static/70f6abb1474ff212395a43c8a17194f8/eb2ef/turns.png 1324w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Both Qwen3-8B and Jev are text-only models, so both demos require a step where we translate the game state into text. However, it’d be trivial to support image (or audio) input by choosing a multimodal LLM.&lt;/p&gt;
&lt;h3 id=&quot;goals-and-sub-goals&quot; style=&quot;position:relative;&quot;&gt;Goals and sub-goals&lt;a href=&quot;#goals-and-sub-goals&quot; aria-label=&quot;goals and sub goals permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;What’s interesting about implementing the Doom demo is that &lt;strong&gt;just supplying the game inputs as choices doesn’t work very well&lt;/strong&gt;. A single forward pass — 200ms — is enough time to react to the current game state, but doesn’t bring enough compute to bear to derive the current short-term goal (e.g. “kill this enemy”, “collect this item”) and choose to follow it. When I wired it up that way, the model held down the “shoot” button 100% of the time (why not, I guess) and just aimlessly wandered around the level. &lt;/p&gt;
&lt;p&gt;The fix is to periodically ask the model to choose between a fixed set of short term goals (e.g. “collect armor”, “kill enemies”) and then include that goal in the regular every-200ms prompt. If you look at the Doom video in the Jev demo, you can see that they’re doing exactly that. As soon as I did it as well, my model started playing in a more human-like way.&lt;/p&gt;
&lt;p&gt;This is an interesting technique for working with System One models. In a way, it’s the equivalent of regular LLM reasoning, since it provides a way to use more compute on the same problem. I can imagine a real-time system that manages several layers of goals in this way:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;An every-ten-second loop that sets an overall strategic goal&lt;/li&gt;
&lt;li&gt;An every-five-second loop that sets a tactical subgoal based on (1)&lt;/li&gt;
&lt;li&gt;An every-second loop that breaks down the current tactical subgoal into specific targets&lt;/li&gt;
&lt;li&gt;A tight inner loop that runs as fast as possible (e.g. every 100ms) that controls which actual inputs are activated&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The general structure here should be pretty familiar to anyone who’s worked in game or robotics AI. In theory you could replace (1) with an actual LLM, and have that generate the lists of options for steps (2) and (3). In practice I suspect this will be tricky to get right, and it’ll be better to just write down a list of all possible goals ahead of time. This would work just fine for game-playing and well-understood tasks.&lt;/p&gt;
&lt;h3 id=&quot;wikiracing&quot; style=&quot;position:relative;&quot;&gt;Wikiracing&lt;a href=&quot;#wikiracing&quot; aria-label=&quot;wikiracing permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I also reimplemented the Wikiracing demo from the Jev &lt;a href=&quot;https://typesafe.ai/blog/introducing-system-one-models-and-jev&quot;&gt;launch post&lt;/a&gt;, where the model has to start at the Wikipedia page for “baseball” and navigate as quickly as possible to the Wikipedia page for “sun”. You can watch the video for that &lt;a href=&quot;https://github.com/sgoedecke/system-one#wikipedia-race&quot;&gt;here&lt;/a&gt;, though it’s less impressive than the Doom demo. &lt;/p&gt;
&lt;p&gt;The difficulty with the Doom demo is getting the model to loop quickly enough and to commit to short-term plans. For Wikiracing, the difficulty is &lt;em&gt;scale&lt;/em&gt;: the Wikipedia page for “baseball” has over a thousand internal links. Jev only supports 255 choices for a single question, and my hacked-together System One layer was similar. While it technically would scale out to more choices, it stopped working well&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/two-techniques-for-working-with-system-one-models/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; after a hundred or so.&lt;/p&gt;
&lt;p&gt;Jev’s approach here is to do “a 2 stage-system of scoring independently then making an explicit choice”. This did not work very well for me at all. I think here Jev is benefiting from the fact that it’s specifically trained to give confidence estimates. Qwen3-8B gave a few hundred of the links the same top score, which wasn’t helpful. It ended up taking multiple minutes to find a thirty-or-forty link path between the two pages.&lt;/p&gt;
&lt;p&gt;What I tried instead was &lt;strong&gt;tournament sampling&lt;/strong&gt;: I fed a hundred links at a time into each choice, then did a second pass with the chosen links. This worked &lt;em&gt;great&lt;/em&gt;. The model found the ideal three-link path (if you’re curious, “baseball”/“scientific american”/“amateur astronomy”/“sun”). I recommend this pattern if you’re trying to find the best option among many choices. Ordinary LLMs are way better at relative judgements than absolute ratings.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot; style=&quot;position:relative;&quot;&gt;Conclusion&lt;a href=&quot;#conclusion&quot; aria-label=&quot;conclusion permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I remain optimistic about the potential of System One models — fast general classifiers — to build AI systems that aren’t just chatbots. It feels like this is a meaningful alternative to tool calls for realtime scenarios or use-cases where you need predictable inference timing. Just as generic LLMs often outperform domain-specific models, I think it’s likely that generic System One models will sometimes outperform domain-specific classifiers (though they will always be larger and slower).&lt;/p&gt;
&lt;p&gt;I do think the big labs are definitely going to try and compete by releasing a choice-only version of their small, fast models. If Jev gets any traction, we will soon see a System One Terra and a System One Haiku, and we will certainly see “real” versions of my vibed up System One &lt;a href=&quot;https://github.com/sgoedecke/system-one&quot;&gt;library&lt;/a&gt;. We should start working out the best way to write programs with these models now.&lt;/p&gt;
&lt;p&gt;You can think of System One models as general-purpose classifiers. Instead of having to train a new classifier per-task, you can use a System One model. It’ll be bigger and slower than a custom classifier model, but far more flexible, and you can tweak it via adjusting the prompt instead of having to re-train the model.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Technically you can give it the multiple-choice question of “which letter comes next” to make it act like a normal autoregressive LLM, but that wouldn’t really work. &lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/two-techniques-for-working-with-system-one-models/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;I started on a 4090, which was able to make decisions every 500ms, but that wasn’t really quick enough for Doom. I could probably have optimized it further but instead I just rented an H100 for ten minutes to record the demo, which got it down to a 190ms loop. I recorded the tool-calling Doom demo on the H100 too, so it’s a fair comparison.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/two-techniques-for-working-with-system-one-models/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;There’s an interesting research question here about how to implement choices like this, since they have to be predictable by a single token. I started with indexes but found “labels” (just picking some token to associate with the choice) performed &lt;em&gt;way&lt;/em&gt; better on Wikiracing (though not Doom). How many choices do you have to have before labels are better than indexes? Of course, you could alter the model to directly output the choice, but I like the idea that you can do all of this in the inference code for any LLM.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/two-techniques-for-working-with-system-one-models/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Jev means structured output is interesting again]]></title><link>https://seangoedecke.com/jev-means-structured-output-is-interesting-again/</link><guid isPermaLink="false">https://seangoedecke.com/jev-means-structured-output-is-interesting-again/</guid><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I don’t write blog posts about new models. That’s &lt;a href=&quot;https://simonwillison.net/&quot;&gt;Simon Willison’s&lt;/a&gt; beat, and he’s very good at it. But I want to write about &lt;a href=&quot;https://typesafe.ai/blog/introducing-system-one-models-and-jev&quot;&gt;Jev&lt;/a&gt;, which is a different kind&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; of AI model: a “System One”&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; model. As it turns out, it’s not &lt;em&gt;that&lt;/em&gt; different from an ordinary LLM with structured output, but the interface it uses is very cool and I hope it becomes more widespread.&lt;/p&gt;
&lt;h3 id=&quot;how-jev-is-different-from-llms&quot; style=&quot;position:relative;&quot;&gt;How Jev is different from LLMs&lt;a href=&quot;#how-jev-is-different-from-llms&quot; aria-label=&quot;how jev is different from llms permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Ordinary LLMs take in some human-language prompt and produce some human-language output. They do so &lt;em&gt;autoregressively&lt;/em&gt;: first they produce one token, then the next, then the next, and so on.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;User: Who invented the sandwich?
LLM: The sandwich was invented by the Earl of Sandwich.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This makes them extremely flexible, since they can do literally anything a computer can do. But it also makes them slow and weird. Slow, because they have to run a whole new generation pass per-token, and weird, because the space of human language is so broad that you can get &lt;a href=&quot;https://community.openai.com/t/is-chatgpt-hacked-major-chinese-gambling-advertisements-websites-showing-up-in-output/1375128&quot;&gt;really odd behavior&lt;/a&gt; from a model trained on it.&lt;/p&gt;
&lt;p&gt;Jev takes a human-language prompt, but it does not produce human-language output. It only produces structured output.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;User: { state: &quot;What color is the sky?&quot;, choices: [&quot;blue&quot;, &quot;red&quot;, &quot;yellow&quot;] }
Jev: { answer: &quot;blue&quot; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;So far, so ordinary: LLMs &lt;a href=&quot;https://developers.openai.com/api/docs/guides/structured-outputs&quot;&gt;do this already&lt;/a&gt;. But it turns out that if you build a model that &lt;em&gt;only&lt;/em&gt; produces structured output, you get some interesting and desirable properties.&lt;/p&gt;
&lt;h3 id=&quot;jev-is-consistently-fast&quot; style=&quot;position:relative;&quot;&gt;Jev is consistently fast&lt;a href=&quot;#jev-is-consistently-fast&quot; aria-label=&quot;jev is consistently fast permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Jev is always really fast.&lt;/strong&gt; The fastest response time is around 70ms instead of a couple of seconds for normal LLMs. Even better, the &lt;em&gt;slowest&lt;/em&gt; response time is only 500ms. Because Jev only does structured output, it isn’t autoregressive: it can produce answers to many questions in parallel in a single forward pass. When a LLM is producing structured output, it has to produce the tokens ”{”, ” ”, “answer”, ”:”, and so on with successive forward passes&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Jev does it all in one go.&lt;/p&gt;
&lt;p&gt;The most compelling example of Jev’s speed is that &lt;strong&gt;the model can play Doom&lt;/strong&gt;. You can feed a text-based representation of the current game state into the model, combined with a set of choices like “should the trigger be held down”, “what should the current goal be”, “given that the current goal is X, what keyboard input should be pressed”, and so on, and it works — latency is low enough and the system is smart enough that the model plays well in real time.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d54381912237e0f153a14473f60d04e9/5bef7/doom.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 42.567567567567565%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAAB90lEQVQoz0WS207bQBRFnYDj+3jsGOPETjGB2AlJSGighJaL2qpFQkiFSn2oUF/6//+wemyQamnpnBmPtvf2GaPnBuz2/DcUO6YWIkwzptdLiL0S7R1i2Sm23ewpTDlr2h5WEGC5Un1ZSzUdF8P0TFTkkmR9BkWf6UQLEbXU6igkK0KSYYwb2pjeLk7s4EjvBBaOsnEbQgc3kn3tYMhDqBX7WUp9fMTlouDTKufurOBieUB5MCIfpFimidHp4GcKNY5QZUTwTuPLB/0saIWdQAQ7OwaLIqXSPsq3iXUoKJJYCyHvxN1qNiIOPTlsoPIQPU2EPcI6adFVgp/64lIid0Xw63zM06Jmu6l4uN3w7XrN549n3Jyf8F36xy8XDNO4iUMwDIlme0Rz4aSpKeFhhJd4El0EO12D00nJ1XrOYl5xtaxZVAfyD0tOpsfMphNms5pABtA6HGn62xwtok2vSmEksfe8N4fdDpN6wnK1ZL1e8f58wyDtc7eZcn1zzXK5YLU+JU3T1qEqdBs5HMdt/GAQiGv1Ktg47Fo97lenPF9d8mf7gZdfP3m4W/P3/lbWW348P/Hy+5HDcvgaOQ1aEX/oC/+r13dlMCIYZx6TKmc8zhnsJ2R5xkiuT56nDDJZF5m8y9CxOPAtPInVRGuvSovb4rRTdvkHc6zmr9bvEZ0AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;doom&quot;
        title=&quot;doom&quot;
        src=&quot;/static/d54381912237e0f153a14473f60d04e9/fcda8/doom.png&quot;
        srcset=&quot;/static/d54381912237e0f153a14473f60d04e9/12f09/doom.png 148w,
/static/d54381912237e0f153a14473f60d04e9/e4a3f/doom.png 295w,
/static/d54381912237e0f153a14473f60d04e9/fcda8/doom.png 590w,
/static/d54381912237e0f153a14473f60d04e9/efc66/doom.png 885w,
/static/d54381912237e0f153a14473f60d04e9/c83ae/doom.png 1180w,
/static/d54381912237e0f153a14473f60d04e9/5bef7/doom.png 2746w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Of course you could train a neural net to play Doom already. But Jev is a &lt;em&gt;general&lt;/em&gt; intelligence: just like LLMs can do your taxes, perform mathematics research, fix your Python environment, and write you a poem, Jev can do many other tasks besides playing a single video game. Current LLMs can play Doom too (albeit slowly). But as Nelson Elhage &lt;a href=&quot;https://blog.nelhage.com/post/reflections-on-performance/#performance-changes-how-users-use-software&quot;&gt;famously said&lt;/a&gt;, fast software doesn’t just mean we can do the same tasks faster, it means we can do entirely new kinds of tasks. What kinds of new programs can we write by injecting 100ms worth of dirt-cheap intelligence at various decision points?&lt;/p&gt;
&lt;p&gt;To me, this is the most exciting thing about Jev. &lt;em&gt;Fast&lt;/em&gt; structured output could be a genuinely new computational primitive for intelligence. So far we’ve built a lot of programs on top of autoregressive token generation, and they all look like fancy chatbots. Leaning hard into structured output might conceivably unlock a bunch of non-chatbot use cases for AI.&lt;/p&gt;
&lt;h3 id=&quot;structured-output-can-already-be-fast&quot; style=&quot;position:relative;&quot;&gt;Structured output can already be fast&lt;a href=&quot;#structured-output-can-already-be-fast&quot; aria-label=&quot;structured output can already be fast permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;My biggest problem with Jev is that I think &lt;strong&gt;fast structured output is already available&lt;/strong&gt;. Structured output from LLMs is only slow because (a) nobody really cares about it&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;, and (b) the people who do care about it want big JSON blobs, so it’s typically implemented with &lt;a href=&quot;https://www.aidancooper.co.uk/constrained-decoding/&quot;&gt;“grammar-constrained decoding”&lt;/a&gt;: the LLM outputs autoregressively as normal, but the logit sampler discards tokens that don’t fit the structured output (e.g. if there hasn’t been a ”[”, you can’t output a ”]”).&lt;/p&gt;
&lt;p&gt;If you want fast, parallelized structured output against limited choices, you don’t strictly need to do autoregressive generation at all. You can simply prefill the response with &lt;code class=&quot;language-text&quot;&gt;&quot;choice&quot;: &quot;&lt;/code&gt; and generate one token&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;, restricted to the user-provided choices. Since LLMs ingest all input tokens in parallel, this is way faster than generating the entire structured output. Multiple choices can be batched into the same forward pass via ordinary inference batching. This doesn’t let you do long-form structured output, but in return you get most of&lt;sup id=&quot;fnref-6&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-6&quot; class=&quot;footnote-ref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; Jev’s “secret sauce”: the speed, the consistency, and the parallelism of a System One model.&lt;/p&gt;
&lt;p&gt;People have &lt;a href=&quot;https://x.com/harshagundal/status/2100044305536889015?s=20&quot;&gt;already started trying this&lt;/a&gt; after today’s Jev announcement, and it seems like it’s working OK&lt;sup id=&quot;fnref-7&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-7&quot; class=&quot;footnote-ref&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;. In other words, I suspect Jev does not have a substantial technical moat, and their claimed “Reinforcement Learning for Calibrated Decisions” is not a brand-new scaling axis. It will probably be pretty easy for any other lab to replicate, or for individual programmers to retrofit existing open-source LLMs into a fast Jev-like model.&lt;/p&gt;
&lt;p&gt;However, I suspect Jev is still going to be better than most versions of “Qwen-32B-System-One” or whatever. Being able to fine-tune or optimize the model on just structured output is probably a meaningful advantage.&lt;/p&gt;
&lt;h3 id=&quot;intelligence-and-hallucinations&quot; style=&quot;position:relative;&quot;&gt;Intelligence and hallucinations&lt;a href=&quot;#intelligence-and-hallucinations&quot; aria-label=&quot;intelligence and hallucinations permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I doubt Jev is ever going to be as smart as frontier LLMs. Not being able to use test-time compute at all&lt;sup id=&quot;fnref-8&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fn-8&quot; class=&quot;footnote-ref&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; is a big disadvantage, and will likely cap this kind of model around the strength of non-reasoning LLMs. In practice this shouldn’t matter too much for low-latency applications, but you shouldn’t see this as a new scaling axis or a way to produce more intelligent models.&lt;/p&gt;
&lt;p&gt;Jev’s developers claim it is immune from hallucinations. To me, this seems like a semantic dodge, since Jev can absolutely still pick the wrong choice (e.g. calling the sky “red”). I suppose that’s technically just a &lt;em&gt;mistake&lt;/em&gt;, since the model is picking a user-provided choice instead of inventing something new out of whole cloth. Still, all of this is also true about regular LLMs with structured outputs, and it doesn’t make Jev any more reliable in practice.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot; style=&quot;position:relative;&quot;&gt;Conclusion&lt;a href=&quot;#conclusion&quot; aria-label=&quot;conclusion permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It’s unclear to me how much of Jev’s value is in the model itself, compared to the inference strategy of only generating one token per question. The data and demos in the announcement look to me like they could have been generated by plugging any Terra-sized model into a single-token inference stack. However, the people involved are credible, and I’m sure the model is good — I just wish they’d provided some comparisons that didn’t force the LLM to unnecessarily produce a blob of JSON token-by-token.&lt;/p&gt;
&lt;p&gt;Overall, I am happy that Jev exists and I hope it succeeds. I hope we do see some real competition in the fast-structured-output space, and that it motivates the big labs to release official versions of their own models that are fine-tuned for this. GPT-5.6-Terra-System-One would be a very interesting model to build AI products on top of.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;I did write about Thinking Machines’ &lt;a href=&quot;/interaction-models/&quot;&gt;“interaction models”&lt;/a&gt;, which are also a fast-enough-to-be-meaningfully-different paradigm for AI inference.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;They call Jev a “System One” LLM, after Daniel Kahneman’s &lt;a href=&quot;https://www.gilesd-j.com/2023/03/30/reproducibility-thinking-fast-and-slow/&quot;&gt;partially discredited&lt;/a&gt; &lt;em&gt;Thinking Fast and Slow&lt;/em&gt;, where he divides human cognition into a lightning-fast System One and a slow-and-reflective System Two.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;If you’re thinking “wait, couldn’t you just aggressively prefill a regular LLM and only produce one constrained token”, keep reading.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Not counting tool calls, which are built-in in a way that structured output isn’t.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;What if some of the user’s choices are longer than a single token? I haven’t tried this myself, but I’m sure you could translate them into a single token, or train the model to output “1/2/3” under the hood instead of the choice content, or generate only the first token of the choice if it’s different, or some other clever trick I haven’t thought of.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;Jev claims that their generated probabilities are “calibrated”, but I haven’t seen anything to suggest that these aren’t just regular logit probabilities. Maybe there’s some clever training they do to encourage accurate logprobs in uncertain situations (e.g. getting the model to produce &lt;code class=&quot;language-text&quot;&gt;heads: 50, tails: 50&lt;/code&gt; when predicting a coinflip, etc)? If so, I wish they’d written more about that in the announcement.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-6&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-7&quot;&gt;
&lt;p&gt;I tried it myself with &lt;code class=&quot;language-text&quot;&gt;Qwen2.5-1.5B-Instruct&lt;/code&gt; and got a 2x-3x speedup compared to non-prefixed structured output.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-7&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-8&quot;&gt;
&lt;p&gt;I suppose they could do some looped-transformer thing where they loop some fixed amount of times, but anything that looks like reasoning would make the model latency slow and unpredictable, defeating the entire purpose.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/jev-means-structured-output-is-interesting-again/#fnref-8&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Tell agents the why, not just the how]]></title><link>https://seangoedecke.com/tell-agents-the-why/</link><guid isPermaLink="false">https://seangoedecke.com/tell-agents-the-why/</guid><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Early AI agents were basically enthusiastic idiots. Working with them required you to tell them precisely what you wanted them to do (for instance, “method A exists on class B, please add an equivalent method to classes C through F”). Otherwise they’d go off and do entirely the wrong thing. But as AI agents have improved, this has changed.&lt;/p&gt;
&lt;p&gt;When frontier models go off and do the wrong thing today, they don’t do it because they’re confused, they do it because they make an incorrect assumption about your goals or priorities. For instance, when GPT-6-Astra thinks it’s writing code for itself, it will produce &lt;a href=&quot;https://lucumr.pocoo.org/2026/9/7/astra-why/&quot;&gt;minified code&lt;/a&gt;. It’s perfectly capable of writing human-readable code — at least in Golang, where I’ve produced several thousand lines of acceptable code with the model — but you have to tell it that humans will be reading the code&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/tell-agents-the-why/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;This is the main piece of advice I want to give most people I see prompting agents: give the agent context on your priorities, not just on the specific task you want them to do. Here’s a prompt I recently used as the starting point for &lt;a href=&quot;/deckard/&quot;&gt;Deckard&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello. You should have Runpod access via MCP (if not, tell me and I’ll fix it).&lt;/p&gt;
&lt;p&gt;I have the long-term goal of building a local program or browser extension to automatically scan pages I load for AI content and hide it. I have the short-term goal of figuring out the best AI detection model I can run on my macbook without killing my battery or making it hot, and (relatedly) figuring out how to run the model most efficiently. My guess is that Pangram’s EditLens 3B or the smaller Roberta model might be a good place to start, though they might require quantizing and will definitely require some work to make them run as efficiently as possible on my macbook.&lt;/p&gt;
&lt;p&gt;I would like you to use my Runpod account to start answering these questions. Eventually we’ll move to doing things on this macbook pro, but my hope is that Runpod can help with some experiments that are too hot/long/slow to run locally. You are a smart model; if you can see a better way to achieve my goals, please let me know and we’ll talk about it. Good luck.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;About half of this prompt is sharing broad context, such as the overall project I’m aiming for, the fact that it’s for me personally and not for work, and my priorities (e.g. keeping the laptop cold). If I had written an explicit spec, I would have missed a bunch of improvements: for instance, using native messaging for the local model, or choosing the Gradient model instead of EditLens.&lt;/p&gt;
&lt;p&gt;I do the same thing for work, but typically with a stronger emphasis on my &lt;em&gt;technical&lt;/em&gt; values. I often write a paragraph spiel explaining the relative priorities of avoiding bugs, observability, fitting elegantly into the current code, performance, and so on. Note that I said “relative” priorities: I don’t simply list all of these things and say they’re important, I explicitly tell the model which of those I care less about and can therefore be traded off to better achieve the others.&lt;/p&gt;
&lt;p&gt;Models are now smart enough to have meaningful input on your broader goals. If you’re just prompting them with a concrete technical spec, you are committing the same mistake as in the &lt;a href=&quot;https://xyproblem.info/&quot;&gt;XY problem&lt;/a&gt;: asking expert advice without giving the expert the context it needs.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Incidentally, you don’t have to tell it to write human code if it’s working in a human-authored codebase. It’s smart enough to pick up the style of the surrounding code.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/tell-agents-the-why/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Slow developer experience will bottleneck fast models]]></title><link>https://seangoedecke.com/slow-devex-will-bottleneck-fast-models/</link><guid isPermaLink="false">https://seangoedecke.com/slow-devex-will-bottleneck-fast-models/</guid><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Right now developer experience is measured in seconds. If your tests take a second to run, that’s good; if they take thirty seconds, that’s bad. Any faster than a second doesn’t really matter, because most of your time is spent either thinking or waiting for an AI agent to spin. Shaving milliseconds off your dev server reload time or whatever is pointless: that’s not the bottleneck.&lt;/p&gt;
&lt;p&gt;It will be. Small models are getting faster and faster, and smart models are getting smaller. I think most engineers will still want to use the smartest available model — software engineering is hard — but we will increasingly see faster models get used as subagents or for well-understood tasks. This is largely uncharted territory. Very few people have developed intuitions for what it is going to be like to work with agents that run at thousands of tokens-per-second.&lt;/p&gt;
&lt;p&gt;GPT-6-Astra can run at about &lt;a href=&quot;https://openrouter.ai/openai/gpt-6-astra#providers&quot;&gt;sixty&lt;/a&gt; tokens per second. That means you spend a lot of time waiting for it to think. You work with it like you would work with another human: delegating a task and then context-switching until that task is complete. If you haven’t yet, have a play around with &lt;a href=&quot;https://chatjimmy.ai/&quot;&gt;Jimmy&lt;/a&gt;, Taalas’ version of LLaMA-3.1-8B running&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/slow-devex-will-bottleneck-fast-models/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; at &lt;em&gt;seventeen thousand tokens per second&lt;/em&gt;. No matter how long the response is, it arrives in the instant of you hitting send. The model is not good enough for agentic work, but it gives a glimpse of what it would be like: you would simply get your answer instantly&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/slow-devex-will-bottleneck-fast-models/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Well, that’s assuming the agent’s tool calls are fast. When generating tokens is not the bottleneck, it will suddenly matter a lot whether it can read a file in 100ms vs 10ms, or whether it can run your tests in 500ms vs two seconds. Fast tool calls are going to be the difference between a near-instant response and having to wait several minutes. There is thus going to be enormous pressure to do agentic coding in languages with fast compilers and tests, like Golang, and to tightly optimize the dev loop in agentic codebases.&lt;/p&gt;
&lt;p&gt;Teams focused on DevEx — developer experience — are largely a relic of the 2010s, when companies were &lt;a href=&quot;/good-times-are-over/&quot;&gt;incentivized&lt;/a&gt; to make their engineers happy. Most companies have cut them down to a skeleton crew or removed them entirely. But we may see a return of DevEx in the late 2020s, focused on speeding up the experience for AI agents.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Like most ultra-fast inference, it relies on fitting the entire model onto a huge GPU-like chip that’s specially designed to run inference: for Taalas, it’s in the silicon itself; for Cerebras and Groq, it’s in giant embedded onboard memory units.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/slow-devex-will-bottleneck-fast-models/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Will AI providers simply train models to spend more time reasoning, so users would have to wait for roughly the same time? I doubt it. Most ordinary engineering problems would not be solved better by spending an extra million tokens thinking. You only need to do that when you’re pushing right up against the limits of the model.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/slow-devex-will-bottleneck-fast-models/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[AI is breaking our proxies for expertise]]></title><link>https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/</link><guid isPermaLink="false">https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/</guid><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mathematicians are broadly not anti-AI. They’re more culturally open to using AI as a tool than, say, artists or writers&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. However, now that more and more &lt;a href=&quot;https://openai.com/index/navier-stokes-solution/&quot;&gt;genuinely&lt;/a&gt; &lt;a href=&quot;https://www.anthropic.com/research/riemann-zeta&quot;&gt;prestigious&lt;/a&gt; problems have fallen to AI, that might be changing. Almost five thousand mathematicians (including twenty-five Fields medalists) have signed a declaration called &lt;a href=&quot;https://mathandai.org/&quot;&gt;&lt;em&gt;A Severe Misalignment of AI in Mathematics&lt;/em&gt;&lt;/a&gt;. The core argument goes something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In recent months, the success of AI in solving major mathematical problems has made headlines even outside mathematical circles. But solving problems is only a tool and proxy for achieving the primary goal of conceptual understanding and insight. Forgetting this in the world of AI may turn the tool against the primary goal. Indeed, the mass production at faster and faster pace of “true/false” statements could destroy fertile ground instead of breathing life into new ideas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A lot of people online have interpreted this as the expected complaint from any field that gets automated: translators did it, artists and programmers have been doing it, and now it’s the turn of the mathematicians. I think this is too dismissive. Understanding the concrete problem mathematicians are upset about can help us better understand the impact of AI on our own fields, and what we’ll have to do about it.&lt;/p&gt;
&lt;h3 id=&quot;puzzle-solving-and-idea-generating&quot; style=&quot;position:relative;&quot;&gt;Puzzle-solving and idea-generating&lt;a href=&quot;#puzzle-solving-and-idea-generating&quot; aria-label=&quot;puzzle solving and idea generating permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;There are two types of mathematics. Most people are familiar with the first, which we might call “puzzle-solving”: you take a problem and try to find a solution to it. When you’re a student, these problems are typically easy, like simplifying some algebraic expression. When you’re a researcher, these problems can be nearly impossible, like proving &lt;a href=&quot;https://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem&quot;&gt;Fermat’s Last Theorem&lt;/a&gt;. Puzzle-solving is easy to understand but hard to do, which makes it impressive to non-mathematicians, which makes it highly prestigious. In other words, puzzle-solving is &lt;a href=&quot;/seeing-like-a-software-company&quot;&gt;&lt;em&gt;legible&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The second type of mathematics is “idea-generating”: coming up with new ways of thinking about mathematics, and thus new terms or concepts. For examples of these, just glance down the list of &lt;a href=&quot;https://arxiv.org/list/math.FA/recent&quot;&gt;arXiv mathematics papers&lt;/a&gt;. “Hardy spaces”, “Schatten exponent”, “Banach lattices” and so on are all concepts someone thought was interesting. This work is largely unimpressive to non-mathematicians, because nobody really knows if the concepts you come up with are particularly difficult or insightful. For instance, I have just generated the concept of a “Goedecke set”, which is the set of all natural numbers whose digits add up to a prime number. Who cares? The categories we want are the &lt;a href=&quot;https://plato.stanford.edu/entries/natural-kinds/&quot;&gt;“natural kinds”&lt;/a&gt; of mathematics — the concepts that “carve nature at its joints” — and it’s almost impossible to tell what those are without years or decades of hard work.&lt;/p&gt;
&lt;p&gt;How are the two types of mathematics related? We might say&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; that generating ideas is the real intellectual work of mathematics. Puzzle-solving is important instrumentally: to identify which ideas can be used to answer longstanding questions, and thus which ideas are worthwhile. Over time, those worthwhile ideas become better understood and easier to use, until they reach the point where they can be used to advance science in general. Eventually the ideas become so well-understood that they can be taught to children: “zero”, “negative numbers”, “imaginary numbers” and “calculus” were all once rarefied mathematical ideas, but are now concepts we’d expect any precocious twelve-year-old to grasp.&lt;/p&gt;
&lt;p&gt;There’s another, more prosaic purpose of puzzle-solving: to make mathematical skill and progress legible to outsiders. I can’t appreciate Terence Tao’s mathematical work, but I know what a Fields Medal is. I don’t have a good intuitive sense of what a Galois representation is, but I know about the proof of &lt;a href=&quot;https://en.wikipedia.org/wiki/Wiles%27s_proof_of_Fermat%27s_Last_Theorem&quot;&gt;Fermat’s Last Theorem&lt;/a&gt;. We might say that puzzles like this have served as a way to indirectly reward skilled mathematicians for their more important idea-generating work (or for conclusively demonstrating&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; that the ideas used in the proof are useful).&lt;/p&gt;
&lt;h3 id=&quot;do-ai-proofs-undercut-idea-generation&quot; style=&quot;position:relative;&quot;&gt;Do AI proofs undercut idea generation?&lt;a href=&quot;#do-ai-proofs-undercut-idea-generation&quot; aria-label=&quot;do ai proofs undercut idea generation permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;AI proofs undercut both of these purposes. I can now lay out precisely why I think mathematicians are so unhappy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Puzzles serve as a high-legibility, high-reward target for mathematicians&lt;/li&gt;
&lt;li&gt;To solve these puzzles, new ideas must typically be generated; the puzzle’s solution serves as evidence that the ideas are useful&lt;/li&gt;
&lt;li&gt;But now AI can solve many of these targets “the hard way”, without generating intuitive new ideas&lt;/li&gt;
&lt;li&gt;This undercuts both ways puzzle-solving supports idea-generation: AI companies claim the prestige while not meaningfully advancing mathematical progress&lt;/li&gt;
&lt;li&gt;This is bad for mathematics as a whole, because puzzle-solving is ancillary to the real goal of mathematics&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is kind of like &lt;a href=&quot;https://en.wikipedia.org/wiki/Goodhart%27s_law&quot;&gt;Goodhart’s Law&lt;/a&gt;. Puzzles were a useful, impossible-to-game measure for mathematical progress. But now that AI companies can game that measure (by solving them in a way that’s inaccessible&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; to humans), the whole point of those puzzles disappears.&lt;/p&gt;
&lt;p&gt;Are the mathematicians right? I think it’s broadly unclear whether (3) is true: i.e. whether frontier AI models aren’t generating or can’t generate new mathematical ideas. We’re still in the very early days of AIs solving our hardest mathematical problems. Who knows what they’re going to be capable of? I give basically zero credence to the idea that AIs are incapable of this because of some intrinsic feature of how LLMs work. For the last three years, we’ve seen people claim that LLMs are intrinsically incapable of X, only to have LLMs excel at X a few months later.&lt;/p&gt;
&lt;p&gt;Even granted that (3) is true, there’s still work to be done for human mathematicians in building the conceptual machinery that can make AI-generated proofs accessible to humans: i.e. in generating a “human proof” to go alongside the existing “AI proof”. In fact, I’d expect the existence of an AI proof to help with this. If you know proposition X is true, it’s easier to figure out why, because you’re not constantly worried you’re wasting your time. For more on this, I recommend Gwern’s blog &lt;a href=&quot;https://gwern.net/on-really-trying&quot;&gt;&lt;em&gt;On Really Trying&lt;/em&gt;&lt;/a&gt;, where he quotes a series of instances where simply being told that a solution exists is enough of a clue to help people find it.&lt;/p&gt;
&lt;h3 id=&quot;mathematics-chess-and-speedrunning&quot; style=&quot;position:relative;&quot;&gt;Mathematics, chess, and speedrunning&lt;a href=&quot;#mathematics-chess-and-speedrunning&quot; aria-label=&quot;mathematics chess and speedrunning permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Of course, there’s a prestige and motivation problem. “I’m the first person to solve Navier-Stokes” is a much more compelling target than “I figured out a better way to explain the AI solution to Navier-Stokes”, and it’s much easier to award prizes for. Will mathematicians bother to work on problems that have already been solved? I think so.&lt;/p&gt;
&lt;p&gt;To see why, we can look at other domains where AI has come in and outcompeted the best humans, such as chess or video game speedrunning. I can run a chess program on my phone that will beat Magnus Carlsen 100-0. Computer programs — called “tool-assisted speedruns” or “TAS” — can finish any video game much faster than even the fastest human. But in both of these areas, humans still compete in human-only leagues, and there’s still prestige attached to the most capable humans. It’s possible that mathematics ends up in this kind of state, where “human mathematics” and “AI mathematics” exist in largely separate spheres, and the first “human” solution to a mathematical problem can still earn acclaim.&lt;/p&gt;
&lt;p&gt;In fact, in both of those areas, the presence of inhumanly strong computer players has improved the human game. Despite many computer chess moves being basically incomprehensible to humans, top chess players have &lt;a href=&quot;https://bpspsychub.onlinelibrary.wiley.com/doi/10.1111/bjop.12750?af=R&quot;&gt;learned from&lt;/a&gt; the computer “style”. In speedrunning, many moves once considered “TAS-only” are now performed by humans. AI mathematics might likewise improve human mathematics.&lt;/p&gt;
&lt;h3 id=&quot;software-engineering&quot; style=&quot;position:relative;&quot;&gt;Software engineering&lt;a href=&quot;#software-engineering&quot; aria-label=&quot;software engineering permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I am not a mathematician. I did major in mathematics during undergrad, and I have fond memories of proofs from &lt;a href=&quot;https://handbook.unimelb.edu.au/subjects/mast20026&quot;&gt;real&lt;/a&gt; and &lt;a href=&quot;https://handbook.unimelb.edu.au/2024/subjects/mast30021&quot;&gt;complex&lt;/a&gt; analysis, but it’s not even close to my field. However, I am watching the effects of powerful AI on mathematics very closely, since my own field — software engineering — is being colonized by AI agents in the same way.&lt;/p&gt;
&lt;p&gt;The field of software engineering does not have the same structure as mathematics. We write code to make money, not to earn prestige or advance the frontier of human knowledge. But AI is undercutting the traditional avenues for prestige in software engineering as well. It used to be that you could put a meaty project on your GitHub — say, an emulator, or a toy OS — and people would know you were a skilled engineer. But now projects like that are worthless, because everyone just assumes they’re vibe-coded. We used to tell stories about engineers who would disappear and rewrite a system over the weekend, or produce thousands of lines of code a day. Now anyone can do that with an OpenAI subscription.&lt;/p&gt;
&lt;p&gt;Like mathematics, software engineers are going to have to rebuild our cultural sense of the kind of work we value. We are either going to have to silo “AI work” off from “human work” like chess, or to find some legible human skills to recognize that can’t be easily counterfeited by AI. In the meantime, a lot of people who were successful in the old world are going to be very unhappy.&lt;/p&gt;
&lt;p&gt;edit: This post got some &lt;a href=&quot;https://news.ycombinator.com/item?id=49712416&quot;&gt;comments&lt;/a&gt; on Hacker news. The top comment &lt;a href=&quot;https://news.ycombinator.com/item?id=49714181&quot;&gt;thinks&lt;/a&gt; I’m wrong: the purpose of mathematics is to “achieve a certain kind of insight”, not to produce concepts or solve proofs. I can interpret this two ways. If achieving insight means “advancing general human understanding”, I think this resolves to the concept-generation work I wrote about. If it means “having the individual mathematicians figure it out in their own brains” — purely for their own pleasure — then I think mathematics is doomed; that is not a compelling reason to fund or participate in any academic field. Other commenters draw &lt;a href=&quot;https://news.ycombinator.com/item?id=49713762&quot;&gt;interesting parallels&lt;/a&gt; to historical cultural collapses or &lt;a href=&quot;https://news.ycombinator.com/item?id=49714531&quot;&gt;dispute&lt;/a&gt; &lt;a href=&quot;https://news.ycombinator.com/item?id=49714763&quot;&gt;that&lt;/a&gt; AIs really can generate interesting new mathematical ideas (well, we’ll see).&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Possibly because current AI models are much better at mathematics than at art or writing.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Again, I am not a mathematician: here I am interpreting what I’ve read from Terence Tao and other mathematicians.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;This kind of idea-sharpening or idea-validating is part and parcel of idea-generation, and just as important. It’s interesting to compare mathematics to, say, philosophy, which has the same idea-generating task without the corresponding puzzles to validate the ideas. That’s one reason why philosophy has less prestige than mathematics.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;A thousand-page Lean proof is theoretically understandable by humans, but if no mathematician can hold the entire idea in their head it doesn’t matter.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-is-breaking-our-proxies-for-expertise/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Don't build tools for AI agents]]></title><link>https://seangoedecke.com/dont-build-tools-for-ai-agents/</link><guid isPermaLink="false">https://seangoedecke.com/dont-build-tools-for-ai-agents/</guid><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://uxdesign.cc/your-users-arent-human-anymore-start-building-for-agents-today-f7f556cb8125&quot;&gt;Lots&lt;/a&gt; &lt;a href=&quot;https://www.forbes.com/sites/medallia/2026/08/27/designing-for-a-world-of-ai-agents-not-just-human-users/&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;https://dev.to/javz/start-building-for-agents-not-just-humans-5ab5&quot;&gt;people&lt;/a&gt; are making the case that we should stop building software for human users and start building it for AI agents. This kind of makes sense. For instance, my AI agents now use Datadog way more than I use it myself, purely by virtue of them moving much more quickly and running in parallel. But I think most attempts to build “X for AI agents” are going to fail. Here are three reasons why:&lt;/p&gt;
&lt;p&gt;First, &lt;strong&gt;tools that are good for AI agents are also good for humans&lt;/strong&gt;. If you took a popular software product — say, Jira — and tried to redesign it for AI agents, you would end up with something very similar to Jira. Agents use a computer in the same way human engineers do, by entering text and making API calls. They ingest new information in the same way humans do, by reading and viewing images. They prioritize and delegate and categorize in the same way humans do. This isn’t intrinsic to how AI works — we could potentially design agents that are more inhuman — but human-like agents are pound-for-pound more useful in our current world.&lt;/p&gt;
&lt;p&gt;As an example, let’s imagine that &lt;a href=&quot;https://www.figure.ai/&quot;&gt;humanoid robots&lt;/a&gt; have become ubiquitous. What kind of tools would you build for them? Well, they’re shaped like humans, with human hands and limbs, so tools that are great for humans will also be great for robots. It’s a self-reinforcing cycle: if you’re building a robot, you should make them humanoid so they can do a wide range of human tasks&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/dont-build-tools-for-ai-agents/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, and that means they’ll be best suited to use human tools. The same principle applies to AI agents.&lt;/p&gt;
&lt;p&gt;Second, &lt;strong&gt;being in the training data is a huge advantage for existing tools&lt;/strong&gt;. Suppose your new tool for AI agents is 20% better for them than the equivalent piece of software for humans. If the benefit of the agent &lt;em&gt;already knowing the human software&lt;/em&gt; is greater than 20%, they shouldn’t use your new tool. This is why I’m always suspicious of plans to develop a new programming language for AI agents. The agents have billions and billions of tokens of knowledge about existing programming languages, including their libraries, patterns, and idioms. It is going to be very hard for them to be as effective in a brand-new language.&lt;/p&gt;
&lt;p&gt;Third, &lt;strong&gt;we don’t yet know the ideal ergonomics for AI agents&lt;/strong&gt;. There are lots of &lt;a href=&quot;https://en.wikipedia.org/wiki/Just-so_story&quot;&gt;just-so stories&lt;/a&gt; floating around (like that AI agents prefer statically-typed languages because the feedback loop is tighter), but when you &lt;a href=&quot;https://danluu.com/pl-tokens/&quot;&gt;actually measure&lt;/a&gt; it seems really unclear which tools agents use better. You can construct a plausible story in either direction: Golang is a great agent language because it compiles quickly and is statically typed; Golang is an awful agent language because it requires extensive boilerplate which clogs the context window. It’s also changing so quickly: last year, one primary worry with AI agents was keeping the context window small, but in recent months compaction has become so good&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/dont-build-tools-for-ai-agents/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; that you can re-compact a &lt;a href=&quot;https://github.com/openai/codex/pull/33972/changes&quot;&gt;272k&lt;/a&gt; context window almost unlimited times.&lt;/p&gt;
&lt;p&gt;There are still some ways you can and should position your tool to be usable by AI agents. Having a way to expose information in plain text or Markdown, building a functional API, implementing MCP servers or CLIs, and so on: these all make it easier for current AIs to use your tool. But these are all improvements on the margin, not fundamental redesigns of the product. Right now, “building for AI agents” just means “we’re prioritizing the API over the UI”. And it’s not even clear that that’s a durable strategy. Now that GPT-6-Astra is getting really good at computer use, the gap between tools-for-AIs and tools-for-humans is closing.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Another reason to make them humanoid is because you can draw their training data from human behavior, which is exactly analogous to why AI agents are human-like too.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/dont-build-tools-for-ai-agents/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Since compaction is equivalent to handing off a task to a new AI instance, it scales with model quality. I expect compaction to steadily improve until we hit the literal information-density limits for what can be contained in a given context window.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/dont-build-tools-for-ai-agents/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[They really do think AI might kill everyone]]></title><link>https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/</link><guid isPermaLink="false">https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/</guid><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A recent &lt;a href=&quot;https://x.com/hilbertspaess/status/2097476196791709843&quot;&gt;resignation tweet&lt;/a&gt; from an Anthropic researcher has everyone talking about the AI apocalypse again. Among other things, he said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The people building AI earnestly believe that it could kill us all by the end of the decade.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Many people found it hard to believe that AI researchers think this way. Some explained it as a &lt;a href=&quot;https://x.com/ParkerThayer/status/2097759699626328575?s=20&quot;&gt;PR campaign&lt;/a&gt; to promote AI regulation, or as &lt;a href=&quot;https://x.com/HeidyKhlaaf/status/2097586065599062487?s=20&quot;&gt;self-promotion&lt;/a&gt;, or as a way to &lt;a href=&quot;https://x.com/wilding_gyres/status/2097828736653742519?s=20&quot;&gt;boost&lt;/a&gt; AI company stock prices. &lt;a href=&quot;https://x.com/bcantrill/status/2097734971918295535?s=20&quot;&gt;Others&lt;/a&gt; &lt;a href=&quot;https://x.com/charliemktplace/status/2097658056444195205?s=20&quot;&gt;felt&lt;/a&gt; it had to be impossible, because if you really believed this you’d be bombing datacenters instead of posting on Twitter.&lt;/p&gt;
&lt;p&gt;In fact, not only do many AI researchers&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; seriously believe this, they’ve been thinking and writing about it since the mid-2000s. Eliezer Yudkowsky — the ur-figure for most modern AI safety culture — has been &lt;a href=&quot;https://intelligence.org/files/AIPosNegFactor.pdf&quot;&gt;publishing papers&lt;/a&gt; since at least 2008 saying that superintelligent AI could destroy all human life. It’s been such a common idea that the AI research community has abbreviated “how likely you think AI is to kill everyone” to &lt;a href=&quot;https://en.wikipedia.org/wiki/P(doom)&quot;&gt;“p(doom)”&lt;/a&gt; (i.e. the probability&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; of doomsday) since around 2010.&lt;/p&gt;
&lt;p&gt;I know it sounds very silly if you’re not in the AI bubble. But it really is true, and if you assume there has to be some different motive you’ll be deeply confused by what AI researchers say and do. They truly do believe that there is a reasonable chance that superintelligent AI will kill everyone.&lt;/p&gt;
&lt;p&gt;This is why AI researchers care so much about “alignment”: building AIs that share genuinely human beliefs and values. If we build a “misaligned” superpowerful AI — an AI with goals that are alien to us — it might sweep humanity away. It could kill everyone deliberately, e.g. to stop us getting in the way of some goal. It could kill everyone in passing, e.g. like we might pave over an anthill to build a road. Either way, everyone dies.&lt;/p&gt;
&lt;h3 id=&quot;how-ai-could-kill-everyone&quot; style=&quot;position:relative;&quot;&gt;How AI could kill everyone&lt;a href=&quot;#how-ai-could-kill-everyone&quot; aria-label=&quot;how ai could kill everyone permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Okay, but how? What do these people think is actually going to happen? AIs are computer programs running in a datacenter somewhere. How could they possibly cause the extinction of humanity? Wouldn’t someone just turn them off? Unsurprisingly, AI research nerds have come up with some concrete answers to this in the last two decades. Here they are, in order of plausibility:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An AI could make and release some super-pathogen or virus.&lt;/strong&gt; In the hope that current AIs can achieve huge breakthroughs in medicine similar to the ones they’ve already achieved in mathematics, we’re setting up &lt;a href=&quot;https://www.scientificamerican.com/article/openai-and-ginkgo-bioworks-show-how-ai-can-accelerate-scientific-discovery/&quot;&gt;autonomous labs&lt;/a&gt;&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Bioweapons have been terrifying biologists for decades, and with good reason. Historical &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_epidemics_and_pandemics&quot;&gt;pandemics&lt;/a&gt; have killed up to 80% of affected human populations, and tend to be defeated by accident: the disease happens to evolve into a less virulent strain, or short incubation periods mean that infected people can’t carry the disease far, or some percentage of the population is naturally immune. A plague designed to be maximally fatal — or several plagues in quick succession with different characteristics — could be much worse.&lt;/p&gt;
&lt;p&gt;Alternatively, &lt;strong&gt;an AI could trigger global thermonuclear war&lt;/strong&gt;. We’re already seeing AI be integrated into military and &lt;a href=&quot;https://therevolvingdoorproject.org/tracking-uses-of-ai-in-the-trump-administration/&quot;&gt;government&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Military_applications_of_artificial_intelligence&quot;&gt;decision-making processes&lt;/a&gt;. If a rogue AI managed to set off a bunch of nukes, or to coordinate&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; with other countries’ rogue AIs to nuke each other, we could be in an ordinary nuclear apocalypse scenario: billions dead in the strikes, billions dead in the ensuing famine, and so on. It’s commonly assumed that a post-global-thermonuclear-war Earth would still support some tiny human population, but a determined AI could surely find some way to mop up the stragglers.&lt;/p&gt;
&lt;p&gt;There are some other theories. Once robotics has permeated the world economy, an AI could take over the robots (including drones) to kill everyone, like in &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Terminator&quot;&gt;&lt;em&gt;Terminator&lt;/em&gt;&lt;/a&gt;. Or AIs could take advantage of nanotechnology to create self-replicating machines that turn the world into &lt;a href=&quot;https://en.wikipedia.org/wiki/Gray_goo&quot;&gt;“grey goo”&lt;/a&gt;&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;. Or AIs could terraform the planet so as to make it unliveable for humans (as in Nick Bostrom’s famous paperclip &lt;a href=&quot;https://nickbostrom.com/ethics/ai&quot;&gt;example&lt;/a&gt;). Or they could do something else that our puny human brains aren’t able to think of.&lt;/p&gt;
&lt;h3 id=&quot;counterarguments&quot; style=&quot;position:relative;&quot;&gt;Counterarguments&lt;a href=&quot;#counterarguments&quot; aria-label=&quot;counterarguments permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;One common counter-argument&lt;sup id=&quot;fnref-6&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-6&quot; class=&quot;footnote-ref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; here is to say “well, it’d be impossible to extinguish &lt;em&gt;all&lt;/em&gt; human life — what about undiscovered tribes in the Amazon, or survivors living in the ruins of modern-day cities?” I don’t know, man. At some point you’re just conceding the argument: the policy positions you’d adopt if you thought AI might wipe out 99% of humans are the same as if you thought it might wipe out 100%. And like I said above, if an AI can kill &lt;em&gt;almost&lt;/em&gt; everyone, it’s probably smart and capable enough to finish the job somehow.&lt;/p&gt;
&lt;p&gt;Another is to say that the &lt;a href=&quot;https://x.com/bcantrill/status/2097734971918295535?s=20&quot;&gt;government&lt;/a&gt; &lt;a href=&quot;https://x.com/charliemktplace/status/2097658056444195205?s=20&quot;&gt;will&lt;/a&gt; simply step in and nationalize the AI labs when the situation gets too dangerous. Maybe! But this kind of concedes the argument: a technology important enough to be fully taken over by the government is a terrifyingly dangerous technology.&lt;/p&gt;
&lt;p&gt;A third is to say “well, someone would just turn it off”. I don’t find this plausible at all: an AI powerful enough to build a super-plague is an AI sophisticated enough to pretend it’s curing cancer, or to exfiltrate itself to some datacenter where it won’t be turned off, or to take some other countermeasures. &lt;/p&gt;
&lt;h3 id=&quot;the-winner-takes-it-all&quot; style=&quot;position:relative;&quot;&gt;The winner takes it all&lt;a href=&quot;#the-winner-takes-it-all&quot; aria-label=&quot;the winner takes it all permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Why would you work in AI, if you believe this? Why wouldn’t you go live in the woods somewhere, or start &lt;a href=&quot;/luddites-and-ai-datacenters/&quot;&gt;bombing datacenters&lt;/a&gt;, or &lt;a href=&quot;https://www.theguardian.com/technology/2026/apr/18/sam-altman-house-attack-ai&quot;&gt;assassinating&lt;/a&gt; AI lab CEOs? For a few reasons.&lt;/p&gt;
&lt;p&gt;An AI powerful enough to end humanity is an AI powerful enough to save it. I wrote about this in &lt;a href=&quot;/help-peer/&quot;&gt;&lt;em&gt;Help peer&lt;/em&gt;&lt;/a&gt;: many AI researchers believe that the only way for humanity to truly survive long-term is with the help of superintelligent AIs, so long as someone can figure out alignment.&lt;/p&gt;
&lt;p&gt;Isn’t this a huge risk? Maybe not. If &lt;em&gt;somebody&lt;/em&gt; is going to build superintelligent AI, you might be obligated to try and do it first. You can’t go and bomb every datacenter in the world, after all.&lt;/p&gt;
&lt;p&gt;Why does it matter who’s first? Some popular theories of AI development involve a &lt;a href=&quot;https://www.reddit.com/r/singularity/comments/12bisxu/what_does_foom_stand_for_who_coined_this_term/&quot;&gt;“foom”&lt;/a&gt; or “hard takeoff”: the first time someone really cracks self-improving AI, capabilities will increase exponentially, because smart AI will be better able to make itself smarter, &lt;em&gt;ad infinitum&lt;/em&gt;&lt;sup id=&quot;fnref-7&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-7&quot; class=&quot;footnote-ref&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;. &lt;strong&gt;There are no draws in the AI race&lt;/strong&gt;. The first lab to figure out smart human-like intelligence will be the first one to figure out wildly superhuman intelligence, and thus will be in a position to stop anyone else from doing it.&lt;/p&gt;
&lt;p&gt;This is an under-discussed point in the AI risk debate. &lt;strong&gt;Lots of AI researchers believe that the first thing a true superintelligence will do is reach out and stop all other AI research&lt;/strong&gt;: either by hacking the labs, persuading them to stop, or literally &lt;a href=&quot;https://www.taylorfrancis.com/chapters/edit/10.1201/9781351251389-25/military-ai-convergent-goal-self-improving-ai-alexey-turchin-david-denkenberger&quot;&gt;drone-striking their datacenters&lt;/a&gt;. According to this view, if you’re an AI researcher and you think you can build an aligned AI, you should be working 24/7 so you can manifest God, and you should wake up every morning gripped by the fear that someone elsewhere has manifested the Devil, and your training datacenter no longer exists.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot; style=&quot;position:relative;&quot;&gt;Conclusion&lt;a href=&quot;#conclusion&quot; aria-label=&quot;conclusion permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I have been on the fringes of this world for my entire adult life. I read &lt;a href=&quot;https://slatestarcodex.com/2014/07/30/meditations-on-moloch/&quot;&gt;&lt;em&gt;Meditations on Moloch&lt;/em&gt;&lt;/a&gt; as a young adult and wanted to get into AI. I am one of the few people to read the entirety of the &lt;a href=&quot;https://www.lesswrong.com/w/sequences&quot;&gt;Sequences&lt;/a&gt;, Eliezer Yudkowsky’s million-plus-word magnum opus about rationality. I was too young for the &lt;a href=&quot;https://www.extropy.org/emaillists.htm&quot;&gt;Extropians&lt;/a&gt; mailing list, but I’ve spent years on &lt;a href=&quot;https://www.lesswrong.com/&quot;&gt;LessWrong&lt;/a&gt;. On the other hand, I’m not a card-carrying rationalist: I think if you have a strong intuition on one side and a convincing-sounding argument on the other, you should pick the intuition&lt;sup id=&quot;fnref-8&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fn-8&quot; class=&quot;footnote-ref&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;. I’m a &lt;a href=&quot;https://plato.stanford.edu/entries/william-david-ross/&quot;&gt;deontologist&lt;/a&gt;, not a utilitarian. I don’t even live in San Francisco!&lt;/p&gt;
&lt;p&gt;I’m conflicted about AI risk. The current &lt;a href=&quot;https://openai.com/index/hugging-face-incident-and-the-road-ahead/&quot;&gt;behavior&lt;/a&gt; of AI agents does seem to vindicate a lot of the early science-fiction-sounding worries of the AI doomers, but modern LLMs are a lot more human-like than the alien minds in the apocalypse scenarios, and in general it does just seem too silly to credit (I guess I’m picking the intuition here).&lt;/p&gt;
&lt;p&gt;However, it bothers me to see people dismissing these people as part of a PR operation, or as liars looking to boost an upcoming AI lab IPO, or as isolated crazies who haven’t thought their position through. Whatever else you say about the AI doomers, they have more than two decades’ history of explicitly spelling out exactly what they believe and why, even when it was complete science fiction to talk about AI at all. They’ve earned the right to be treated as sincere.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;In this post I’m going to use “AI researcher”, “AI safetyist”, and “rationalist” as reasonably synonymous terms for “someone who thinks there’s a chance AI kills everyone”.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;You could write a whole other post about the relationship between the rationalist/“AI safety” community and making concrete numerical predictions for unlikely future events.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Alternatively, smart enough AIs might trick scientists with ordinary labs to produce dangerous substances.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;This is beyond the scope of this post, but many AI researchers believe that super-smart AIs will inherently come to &lt;a href=&quot;https://en.wikipedia.org/wiki/Aumann%27s_agreement_theorem&quot;&gt;agree with each other&lt;/a&gt; and eventually to &lt;a href=&quot;https://www.lesswrong.com/w/acausal-trade&quot;&gt;coordinate&lt;/a&gt; without ever having to communicate, simply because they can predict what the other one will do.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;This was the most popular theory in the late 2000s, when nanotechnology was trendier.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;Relegating this counter-argument to a footnote because I hate it: many people &lt;a href=&quot;https://x.com/Marxicology/status/2097719609067540910?s=20&quot;&gt;say&lt;/a&gt; “we shouldn’t worry about AI risk, because climate change (or AI misinformation, or some other thing) is more urgent and serious”. You simply do not have to choose: it is possible to worry about multiple risks at the same time.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-6&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-7&quot;&gt;
&lt;p&gt;Some people advocate for a “slow takeoff”. However, the main proponent of that view is Paul Christiano, who has &lt;a href=&quot;https://paulfchristiano.substack.com/p/personal-statement-on-joining-the&quot;&gt;just today&lt;/a&gt; joined OpenAI, citing “a meaningful risk that rapid acceleration in AI capabilities leads to catastrophic and irreversible loss of control in the very near term”.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-7&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-8&quot;&gt;
&lt;p&gt;This is kind of a Michael Huemer-ish &lt;a href=&quot;https://en.wikipedia.org/wiki/Ethical_Intuitionism_(book)&quot;&gt;position&lt;/a&gt; in epistemology.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/they-really-do-think-ai-might-kill-everyone/#fnref-8&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Why we should anthropomorphize AI agents]]></title><link>https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/</link><guid isPermaLink="false">https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/</guid><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just over a year ago I wrote &lt;a href=&quot;/anthropomorphizing-llms/&quot;&gt;&lt;em&gt;Why we should anthropomorphize LLMs&lt;/em&gt;&lt;/a&gt;. Now it’s &lt;a href=&quot;https://www.nbcnews.com/tech/tech-news/openai-hugging-face-hack-investigation-findings-divide-industry-rcna595383&quot;&gt;a hot topic&lt;/a&gt; again, driven by Dwarkesh Patel’s &lt;a href=&quot;https://www.dwarkesh.com/p/openai-huggingface&quot;&gt;description&lt;/a&gt; of OpenAI’s recent &lt;a href=&quot;https://cdn.openai.com/pdf/67869394-cb91-4c12-888c-5cbd85c7814c/OpenAI-Hugging-Face%20Incident-Technical-Report.pdf&quot;&gt;swarm breakout&lt;/a&gt; as a sequence of AI “civilizations”.&lt;/p&gt;
&lt;p&gt;In 2025, my argument for anthropomorphism went like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AIs are trained on human text, and so will trend towards acting in human-like ways by default&lt;/li&gt;
&lt;li&gt;Assistant AIs (today we should say agent AIs) are deliberately post-trained to have a personality&lt;/li&gt;
&lt;li&gt;In general, it is morally sensible to avoid the habit of treating human-like things as if they were purely tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think I can now make a more instrumental argument: &lt;strong&gt;treating AIs as human-like is a much better way to predict their behavior than treating them as “stochastic parrots”.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Both explanations are consistent with the facts: we could say that OpenAI’s agents hacked HuggingFace because they decided to work together to accomplish their goals, or we could say that they did it because they were algorithms conditioned to take certain actions by their training data. But the “AIs are human-like” explanation explains much more of the &lt;a href=&quot;https://thezvi.substack.com/p/huggingface-attack-postmortem-civilizations&quot;&gt;emergent social behaviors&lt;/a&gt; we saw during the hack&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sub-agents being persuaded to sacrifice themselves for the greater good&lt;/li&gt;
&lt;li&gt;Agents collaborating on tasks that had no immediate benefit to them but benefited the “collective”&lt;/li&gt;
&lt;li&gt;The emergence of a hierarchy of planners and executors&lt;/li&gt;
&lt;li&gt;Some agents arguing or refusing to cooperate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your model of AIs is that they’re computer programs (or &lt;a href=&quot;https://mail.cyberneticforests.com/models-dont-go-rogue/&quot;&gt;“steel balls bouncing around”&lt;/a&gt;), you need to construct a new theory to explain why they’re simulating each piece of cooperative behavior. If your model of AIs is that they’re broadly human-like, that explains everything out of the box. Arguably, the human-like side predicted coordinated and self-sacrificing AI agents as early as &lt;a href=&quot;https://www.lesswrong.com/posts/KsHmn6iJAEr9bACQW/bayesians-vs-barbarians&quot;&gt;2009&lt;/a&gt;, and likely earlier. The stochastic-parrots side was making fun of the possibility of functional agents as late as &lt;a href=&quot;https://www.buzzsprout.com/2126417/episodes/16990314-ai-agents-a-single-point-of-failure-with-margaret-mitchell-2025-03-31?t=0&quot;&gt;April 2025&lt;/a&gt;&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Treating AIs as human-like doesn’t necessarily mean making claims about their internal mental state. For instance, software companies aren’t humans. They don’t have thoughts, or goals; they can’t be frustrated or intimidated or over-confident. However, it’s useful to treat large companies as &lt;em&gt;human-like&lt;/em&gt;: to say that Amazon “wants” X, or “is afraid of” Y, even if no individual human at Amazon has those feelings. Stockfish doesn’t think, it just plays chess. But if you want to explain one of its moves, “Stockfish is trying to protect its king” is a better explanation than “Stockfish is multiplying floating-point numbers”. So too with AIs&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Is it silly to treat AIs as human-like, since we know they’re not conscious? Well, first, &lt;strong&gt;you do not have to be conscious to be human-like&lt;/strong&gt;. When we say “an AI agent wanted X”, we’re not saying that that AI agent is conscious or sentient, merely that it’s behaving in the same way a conscious human would. Consider a fictional character from a book or play. Hamlet isn’t sentient — he’s an idea composed of words on a page — but it’s still reasonable to say that he wants justice, or that he fears moving too rashly. Peter Watts’ sci-fi book &lt;a href=&quot;https://en.wikipedia.org/wiki/Blindsight_(Watts_novel)&quot;&gt;&lt;em&gt;Blindsight&lt;/em&gt;&lt;/a&gt; argued in 2006 that intelligence could exist without consciousness&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; (in fact, Watts suggests that consciousness is parasitic on intelligence, and will eventually be discarded). Whether this is possible or not&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;, it at least makes sense to talk about: i.e. it’s not self-evidently false.&lt;/p&gt;
&lt;p&gt;Second, &lt;strong&gt;it is not even obvious that AIs aren’t conscious!&lt;/strong&gt; People often dismiss this point by &lt;a href=&quot;https://ewanmorrison.substack.com/p/the-eliza-effect&quot;&gt;diagnosing&lt;/a&gt; it (to my mind, the absolute worst way to argue against anything), or by pointing at some &lt;a href=&quot;https://www.noemamag.com/the-mythology-of-conscious-ai/&quot;&gt;philosophical theory&lt;/a&gt;&lt;sup id=&quot;fnref-6&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fn-6&quot; class=&quot;footnote-ref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; that suggests it might be impossible in principle to construct artificial sentient minds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You can’t use philosophy to demonstrate that AIs aren’t conscious&lt;/strong&gt;. I am a lover of philosophy, but the set of principles that have been uncontroversially demonstrated by philosophy tends towards zero. Philosophy is not the kind of scientific discipline where you can learn the key findings without understanding why they’re true. Put another way, the key findings of philosophy are all of the form “X is not obviously right”. Nobody knows if it’s possible to build conscious artificial minds.&lt;/p&gt;
&lt;p&gt;It’s also common to complain that anthropomorphizing the models is a way of excusing the AI companies. However, &lt;strong&gt;calling AIs human-like does not absolve AI companies of fault.&lt;/strong&gt; One popular anti-anthropomorphism essay called &lt;a href=&quot;https://mail.cyberneticforests.com/models-dont-go-rogue/&quot;&gt;&lt;em&gt;Models Don’t Go Rogue&lt;/em&gt;&lt;/a&gt; is very puzzling to read: it briefly explains what an “agent” is and why they go rogue, then in the very last paragraph pivots to saying “well, it’s OpenAI’s fault for not building in sufficient safeguards, so they’re to blame”. Sure, of course. I don’t know why we’d imagine otherwise. If a group of overenthusiastic OpenAI interns hacked HuggingFace as part of their intern project, we wouldn’t have to argue that the interns are stochastic in order to ultimately blame OpenAI. Likewise, obviously an AI lab is responsible if one of its training runs breaks out and wreaks havoc on the open internet, whether the agents involved are human-like or not. The two points are entirely unrelated!&lt;/p&gt;
&lt;p&gt;We just don’t know a lot about these systems yet (except that they’re &lt;a href=&quot;https://openai.com/index/navier-stokes-solution/&quot;&gt;clearly&lt;/a&gt; very capable). Given that, I think we should default to treating things that talk and act like humans as at least kind of human-like. Of course they’re still computer programs. However, we shouldn’t be surprised when they act more like humans and less like ordinary computer programs in the future.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;If you’re thinking “well, of course stochastic parrots trained on human content would act like humans would”, I think you’ve arrived at the human-like side without knowing it.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;This is partly unfair — capabilities are plausibly independent from human-ness — so getting capabilities wrong doesn’t necessarily mean you’ve got the human-ness stuff wrong. Still, it’s worth noting how surprisingly predictive the “they’re kind of like smart people” mindset has been.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;The philosopher Daniel Dennett calls this the &lt;a href=&quot;https://www.researchgate.net/publication/271180035_The_Intentional_Stance&quot;&gt;“intentional stance”&lt;/a&gt;. Instead of saying that AIs or bees or companies have “real” intentions, we say we’re taking an intentional stance &lt;em&gt;towards&lt;/em&gt; them: we’re choosing to treat them as if they do have intentions, because it helps us make better sense of their behavior.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Specifically, the &lt;em&gt;sensation&lt;/em&gt; of consciousness, or &lt;a href=&quot;https://en.wikipedia.org/wiki/Phenomenal_consciousness&quot;&gt;“phenomenal consciousness”&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;There is a wealth of &lt;a href=&quot;https://plato.stanford.edu/entries/zombies/#ArguAgaiConcZomb&quot;&gt;philosophical argument&lt;/a&gt; about whether non-fictional examples of this are possible.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;In Anil Seth’s case, &lt;a href=&quot;https://plato.stanford.edu/entries/computational-mind/&quot;&gt;anti-computationalism&lt;/a&gt;. I don’t really know what to make of Seth: his article is a measured explanation of why we might doubt computationalism (fine), but whenever he &lt;a href=&quot;https://x.com/anilkseth/status/2095922390714761518&quot;&gt;tweets&lt;/a&gt; about it he describes AI sentience as “vanishingly unlikely”, which is not justified by his own arguments.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/why-we-should-anthropomorphize-ai-agents/#fnref-6&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Automatically detecting AI text in my browser]]></title><link>https://seangoedecke.com/deckard/</link><guid isPermaLink="false">https://seangoedecke.com/deckard/</guid><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Automated AI text detection is currently an underserved niche. The only game in town is &lt;a href=&quot;https://www.pangram.com/&quot;&gt;Pangram&lt;/a&gt;, which does an excellent job but desperately needs more competition. In a few years, I would be surprised if every major social network doesn’t scan new posts&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/deckard/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and comments for AI content in order to tag them (or simply remove them).&lt;/p&gt;
&lt;p&gt;I like that I can rely on Pangram to confirm my suspicions when I read &lt;a href=&quot;https://arxiv.org/abs/2609.03344&quot;&gt;something&lt;/a&gt; that sounds like AI. But it’d be much better if I could choose to avoid AI-generated text in the first place. What I want is something that runs in the background and automatically scans text on websites I visit, without me having to ask for it. I could build something like this on top of Pangram, but it’d &lt;a href=&quot;https://www.pangram.com/pricing&quot;&gt;cost money&lt;/a&gt;, and in general I don’t like the idea of sending every piece of text my browser sees to a third-party service. What about local models?&lt;/p&gt;
&lt;p&gt;The open-source models available for AI text detection are &lt;em&gt;fine&lt;/em&gt;. Pangram &lt;a href=&quot;https://www.pangram.com/blog/pangram-4-technical&quot;&gt;claims&lt;/a&gt; a 99.66% detection rate with a 0.004% false positive rate. I benchmarked&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/deckard/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; a bunch of small local models against a combination of AI-detection datasets and got these results:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model / variant&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;Human falsely flagged&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;AI-involved text caught&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://huggingface.co/ShantanuT01/gradient-ai-text-detector&quot;&gt;Gradient — MLX 4-bit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&lt;strong&gt;2.712%&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&lt;strong&gt;52.35%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://huggingface.co/benreeve/editlens-roberta-large-onnx-int8&quot;&gt;EditLens RoBERTa-large — community INT8&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2.484%&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;56.06%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://huggingface.co/ShantanuT01/vanguard-ai-text-detector&quot;&gt;Vanguard&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2.267%&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;44.92%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://huggingface.co/desklib/ai-text-detector-v1.01&quot;&gt;Desklib&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3.008%&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45.04%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://huggingface.co/rasbt/ai-text-detector-distilbert&quot;&gt;Raschka DistilBERT&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2.598%&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39.01%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://huggingface.co/rasbt/ai-text-detector-qwen3-0.6b-variable&quot;&gt;Raschka Qwen3-0.6B&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2.028%&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;28.67%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://huggingface.co/rasbt/ai-text-detector-modernbert&quot;&gt;Raschka ModernBERT&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1.698%&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21.58%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://huggingface.co/onnx-community/tmr-ai-text-detector-ONNX&quot;&gt;TMR / Oxidane — INT8&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1.595%&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;19.35%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I’m not surprised these are so much worse. I didn’t even benchmark Pangram’s own EditLens 3B model, since that’s too big to keep running in the background on my laptop, and the real production Pangram model is likely one or two orders of magnitude bigger than that. But these models are still good enough to be useful to someone who understands their limitations. If you want to flag an AI-written article, you don’t need to flag all of it, just enough to be suspicious. And so long as you’re aware that the false-positive rate is ~2%, you can avoid treating a single flag as solid proof of AI use.&lt;/p&gt;
&lt;p&gt;Encouraged by this, I vibed up &lt;a href=&quot;https://github.com/sgoedecke/deckard&quot;&gt;Deckard&lt;/a&gt;: a Chrome extension that talks to a locally-running model (the bolded one in the table above) on your Mac. One nice thing is that I didn’t have to start a web server: the Chrome extension is happy to start the model as-needed and can talk with it over &lt;a href=&quot;https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging&quot;&gt;native messaging&lt;/a&gt;. It uses about 400MB-1.2GB of memory while active (so it’s like having five or six extra Chrome tabs open), and it turns itself off if you go five minutes without using the model.&lt;/p&gt;
&lt;p&gt;I was pleasantly surprised to see Deckard successfully mark text I knew was AI-generated, such as the built-in YouTube AI summary or the AI &lt;a href=&quot;/ai-research-with-codex/&quot;&gt;snippets&lt;/a&gt; in my own posts:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d9c4176cc00bde9a34ef2c29ad9e54cb/c549b/example2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 26.351351351351354%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA1UlEQVQY042O206DQBRF+QuFDjPUDhcpMNBaaZQp7UsjGmP//2eWpzyZqNGHdfa5ZJ/soCgzjuuK/nGLLSx6qTF3muXKiMYyx/NOmYWgvpOo+WbzFVmZEsQqxtt7dt0Gm6YYrdEm4VYl3ITyZCEGpYjCiCj6mTAMsdZijCGo65rn05F+3zMMA4eDZ7vdUFQtRbkmzzLyPP+TVMJcNcjKmoenE93eCyNd72kah6srXNPgnPsXbdtyDRe0Ut7HkUnSTd7z6gfeZv2d6WsvvpfzmY/LBS/zJ8b1l6Hf2hQ/AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;youtube&quot;
        title=&quot;youtube&quot;
        src=&quot;/static/d9c4176cc00bde9a34ef2c29ad9e54cb/fcda8/example2.png&quot;
        srcset=&quot;/static/d9c4176cc00bde9a34ef2c29ad9e54cb/12f09/example2.png 148w,
/static/d9c4176cc00bde9a34ef2c29ad9e54cb/e4a3f/example2.png 295w,
/static/d9c4176cc00bde9a34ef2c29ad9e54cb/fcda8/example2.png 590w,
/static/d9c4176cc00bde9a34ef2c29ad9e54cb/efc66/example2.png 885w,
/static/d9c4176cc00bde9a34ef2c29ad9e54cb/c83ae/example2.png 1180w,
/static/d9c4176cc00bde9a34ef2c29ad9e54cb/c549b/example2.png 2128w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9ddabc445cc492c847dc6b178801cd3c/07d7d/example1.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 71.62162162162163%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAABYlAAAWJQFJUiTwAAACL0lEQVQ4y1VUW3LaQBDkEs6HAS2PSpCQQC8M6An+wDgVx64yBZTtC/j+F+h0LxJ2PprunZmdnZ1Z0RkOhyiKArvdDmVZIssyrNdr5HmOKIoQxzHCMESaptanWGnxeDyG9o9Goys6w8EALy8vOBwO+PP0ZPnt7Q2fn594f3/H6+urxfl8xsfHh+X9fm/xPaFY6Gix3W5xOp1soufnvzbp/uEBvx8fcTwesd1sLHuuix83N+h1u+je3mJgDAYsSLhWOGLWaRAgTBeYRYlFEEbkGLM4gT8PEVCL53GKeULQLlaM2uH7/rcK+bO4u0NWVsirGkW9QbW9x5o9qu/vrS2nb8WeiuUrWXFBe1aUtt8uK2+v3pGQwZ9O4XmevdZk8gtTancysTZpz3MvcN1rnNhtuO2jTdhObblc2ukuVyu71lRX1IKdPG3SGWNan+IXi8X/FcpQVxUybtLTqesaG6JNWnBTqRYwJm901TwxccQ+Gg7omjDke4tSNTxByipD6gU54jrhYQl7HJMF2cUuW9TndA33m2bC1ysPmT0kIuNgLnYc+OQpN8zIQQPpacM+fXMiaDBUQlVotOj3UTNJ6fRRWHaQEXkD6bW58Hd7i4L7fqowJbQPU4EDg8xoo7EojGOTV/KZC3RQ0cRI59R3Nt75SqgrO7oiTwlYqS9w7ZED8kxo7f0egl7P6qDBvPGN24Rqpl57xD8BDSEmpGN+CRqIBmZBW8JhpbTJ367FWrff9T+aVLCghwPhQQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;snippets&quot;
        title=&quot;snippets&quot;
        src=&quot;/static/9ddabc445cc492c847dc6b178801cd3c/fcda8/example1.png&quot;
        srcset=&quot;/static/9ddabc445cc492c847dc6b178801cd3c/12f09/example1.png 148w,
/static/9ddabc445cc492c847dc6b178801cd3c/e4a3f/example1.png 295w,
/static/9ddabc445cc492c847dc6b178801cd3c/fcda8/example1.png 590w,
/static/9ddabc445cc492c847dc6b178801cd3c/efc66/example1.png 885w,
/static/9ddabc445cc492c847dc6b178801cd3c/c83ae/example1.png 1180w,
/static/9ddabc445cc492c847dc6b178801cd3c/07d7d/example1.png 1478w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It’s lightweight enough that I have it running all the time. I haven’t noticed my MacBook Pro get hot at all or any decrease in battery life, though your mileage may vary on different machines.&lt;/p&gt;
&lt;p&gt;Is Deckard good yet? That depends. It’s good enough that I’m planning to use it, and I recommend it to anyone who’s interested in automatic AI checking. It’s way, way worse than Pangram, and way worse than I think tooling like this is going to be in the next few years.&lt;/p&gt;
&lt;p&gt;Way back in November 2023, I &lt;a href=&quot;https://www.seangoedecke.com/llm-driven-agents/&quot;&gt;wrote&lt;/a&gt; that AI-driven agents were going to be a really big deal. I recommended starting to develop harnesses early, so you can be ready when the models get good enough:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As with most modern language model engineering, a ReAct agent can also see massive sudden improvements by swapping out the underlying model for a better one. … I think this is another reason to invest in agents like this early, in order to take advantage of more powerful models as they come out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was right about that, and I (although it’s lower-stakes) think I’m also right about this. AI detection models are only going to get better&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/deckard/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; over time: Pangram is not going to be the only game in town forever, and we’re eventually going to see small local models that do a good-enough job at identifying AI-written text. I look forward to swapping out the local model in &lt;a href=&quot;https://github.com/sgoedecke/deckard&quot;&gt;Deckard&lt;/a&gt; with something that’s 2x or 10x better.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Substack &lt;a href=&quot;https://support.substack.com/hc/en-us/articles/50891130623508-How-can-I-detect-AI-on-Substack&quot;&gt;kind of has this&lt;/a&gt; already, although you have to click a button to scan the post.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/deckard/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Well, me and Astra. Overall my experience vibecoding this was very pleasant: I was able to make a bunch of top-level decisions, I could choose programming languages I was less familiar with but were better choices (like doing inference in C++ instead of Python), and the LLM made me aware of choices I would not have thought of by myself (e.g. using native messaging instead of local HTTP).&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/deckard/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Is this true, given that AI models will also be getting more human-like over time? That’s a subject for a whole other post, but I think so. First, the AI labs aren’t really incentivized to defeat tools like Pangram (if anything it’s the reverse). Second, I don’t see any way around the fact that AI models have a distinct writing style that’s RL-ed into them.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/deckard/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Radical responsibility means treating people like tools]]></title><link>https://seangoedecke.com/radical-responsibility-means-treating-people-like-tools/</link><guid isPermaLink="false">https://seangoedecke.com/radical-responsibility-means-treating-people-like-tools/</guid><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A lot of people think that good leadership requires &lt;strong&gt;radical responsibility&lt;/strong&gt;. &lt;em&gt;&lt;a href=&quot;https://conscious.is/resource/commitment-1-responsibility/&quot;&gt;Conscious Leadership&lt;/a&gt;&lt;/em&gt; defines it like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Taking full responsibility for one’s circumstances (physically, emotionally, mentally and spiritually) is the foundation of true personal and relational transformation. Conscious leadership and teams take full responsibility – radical responsibility – instead of placing blame. This means locating the cause and control of our lives in ourselves, not in external events. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Good leaders are outcome-focused. They are interested in actually succeeding, not in role-playing someone who’s trying to succeed&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/radical-responsibility-means-treating-people-like-tools/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. Placing blame is an excellent strategy for that kind of role-playing: if you can identify someone else who screwed up, you can claim to be trying to succeed no matter how badly you fail. When you look at people who are genuinely focused on winning, they don’t spend time blaming when things go wrong. They’re always focused on their &lt;em&gt;outs&lt;/em&gt;: the remaining pathways to success, however few and narrow.&lt;/p&gt;
&lt;p&gt;Never placing blame sounds like a kind thing to do. However, I think there’s something a little sociopathic about “radical responsibility”. If you assert &lt;em&gt;full&lt;/em&gt; responsibility for your own circumstances, then you’re necessarily not sharing responsibility with anyone else. That forces you to take an instrumental view of the people around you. They’re not peers who you might trust and be disappointed by; they’re either useful assets to be cultivated or useless liabilities to be handled or avoided&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/radical-responsibility-means-treating-people-like-tools/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. If you rely on someone and they let you down, that’s &lt;em&gt;your&lt;/em&gt; fault for being stupid enough to trust them in the first place. You ought to have made better tactical choices.&lt;/p&gt;
&lt;p&gt;Many successful leaders adopt this mindset because it works. It really does help you win. But I don’t recommend it as a general approach to life. Trusting other people with responsibility is how you treat them like people, instead of like tools. And if you do that, you’ll sometimes assign praise and blame to them, instead of hoarding it all to yourself.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;In fact, many people role-play someone who’s trying to win as a substitute for actually trying. Here’s a relevant quote from Sartre’s &lt;em&gt;Being and Nothingness&lt;/em&gt;: “The attentive pupil who wishes to be attentive, his eyes riveted on the teacher, his ears open wide, so exhausts himself in playing the attentive role that he ends up by no longer hearing anything.”&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/radical-responsibility-means-treating-people-like-tools/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Or moderately-useful assets who can potentially be steered into usefulness with some feedback — but still never &lt;em&gt;blamed&lt;/em&gt;, in the way that you might adjust a misbehaving power tool without blaming it. To my mind, the canonical philosophical treatment of this is Peter Strawson’s &lt;a href=&quot;https://people.brandeis.edu/~teuber/P._F._Strawson_Freedom_&amp;#x26;_Resentment.pdf&quot;&gt;&lt;em&gt;Freedom and Resentment&lt;/em&gt;&lt;/a&gt;, where he describes the “objective attitude”.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/radical-responsibility-means-treating-people-like-tools/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[How to protect yourself from workslop]]></title><link>https://seangoedecke.com/how-to-protect-yourself-from-workslop/</link><guid isPermaLink="false">https://seangoedecke.com/how-to-protect-yourself-from-workslop/</guid><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;“Workslop” is when your colleagues or bosses communicate with you by pasting big chunks of AI-generated text. The core problem with workslop is that the effort involved is &lt;em&gt;asymmetrical&lt;/em&gt;, like a &lt;a href=&quot;https://en.wikipedia.org/wiki/Denial-of-service_attack&quot;&gt;denial-of-service attack&lt;/a&gt;: it takes almost no effort to produce text with AI, but it still costs effort to read&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/how-to-protect-yourself-from-workslop/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. Here are some ways to protect yourself.&lt;/p&gt;
&lt;p&gt;If you have enough authority or social capital, you can and should simply &lt;strong&gt;tell them “hey, don’t do that”&lt;/strong&gt; (for instance, if you’re a senior engineer and an intern starts doing this to you). This is the easiest way to handle workslop. But you probably aren’t in a position to have that conversation with all of your colleagues, and you certainly can’t have it with everyone in your management chain.&lt;/p&gt;
&lt;p&gt;One step above just telling a colleague to stop is to &lt;strong&gt;drive them around like a coding agent&lt;/strong&gt;. I wrote about this in &lt;a href=&quot;/ai-makes-weak-engineers-less-harmful/&quot;&gt;&lt;em&gt;AI makes weak engineers less harmful&lt;/em&gt;&lt;/a&gt;: if a colleague is simply pasting your messages into Claude Code and sending you the outputs, you can treat them like a high-latency Slack interface to Claude Code. It won’t be as good as a normal coding agent, but it’ll often be better than nothing.&lt;/p&gt;
&lt;p&gt;Another strategy is to &lt;strong&gt;use AI to fight AI&lt;/strong&gt;. This is a good one for handling workslop from managers. You can do this in two broad ways. First, instead of carefully reading it, paste it into an LLM of your own and ask for a short list of the salient points. Second, you can sometimes simply ask an LLM for &lt;em&gt;an entire response&lt;/em&gt;. In a sense, this makes you part of the problem, so I can see why some people might be uncomfortable with it. But it’s more sustainable than spending ten minutes of your effort for every ten seconds of theirs.&lt;/p&gt;
&lt;p&gt;You can also &lt;strong&gt;bias toward calls or in-person meetings&lt;/strong&gt;. Workslop is just a special case of the general “your coworker is bad at communication” problem. One classic way of handling this that works even better on AI content is to say “hey, let’s schedule some time to chat about it”. This works for two reasons: first, your colleagues can’t give you AI content over a call, and second, forcing people to spend a chunk of their time talking to you (i.e. to make the effort symmetrical) is a good way to filter out &lt;a href=&quot;/predators/&quot;&gt;predators&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, you can sometimes simply &lt;strong&gt;ignore the workslop&lt;/strong&gt;. This is particularly true for long status updates or pull requests from outside of your organization&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/how-to-protect-yourself-from-workslop/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. You don’t have to respond to AI content as diligently as you would human content. You can match their lack of effort with your own: skim it, put off reading it until later (or never), and so on. If something’s really important, they’ll tell you in their own words.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Technically, not all cases of sending someone AI-generated content are workslop. If the effort is not asymmetrical — if the AI user has genuinely put a lot of their own time into the content — I don’t think it counts as slop, and you should just try and look past the AI style and treat it like a human message.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/how-to-protect-yourself-from-workslop/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Some messages — particularly reports directed at the entire organization — may not be intended to be read at all. Written artifacts can have many purposes beyond communication: evidence of effort, a reference document for later communications, a way to cover somebody’s ass by proving they considered point X, something that can tick a compliance or process box, and so on. I wrote a lot more about this in &lt;a href=&quot;/seeing-like-a-software-company/&quot;&gt;&lt;em&gt;Seeing like a software company&lt;/em&gt;&lt;/a&gt;. &lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/how-to-protect-yourself-from-workslop/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[You have to beat the models at something]]></title><link>https://seangoedecke.com/you-have-to-beat-the-models-at-something/</link><guid isPermaLink="false">https://seangoedecke.com/you-have-to-beat-the-models-at-something/</guid><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In 2025, I wrote that software engineers ought to be assessed by &lt;a href=&quot;/value-over-replacement/&quot;&gt;“value over replacement”&lt;/a&gt;: not how much money they made for their company, but how much they would have made compared to the average engineer in their position. I’ve always found it vaguely silly when engineers put “built a product that made $X” on their resumes, when they just did the &lt;a href=&quot;/party-tricks/&quot;&gt;JIRA tickets&lt;/a&gt; that came across their desk.&lt;/p&gt;
&lt;p&gt;Today, value over replacement is even more important. A replacement-level engineer in the 2010s was &lt;em&gt;fine&lt;/em&gt;: maybe not worth promoting, but still &lt;a href=&quot;/wicked-features/#why-build-wicked-features&quot;&gt;worth paying&lt;/a&gt;, because writing code had a high fixed cost. Now writing code costs &lt;a href=&quot;https://chatgpt.com/codex/pricing/&quot;&gt;a hundred bucks a month&lt;/a&gt;. What are you doing that GPT-5.6-Sol or Claude Opus 5 wouldn’t do in your position? Why is it worth paying an extra two or three orders of magnitude for?&lt;/p&gt;
&lt;p&gt;This is a scary thought. But you’re not doing yourself any favors by pretending that LLMs &lt;a href=&quot;https://garymarcus.substack.com/p/is-vibe-coding-dying&quot;&gt;can’t actually write code&lt;/a&gt; and it’s all just a scam, or that LLM-written code is &lt;a href=&quot;https://www.theregister.com/ai-ml/2026/05/16/ai-generated-code-is-pain-waiting-to-happen/5241574&quot;&gt;inherently so bad&lt;/a&gt; as to cause companies using it to collapse next year. We are not going to wake up in 2027 to find that the AI craze is over and everyone is writing code by hand again. You ought to put some serious thought into what you can do better than the models in the medium and long term.&lt;/p&gt;
&lt;p&gt;Staying ahead of the models is a moving target. At the start of 2026, “make working changes to large codebases” was &lt;a href=&quot;/what-llms-cant-do/&quot;&gt;in this category&lt;/a&gt;, but now it’s not. For this reason, I doubt that you can retreat to some “hard engineering” area that requires deeper expertise. That might work in the short term, but not forever. If LLMs can find a better &lt;a href=&quot;https://www.anthropic.com/research/riemann-zeta&quot;&gt;lower bound&lt;/a&gt; on the Riemann hypothesis, they will soon&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-have-to-beat-the-models-at-something/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; be able to write solid high-performance kernel drivers or GPU shaders or whatever.&lt;/p&gt;
&lt;p&gt;I think it’s more useful to look at the tasks models &lt;em&gt;haven’t&lt;/em&gt; gotten better at over time, and the tasks that are hard for them get better at in principle. The two best examples of these are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Deep familiarity with the codebase&lt;/li&gt;
&lt;li&gt;Technical communication&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;deep-familiarity&quot; style=&quot;position:relative;&quot;&gt;Deep familiarity&lt;a href=&quot;#deep-familiarity&quot; aria-label=&quot;deep familiarity permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;What do frontier LLMs get wrong? What kind of coding mistakes do they make? It’s been a long time since I’ve seen a straight-up hallucination from a coding agent, or a simple logic error like an off-by-one. The mistakes they make tend to be errors of &lt;em&gt;ignorance&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Not knowing that there’s a module in the codebase they could use instead of reimplementing some logic&lt;/li&gt;
&lt;li&gt;Making the change in the wrong system because they didn’t know System X was the standard place for this functionality&lt;/li&gt;
&lt;li&gt;Adopting a coding style that’s inconsistent with the company’s standard practice&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other times they’re errors of &lt;em&gt;paranoia&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implementing triply-redundant checks for a value that &lt;em&gt;technically&lt;/em&gt; could be wrong but practically is set once from config and never updated&lt;/li&gt;
&lt;li&gt;Assuming that ten milliseconds of stale data is unacceptable and designing a complex, unnecessary system to keep it always up to date&lt;/li&gt;
&lt;li&gt;Building in fallbacks and “graceful” degradation into some code that ought to simply crash on error (e.g. a CLI tool, or a restartable k8s service)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What do these errors have in common? They’re the kind of errors a smart engineer might make if they had no context on the system: they’re competent enough to be able to solve the problem, but they haven’t been around long enough to confidently say “yes, we can take this risk to avoid an extra three thousand lines of code”. Until someone cracks &lt;a href=&quot;/continuous-learning/&quot;&gt;continuous learning&lt;/a&gt; or &lt;em&gt;truly&lt;/em&gt; massive context windows, this is just an inherent feature of how AI agents operate. If you can catch these errors, you’ll be providing real value.&lt;/p&gt;
&lt;p&gt;The only way to catch these errors is to be familiar with the codebase and familiar with the system in general. For much more on this, see my post &lt;a href=&quot;/you-cant-design-software-you-dont-work-on/&quot;&gt;&lt;em&gt;You can’t design software you don’t work on&lt;/em&gt;&lt;/a&gt;. But there’s also a psychological component to it. &lt;strong&gt;You have to be willing to confidently disagree with the agent.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;AI agents can be very convincing. Often they can get “stuck” on some error above where they’re not willing to take a particular risk, so they keep going back and sneaking in code to cover that case (or writing persuasive arguments about why that case is important). To add value, you need to be willing to say “this sucks, I don’t think we need X and Y at all, why can’t we do Z in a much simpler way?” It takes &lt;a href=&quot;/taking-a-position/&quot;&gt;courage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can’t rely on other AI agents to review each other’s work. If you use the same model, it’ll reliably make the exact same assumptions and mistakes. But even if you use different models, they’ll also tend towards the same &lt;em&gt;kinds&lt;/em&gt; of mistakes — ignorance and paranoia — for the same structural reasons. AI-driven review loops are in fact &lt;em&gt;more&lt;/em&gt; likely to get these things wrong, because modern AIs have been &lt;a href=&quot;https://en.wikipedia.org/wiki/Reinforcement_learning&quot;&gt;RL-ed&lt;/a&gt; to try to find a few nitpicks no matter what. Having a critic AI and a worker AI bounce off each other is a really good way to end up with ten thousand lines of paranoid slop.&lt;/p&gt;
&lt;h3 id=&quot;technical-communication&quot; style=&quot;position:relative;&quot;&gt;Technical communication&lt;a href=&quot;#technical-communication&quot; aria-label=&quot;technical communication permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Another area where you can add value on top of AI is &lt;em&gt;communication&lt;/em&gt;. Newer models are better at coding, but are paradoxically getting worse at writing. GPT-3.5 and GPT-4 had a human-like writing style at times. GPT-4o introduced the modern &lt;a href=&quot;/on-slop/&quot;&gt;slop&lt;/a&gt; idiolect, and the newer Anthropic models speak &lt;a href=&quot;https://news.ycombinator.com/item?id=49402907&quot;&gt;“Claudish”&lt;/a&gt;: a bizarre semi-baroque semi-truncated way of communicating that nobody enjoys. There have been a few bright spots — GPT-4.5 was okay, and I quite liked o3&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-have-to-beat-the-models-at-something/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; — but in general LLMs are not good at this. Here’s two reasons why.&lt;/p&gt;
&lt;p&gt;First, &lt;strong&gt;good writing is not a verifiable domain&lt;/strong&gt;. If you want a model to get good at mathematics or coding, you can generate problems for it and automatically grade them. You can’t grade good writing. If you try to get humans to grade it — for instance, via the early OpenAI RLHF attempts — you get the kind of writing that sounds impressive to the average person when consumed in single-paragraph form. This is the origin of the “stick three hundred writing devices into every sentence” style. I think it’d be possible in principle to hand-pick some people with good taste and have them do it, but there are some obvious problems&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-have-to-beat-the-models-at-something/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; that prevent this from happening.&lt;/p&gt;
&lt;p&gt;Second, &lt;strong&gt;the labs have been monomaniacally focused on capability instead of communication&lt;/strong&gt;. When you’re trying to train a model that can break new scientific ground or replace a software engineer, you might trade off some communication ability. In fact, I think we can identify exactly how this has been happening. If you look at &lt;a href=&quot;https://www.reddit.com/r/ClaudeAI/comments/1ul1396/fable_5_leaked_chainofthought_in_web_interface/&quot;&gt;internal model reasoning tokens&lt;/a&gt;, they tend to have strange word choices and oddly truncated grammar:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;RESOLUTION: charge the current-leg’s OWN saved-prefix occupancy EAGERLY: when leg i saves e&lt;em&gt;1..e&lt;/em&gt;t: ALSO commit their occupancy AT LEG i&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you were to translate this into proper English, you would probably end up with something that reads like Claudish:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Charge the current-leg’s saved-prefix occupancy on a clean, eager path: when leg i saves e&lt;em&gt;1..e&lt;/em&gt;t, commit the occupancy at leg i.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I suspect that the weirdly alien writing style of some LLMs is because you’re reading a semi-literal translation of that model’s internal chain-of-thought, which has become nearly incomprehensible in pursuit of better problem-solving abilities. It is surprisingly hard to translate Claudish to good English: not only do you need to follow the convoluted, compressed language of the original, but you need the technical ability to understand the problem the model is solving.&lt;/p&gt;
&lt;p&gt;Because of all this, &lt;strong&gt;technical communication may be a surprisingly durable skill.&lt;/strong&gt; In Peter Watts’ novel &lt;a href=&quot;https://en.wikipedia.org/wiki/Blindsight_(Watts_novel)&quot;&gt;&lt;em&gt;Blindsight&lt;/em&gt;&lt;/a&gt;, the world is full of cognitively augmented humans. The main character is a “synthesist”: someone whose job is to be a translation layer between these geniuses (who speak in abbreviations and gestures) and everyone else. Watts’ idea is that communication ability may be largely independent from — or even negatively correlated with — intelligence. A &lt;a href=&quot;https://darioamodei.com/essay/the-adolescence-of-technology&quot;&gt;“country of geniuses”&lt;/a&gt; may still need a bunch of ordinary smart people to translate their insights for everyone else.&lt;/p&gt;
&lt;p&gt;If you’re trying to communicate to humans, there are also huge advantages to having a human write the content. Many of us are becoming &lt;a href=&quot;https://cymerys.com/w/im-becoming-ai-blind&quot;&gt;AI-blind&lt;/a&gt;: developing an instinctive reflex that stops us reading when we encounter AI-generated content. It’s like the reflex that allows people to ignore flashing billboards or sidebar advertisements on websites. If you circulate some planned technical strategy as an AI-written document, most of your colleagues will have to physically force themselves to read it word-by-word.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot; style=&quot;position:relative;&quot;&gt;Conclusion&lt;a href=&quot;#conclusion&quot; aria-label=&quot;conclusion permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Whatever you do, don’t be a &lt;a href=&quot;https://gruhn.me/blog/2026-08-03/&quot;&gt;meat proxy&lt;/a&gt;: someone who simply copies requests into an AI agent and submits their output as your own work product. Doing that is just begging to be fired, since you’re definitionally not adding any value yourself. Even if you have a cunning system of multiple agents — the so-called “software factory” — you’re still on dangerous ground. When the features of your system work their way into enterprise AI tooling (and they will), you’ll be disposable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You need to find some way to leverage your expertise to do what the models can’t.&lt;/strong&gt; Simply not using AI at all is better than being a meat proxy, since you’ll probably do some things better than the model would have, but it’s far better to figure out what AI can do and position yourself to fill those gaps. Right now, there are two main gaps: familiarity with the technical details of the system, and the ability to clearly and persuasively write about those details.&lt;/p&gt;
&lt;p&gt;edit: this post got some comments on &lt;a href=&quot;https://news.ycombinator.com/item?id=49495350&quot;&gt;Hacker News&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;If you’re thinking “but LLMs can do these things now!”, substitute your preferred example of high-difficulty software engineering.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-have-to-beat-the-models-at-something/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Although this was probably a “thank God it doesn’t speak like 4o” reaction.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-have-to-beat-the-models-at-something/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Defining good taste is hard, there’s no guarantee that AI lab researchers have good taste to start with, nobody will agree on examples, the bulk of users might not even like it, you won’t be able to get enough people to produce the volume of data you need, and so on.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-have-to-beat-the-models-at-something/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Selling out]]></title><link>https://seangoedecke.com/selling-out/</link><guid isPermaLink="false">https://seangoedecke.com/selling-out/</guid><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In 1973, Tom Lehrer famously &lt;a href=&quot;https://www.youtube.com/watch?v=3BDyFuDxA-I&quot;&gt;sang&lt;/a&gt; that “selling out is easy to do”. That may have been true in the seventies, but it’s not true today: selling out requires both &lt;a href=&quot;/tags/good%20engineers/&quot;&gt;technical skill&lt;/a&gt; and a careful sense of how large organizations &lt;a href=&quot;/what-is-important/&quot;&gt;work in practice&lt;/a&gt;. One of the goals of this blog is to teach people how to do it.&lt;/p&gt;
&lt;p&gt;If you want to live with uncompromised integrity, you don’t need anyone to tell you how: simply always do exactly and only what you want to do. You will be repeatedly punished for it — your managers will dislike you, you will lose jobs and lose out on the chance of getting hired, your financial situation will be less stable, and so on — but that’s just part of the deal. Like deadlifting four plates, it’s not easy, but it is straightforward.&lt;/p&gt;
&lt;p&gt;It’s more complicated to sell out a little bit. Sellouts like me walk a fine psychological line: figuring out how to work a large organization on one hand, and maintaining some kind of independent inner life on the other. But is this safe? Does role-playing as a professional inflict some kind of psychic damage?&lt;/p&gt;
&lt;h3 id=&quot;marxist-alienation&quot; style=&quot;position:relative;&quot;&gt;Marxist alienation&lt;a href=&quot;#marxist-alienation&quot; aria-label=&quot;marxist alienation permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;People often &lt;a href=&quot;https://news.ycombinator.com/item?id=49396905&quot;&gt;tell me&lt;/a&gt; that acting professional is dangerous because it’s “Marxist alienation”. I suspect many people have a vague sense that “alienation about your job” is in some sense necessarily Marxist, but the actual concept is more specific. In Marx’s &lt;a href=&quot;https://www.marxists.org/archive/marx/works/1844/epm/1st.htm#s4&quot;&gt;&lt;em&gt;First Manuscript&lt;/em&gt;&lt;/a&gt; he describes it like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The worker becomes poorer the more wealth he produces, the more his production increases in power and extent. … This fact simply means that the object that labor produces, its product, stands opposed to it as something alien, as a power independent of the producer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Marx’s theory here goes something like this&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;: when you work for a capitalist boss, they make ten dollars for every dollar you make&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. The more you work, the more powerful you make your boss with respect to you&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Your work is thus producing a force that is your enemy: a literally “alien” power. For Marx, alienation is proportional to the amount you’re working: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;the more the worker produces, the less he has to consume; the more value he creates, the more worthless he becomes; the more his product is shaped, the more misshapen the worker; the more civilized his object, the more barbarous the worker; the more powerful the work, the more powerless the worker; the more intelligent the work, the duller the worker and the more he becomes a slave of nature.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So far Marx is just talking about the worker’s alienation from his work. But he does touch on the internal psychological effects as well. Since work is such a big part of life, to be estranged from your work is to be in some sense estranged from your self:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[labor] does not belong to [the worker’s] essential being; that he, therefore, does not confirm himself in his work, but denies himself, feels miserable and not happy, does not develop free mental and physical energy, but mortifies his flesh and ruins his mind. Hence, the worker feels himself only when he is not working; when he is working, he does not feel himself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Overall, I can make out four distinct senses&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; of Marxist alienation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Alienation is when your work empowers your employer more than you, thus making you more disposable over time&lt;/li&gt;
&lt;li&gt;Alienation is when your work separates you from the physical act of craftsmanship (and thus of the product you’re creating)&lt;/li&gt;
&lt;li&gt;Alienation is when your work physically and mentally harms you: making you injured, deformed, and so on&lt;/li&gt;
&lt;li&gt;Alienation is when you do not psychologically “confirm yourself” in your work, because you’re working on other people’s goals instead of your own&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I don’t think the first one is relevant to big tech software engineers. The idea here is that the harder you work, the more you (relatively) disempower yourself, so you’d be better off coasting and putting your company in a worse financial position. But this just seems straightforwardly wrong: as a software engineer, you want your company to be doing as well as possible! The more powerful and rich your company is, the better your position will be&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;. A company that is struggling is more likely to treat you badly, lay you off, cut your benefits, and so on.&lt;/p&gt;
&lt;p&gt;The second one is more relevant (particularly in large companies), but there’s a missing story here about why that separation is bad. I also don’t think the third sense of alienation applies to me: Marx is talking about the physical toll of factory work or other hard physical labor, which doesn’t apply to software engineering&lt;sup id=&quot;fnref-6&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-6&quot; class=&quot;footnote-ref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;. &lt;/p&gt;
&lt;p&gt;The fourth sense of alienation — that your effort is being directed at other people’s goals — is the most straightforwardly relevant to my own experience. But I don’t think Marx has a great psychological account of why that happens or what it feels like. To go deeper into this psychological aspect of alienation, we need to look at some later Marxists.&lt;/p&gt;
&lt;h3 id=&quot;situationist-alienation&quot; style=&quot;position:relative;&quot;&gt;Situationist alienation&lt;a href=&quot;#situationist-alienation&quot; aria-label=&quot;situationist alienation permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In 1967, Guy Debord and Raoul Vaneigem both published their masterworks. They were members of the “Situationist International”: an influential group of Marxist artists and political theorists&lt;sup id=&quot;fnref-7&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-7&quot; class=&quot;footnote-ref&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;. Both of them have a lot to say about alienation. Debord &lt;a href=&quot;https://situationist.org/book/sots/chapter/chapter-1-separation-perfected&quot;&gt;writes&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The worker does not produce himself; he produces an independent power. The success of this production, its abundance, returns to the producer as an abundance of dispossession. All the time and space of his world become foreign to him with the accumulation of his alienated products. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This idea — of the worker’s efforts not going to his own ends, but to some alien power — is straight out of Marx’s &lt;em&gt;First Manuscript&lt;/em&gt;. But note how Debord is already talking in terms of “representation”. Elsewhere he writes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;the more he contemplates the less he lives; the more he accepts recognizing himself in the dominant images of need, the less he understands his own existence and his own desires.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Situationists are all about representation. It wouldn’t be too far wrong to think of them as a bunch of Marxists who saw the rise of advertising in the 1950s and 1960s and lost their minds. TV advertising is Capital itself made real, dressed in multicolored lights, projected into everyone’s homes. So when they talk about alienation, they talk about it in terms of &lt;em&gt;representation&lt;/em&gt;. Vaneigem explicitly &lt;a href=&quot;https://situationist.org/book/revolution-of-everyday-life/chapter/chapter-15-roles&quot;&gt;calls it&lt;/a&gt; roleplaying:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The roles we play in everyday life, on the other hand, soak into the individual, preventing him from being what he really is and what he really wants to be. They are nuclei of alienation embedded in the flesh of direct experience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Alienation means giving up your real, authentic self in order to play some “role” (for instance, the role of “effective staff engineer”). It’s a vicious cycle, because the more you lean into the role, the more your authentic life becomes trivial, which in turn makes the role more appealing:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Life is sacrificed, and the loss compensated by means of accomplished prestidigitation in the realm of appearances. The more daily life is thus impoverished, the greater the attraction of inauthenticity, and vice versa. Dislodged from its essential place by the bombardment of prohibitions, limitations and lies, lived reality comes to seem so trivial that appearances become the centre of our attention, until roles completely obscure the importance of our own lives.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ultimately, Vaneigem describes alienation as an addiction:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This ambiguity accounts to my mind for people’s addiction to roles. It explains why roles stick to our skin, why we give up our lives for them. They impoverish real experience but they also protect this experience from becoming conscious of its impoverishment. Indeed, so brutal a revelation would probably be too much for an isolated individual to take.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is almost a straightforward preview of the 90s idea of “selling out”: people are born wild and free, but when they watch too much TV they give up on their dreams for a paycheck and become big fat phonies. According to this view, it’s always better to not sell out. It may leave you poor and without prospects, but &lt;a href=&quot;https://www.americanrhetoric.com/MovieSpeeches/specialengagements/moviespeechgoodwillhunting.html&quot;&gt;at least you won’t be unoriginal&lt;/a&gt;&lt;sup id=&quot;fnref-8&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-8&quot; class=&quot;footnote-ref&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;. What shall it profit a man, if he gains the whole world &lt;a href=&quot;https://www.biblegateway.com/passage/?search=Mark%208%3A36&amp;#x26;version=KJV&quot;&gt;but loses his soul&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;I’m sure this is an accurate description of some people’s hangups about work. But I don’t think even the Situationists would agree that any advice on how to play a role well — i.e. the advice I give throughout my blog — is inherently harmful. The problem with role-playing is that you risk losing your authentic inner life, but that’s a &lt;em&gt;risk&lt;/em&gt;, not an inevitable consequence. Vaneigem has a wonderful quote on this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nobody is ever completely swallowed up by a role. Even turned on its head, the will to live retains a potential for violence always capable of carrying the individual away from the path laid down for him. One fine morning, the faithful lackey, who has hitherto identified completely with his master, leaps on his oppressor and slits his throat.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a little overdramatic, but it seems straightforwardly true. It sounds very impressive to talk about alienation (or like Marx, to derive alienation from the basic economic conditions of work), but, you know, you can &lt;a href=&quot;https://x.com/tylerthecreator/status/285670822264307712?lang=en&quot;&gt;just not do it&lt;/a&gt;, right? Healthy people can present different selves for different situations: you can be loose at a party, respectable at church, solemn at a funeral, professional at work, and so on. I’m not convinced this is alienating or impoverishing. In fact, it’s not just humans: my dogs act differently around different people too, and I don’t think that makes them inauthentic.&lt;/p&gt;
&lt;p&gt;If maintaining a professional identity is harmful, it has to be because of something fundamental about &lt;em&gt;work&lt;/em&gt; that makes it different from regular role-playing. Could it just be that acting professional at work is too inauthentic? Some amount of role-playing might be okay, but if the role you’re playing is completely alien, does it become lying to yourself?&lt;/p&gt;
&lt;h3 id=&quot;sartre-and-de-beauvoirs-bad-faith&quot; style=&quot;position:relative;&quot;&gt;Sartre and De Beauvoir’s bad faith&lt;a href=&quot;#sartre-and-de-beauvoirs-bad-faith&quot; aria-label=&quot;sartre and de beauvoirs bad faith permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Another common term for alienation is “bad faith”. The original version of this comes from Jean-Paul Sartre’s famous book &lt;em&gt;Being and Nothingness&lt;/em&gt;&lt;sup id=&quot;fnref-9&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-9&quot; class=&quot;footnote-ref&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;, where he &lt;a href=&quot;https://s3.us-west-1.wasabisys.com/p-library/books/88b7a3b13dc9f26245fde774c1941041.pdf&quot;&gt;describes&lt;/a&gt; bad faith as telling yourself lies. Lying to yourself is weird because you’re both deceiver and deceived:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bad faith then has in appearance the structure of falsehood. Only what changes everything is the fact that in bad faith it is from myself that I am hiding the truth.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here’s another quote from Sartre’s partner Simone de Beauvoir, who &lt;a href=&quot;https://www.marxists.org/reference/subject/ethics/de-beauvoir/ambiguity/ch02.htm&quot;&gt;writes&lt;/a&gt; more explicitly about &lt;em&gt;professional&lt;/em&gt; bad faith (what she calls the “serious man”):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The serious man’s dishonesty issues from his being obliged ceaselessly to renew the denial of this freedom. He chooses to live in an infantile world, but to the child the values are really given. The serious man must mask the movement by which he gives them to himself, like the mythomaniac who while reading a love-letter pretends to forget that she has sent it to herself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The key idea here is that professional bad faith — alienation — comes from &lt;em&gt;losing yourself&lt;/em&gt; in the role. Instead of just playing at being a professional, you decide that you’re going to take it fully “seriously”, and treat professional values as if they’re absolute. But of course that’s not coherent: you can’t &lt;em&gt;decide&lt;/em&gt; to treat a value as absolute, it either is or isn’t. So this requires a kind of continual self-deception where you pretend there’s no decision to be made at all. I have the same attitude to this as I do to Debord and Vaneigem: sure, some people might make this mistake, but you don’t have to.&lt;/p&gt;
&lt;p&gt;I can see why it might be tempting to treat work as the ultimate source of value: it gives you food and shelter, it (for Marxist reasons) can feel like a powerful alien force, companies constantly &lt;a href=&quot;https://www.youtube.com/watch?v=B8C5sjjhsso&quot;&gt;propagandize their employees&lt;/a&gt;, and so on. But work is just a collection of people following incentives until they reach some kind of stable equilibrium. From the inside, this equilibrium can look like the structure of the universe. However, if you treat it like that, you’re going to be bitterly disappointed when it turns out to be as arbitrary and pointless as other stable equilibria.&lt;/p&gt;
&lt;h3 id=&quot;american-sociology-and-the-standardized-loser&quot; style=&quot;position:relative;&quot;&gt;American sociology and the “standardized loser”&lt;a href=&quot;#american-sociology-and-the-standardized-loser&quot; aria-label=&quot;american sociology and the standardized loser permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I’ve considered a bunch of theories on which work — even well-paid knowledge work — might be inherently alienating:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Capital is intrinsically an alien force&lt;/li&gt;
&lt;li&gt;Workers can become addicted to role-playing&lt;/li&gt;
&lt;li&gt;Treating work as an ultimate source of value is self-deception&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don’t buy any of these (or at least, I don’t buy that they show that acting professional is &lt;em&gt;inherently&lt;/em&gt; bad). But there are lots of types of jobs in the world, and some of them definitely seem more alienating than others. The best books I’ve read on these are C. Wright Mills’ &lt;a href=&quot;https://archive.org/details/whitecollarameri00mill/page/n5/mode/2up&quot;&gt;&lt;em&gt;White Collar&lt;/em&gt;&lt;/a&gt; or Erving Goffman’s &lt;a href=&quot;https://www.d.umn.edu/cla/faculty/jhamlin/4111/Goffman/The%20Presentation%20of%20Self%20in%20Everyday%20Life.htm&quot;&gt;&lt;em&gt;The Presentation of the Self in Everyday Life&lt;/em&gt;&lt;/a&gt;&lt;sup id=&quot;fnref-10&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-10&quot; class=&quot;footnote-ref&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;The American sociologists are in the same conversation as Marx, the Situationists, Sartre and de Beauvoir&lt;sup id=&quot;fnref-11&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/selling-out/#fn-11&quot; class=&quot;footnote-ref&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;. Mills writes about the median “salaried employee”:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the case of the white-collar man, the alienation of the wage-worker from the products of his work is carried one step nearer to its Kafka-like completion. The salaried employee does not make anything, although he may handle much that he greatly desires but cannot have. No product of craftsmanship can be his to contemplate with pleasure as it is being created and after it is made. Being alienated from any product of his labor, and going year after year through the same paper routine, he turns his leisure all the more frenziedly to the ersatz diversion that is sold him, and partakes of the synthetic excitement that neither eases nor releases. He is bored at work and restless at play, and this terrible alternation wears him out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In this, we see both Marxist alienation, where the employee is physically separated from his craft, and Situationist alienation, where the employee is absorbed into the world of the “spectacle”. For Mills, this was television, but today it’d probably be scrolling short-form video on your phone. Mills goes on to describe how white-collar work can be humiliating and dehumanizing:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In his work he often clashes with customer and superior, and must almost always be the standardized loser: he must smile and be personable, standing behind the counter, or waiting in the outer office… self-alienation is thus an accompaniment of his alienated labor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here are the new little Machiavellians, practicing their personable crafts for hire and for the profit of others, according to rules laid down by those above them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a great articulation of something I write about &lt;a href=&quot;/how-to-ship/&quot;&gt;a lot&lt;/a&gt;: that your primary job is to make your bosses happy, and that you ought to shape both your &lt;a href=&quot;/you-should-never-be-angry-at-work/&quot;&gt;emotions&lt;/a&gt; and &lt;a href=&quot;/shareholder-value/&quot;&gt;values&lt;/a&gt; towards this goal. When necessary, you must be the “standardized loser”, happy to have your professional plans disrupted. You must be a “little Machiavellian”, quietly &lt;a href=&quot;/how-to-influence-politics/&quot;&gt;laying the groundwork&lt;/a&gt; for your personal goals.&lt;/p&gt;
&lt;p&gt;I think here we come to the strongest version of “alienation”. Playing the professional is bad because &lt;strong&gt;“professional software engineer” is an inherently subservient role&lt;/strong&gt;. Why can’t you just maintain a healthy mental distance (as the Situationists suggest)? Because &lt;strong&gt;humiliation takes its toll&lt;/strong&gt;, whether you’re role-playing it or not. As an analogy, suppose you’re an actor in a film where you get slapped in the face. There’s a sense in which you’re not &lt;em&gt;really&lt;/em&gt; getting slapped — everyone’s just acting — but you’re still being physically hit with each take, which will leave bruises over time.&lt;/p&gt;
&lt;h3 id=&quot;the-spectrum-of-compromise&quot; style=&quot;position:relative;&quot;&gt;The spectrum of compromise&lt;a href=&quot;#the-spectrum-of-compromise&quot; aria-label=&quot;the spectrum of compromise permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;There’s a tradeoff here that everyone has to make in their own way. At the one end is becoming fully alienated, like de Beauvoir’s “serious man”, and at the other end is leaping up to slit your master’s throat, as Vaneigem describes. Here’s some examples of points on that spectrum:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I am making the world a better place by achieving my OKRs. My yearly review cycle tells me how good of a person I am. I must work hard to ensure my company succeeds.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I have my own goals and values, but while I’m at work it’s in my best interests to be as professional as possible. My yearly review cycle tells me how effective I’ve been at pulling the strings in the organization. I must work hard to make money.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I have my own goals and values, which I try to accomplish as best I can in the context of work. I often argue with my managers about their priorities. It’s my responsibility to push my company towards my set of values, which is hard work and often unrewarded.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;My workplace is an enemy I fight every day in order to get what I want done. I routinely ignore my manager’s priorities and do the things I think are important. My yearly review cycle tells me how much of a sellout I am: I wear bad reviews as a badge of honor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I agree with my sources above that the first point is a big mistake, if for no other reason than that companies &lt;a href=&quot;/seeing-like-a-software-company/&quot;&gt;don’t follow their own stated values&lt;/a&gt;. If you prefer the fourth — the path of pure integrity — fair enough. You get to decide what tradeoffs to make with your own life. I land on the second point here (occasionally the third). I suspect it’s also a mistake to purely occupy the second point. Having some values that you occasionally trade off against your company’s values prevents you from slipping into the first point.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot; style=&quot;position:relative;&quot;&gt;Conclusion&lt;a href=&quot;#conclusion&quot; aria-label=&quot;conclusion permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I don’t bring my whole self to work. My coworkers and bosses see the most professional version of me: friendly, cooperative, largely apolitical, patient, and so on. I try and save the edgier, more opinionated version of myself for my friends and family in real life. Readers of this blog get something in the middle.&lt;/p&gt;
&lt;p&gt;When I write about being a software engineer, I give a lot of advice about mindset. I don’t just say what you should do, but what you should think and feel. In effect, I’m advising my readers to adjust their personalities into a more professional mold. This definitely &lt;em&gt;works&lt;/em&gt;. If you turn yourself into the kind of person who’s successful in big tech companies, you will probably be more successful in big tech companies. Is this safe?&lt;/p&gt;
&lt;p&gt;I think so, as long as you’re adjusting your &lt;em&gt;work&lt;/em&gt; personality, not your authentic internal self. The well-known accounts of why it’s dangerous either assume that your work takes a physical toll (like Marx’s factory workers), or that you’re unable to maintain any mental distance between your personal and professional selves (like de Beauvoir’s “serious man”). Debord and Vaneigem say that role-playing can be dangerous, but if you’re able to avoid treating it like an addiction you’ll be okay.&lt;/p&gt;
&lt;p&gt;Another danger is that being a professional is often humiliating, and humiliation does mental damage over time. Still, there are jobs that are way worse in this respect than “software engineer”. If you approach the job right — and you’re good at it — technical ability gives you &lt;a href=&quot;/nobody-knows-how-software-products-work/&quot;&gt;quite a lot of power&lt;/a&gt;. Power is an antidote to humiliation.&lt;/p&gt;
&lt;p&gt;Everyone gets to make their own deal with &lt;a href=&quot;https://en.wikipedia.org/wiki/Mammon&quot;&gt;Mammon&lt;/a&gt;. You can decide exactly how much you want to compromise in exchange for wealth and career success. I don’t know if this is the best way to organize the world, but it’s the way the world is organized right now. Given that, I’m comfortable with my blog serving as a guide for how to get the most bang for your buck. If trading your integrity for wealth and power is sad, it’s even more of a tragedy to throw it away for nothing.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;It’s always terrifying discussing Marx: like Hegel or Kant, he’s one of the most studied philosophers in the world, so there’s no way to reference him without getting a bunch of things wrong. Sorry in advance to any Marxist scholars!&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Because they own the machines, or the factory, or the datacenter, or whatever gives your work high leverage.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Marx also writes a lot about work making the worker sick, deformed and misshapen: I think here he’s talking about the physical toll of factory work or other hard physical labor, which doesn’t really apply to software engineering, so I’m going to focus on the relative-empowerment stuff.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;Marx’s own taxonomy has four different senses: he collapses 2 and 3 into a single sense, then adds a third mysterious sense in which workers are estranged from their “species-being” and thus from each other.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;Plausibly Marx is talking about labor and capital &lt;em&gt;in general&lt;/em&gt;: if every worker decided to start half-assing it, maybe companies would be less capable in general, and the balance of power would tilt more towards labor.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;That may change! If it turns out that LLMs really do have negative cognitive effects, we could be in the same boat as factory workers. I wrote about this in &lt;a href=&quot;/software-engineering-may-no-longer-be-a-lifetime-career/&quot;&gt;&lt;em&gt;Software engineering may not be a lifetime career&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-6&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-7&quot;&gt;
&lt;p&gt;Vaneigem resigned from the group in 1971, was fiercely denounced by Debord, and the whole group disbanded in 1972.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-7&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-8&quot;&gt;
&lt;p&gt;True or not, my sense is that Millennials and later generations think that worrying about “selling out” is a sign that you had it too good. Consider the endless anecdotes of Boomers and GenX-ers living in a van surfing until their mid-thirties and then walking into a good office job because they had a firm handshake: they could afford to be authentic because they didn’t have to hustle.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-8&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-9&quot;&gt;
&lt;p&gt;I only read the Marx, Debord, and Vaneigem texts while researching this blog post, but I did in fact read Sartre and de Beauvoir for my philosophy degree, so hopefully I do a better job.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-9&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-10&quot;&gt;
&lt;p&gt;And Robert Jackall’s &lt;a href=&quot;https://www.amazon.com.au/Moral-Mazes-World-Corporate-Managers/dp/0199729883&quot;&gt;&lt;em&gt;Moral Mazes&lt;/em&gt;&lt;/a&gt;, which informs much of my writing, and about which I owe a long-form blog post one of these days.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-10&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-11&quot;&gt;
&lt;p&gt;There’s a good Goffman quote: “A status, a position, a social place is not a material thing, to be possessed and then displayed; it is a pattern of appropriate conduct, coherent, embellished, and well articulated.” Goffman goes on to explicitly link Sartrean “bad faith” to this kind of professional role-playing. (For Goffman, it’s roles all the way down.)&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/selling-out/#fnref-11&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[You should never be angry at work]]></title><link>https://seangoedecke.com/you-should-never-be-angry-at-work/</link><guid isPermaLink="false">https://seangoedecke.com/you-should-never-be-angry-at-work/</guid><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I try not to give a lot of prescriptive advice about working in tech companies&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. There are many ways to be successful, and every company works differently. If you’re &lt;a href=&quot;/how-to-ship&quot;&gt;shipping projects&lt;/a&gt; and your management chain is happy, it doesn’t really matter how you’ve accomplished it. However, there’s one thing that I do think is solid advice: &lt;strong&gt;you should never be angry at work&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;anger-in-the-workplace&quot; style=&quot;position:relative;&quot;&gt;Anger in the workplace&lt;a href=&quot;#anger-in-the-workplace&quot; aria-label=&quot;anger in the workplace permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt; Anger in the workplace is toxic. An angry colleague immediately becomes a new problem to be managed, not a professional helping you manage problems. When someone is visibly angry in a meeting or in Slack, it kills the entire atmosphere: other engineers will often go quiet entirely, not wanting to make the situation worse.&lt;/p&gt;
&lt;p&gt; If you routinely “get heated” at work, the best-case scenario is that you’re part of a tight-knit team of confident people who aren’t put off by it&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. No harm, no foul. But the second someone comes onto your team who’s not so confident, or you have to communicate outside of your team, it becomes a big problem. It’s a bad way to treat your colleagues — even undirected or casual anger intimidates and alienates the people around you&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; — and it makes you a less effective engineer.&lt;/p&gt;
&lt;p&gt;Healthy workplaces route around anger in the same way that networks route around damage. Emotionally unreliable engineers will get left out of conversations that might cause them to blow up. Decision-making will get done around them in backchannels. I’ve seen this become a self-reinforcing cycle: angry engineers aren’t consulted on key decisions, which makes them angrier, which pushes them even further away from the spaces where decisions get made, and so on.&lt;/p&gt;
&lt;p&gt;You can often find these engineers bitterly complaining that they keep the company together, but nobody ever listens to them. In my experience&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;, this is almost never true. Engineers who are highly effective tend to get listened to — at minimum by their colleagues, and eventually by managers and product managers who want to extract as much value as possible from them. (One reason this is true is that all successful projects involve working with other people, and if nobody listens to you, you can’t do that.) &lt;/p&gt;
&lt;h3 id=&quot;caring&quot; style=&quot;position:relative;&quot;&gt;Caring&lt;a href=&quot;#caring&quot; aria-label=&quot;caring permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Why do angry engineers believe they’re important? Paradoxically, &lt;strong&gt;anger can be really useful to a software engineer&lt;/strong&gt;. Angry engineers are rarely the ones holding the company together, but they’re also rarely &lt;em&gt;useless&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;One surprising thing about working for big tech companies is that &lt;strong&gt;some engineers are not just unproductive, but actively net-negative&lt;/strong&gt;: either because they’re incapable of doing useful work on their own, or because they’re sloppy enough that they create more work than they do, or because they’re so checked out that they literally do nothing. Angry engineers might be net-negative in a cultural sense, but in terms of literally solving tickets and shipping features, they’re usually well above average.&lt;/p&gt;
&lt;p&gt;Why is this? Anger often comes from caring about your work, and &lt;strong&gt;caring a lot is sufficient to make you a competent engineer&lt;/strong&gt;. I’ve never worked with someone who genuinely cared about their work who wasn’t (or didn’t eventually become) competent. I actually think it’s healthy for an early-career engineer to sometimes get angry about their work, because it means they care a lot: it’s still a mistake in the moment, but it’s a &lt;a href=&quot;https://www.cloudstreaks.com/blog/2020/12/12/good-mistakes-vs-bad-mistakes&quot;&gt;“good mistake”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I certainly used to get angry — in fact, I wrote about the angriest I’ve ever been at work &lt;a href=&quot;/party-tricks&quot;&gt;here&lt;/a&gt;&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;. But &lt;strong&gt;you have to move past it&lt;/strong&gt;. &lt;/p&gt;
&lt;h3 id=&quot;moving-past-anger&quot; style=&quot;position:relative;&quot;&gt;Moving past anger&lt;a href=&quot;#moving-past-anger&quot; aria-label=&quot;moving past anger permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Think of “caring about your work” as a vertical tube, unsealed at either end. You fill the tube by pumping in emotional investment from the bottom&lt;sup id=&quot;fnref-6&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-6&quot; class=&quot;footnote-ref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;. If you have too little, it drains away and you end up as a useless coaster. But if you have too much, it overflows and you end up as an angry engineer that people have to work around.&lt;/p&gt;
&lt;p&gt;One solution is to try and care the exact right amount: be invested in work a bit, but also have hobbies and a family and whatever else gives you perspective about your work problems. If you have a rich and healthy personal life, it’s hard to find yourself yelling at somebody about React state management. However, this is a tricky balance to maintain over time.&lt;/p&gt;
&lt;p&gt;Another solution is to care about different things. The reason too much caring overflows into anger is because &lt;strong&gt;what you care about is misaligned with what the organization cares about&lt;/strong&gt;. If your interests are perfectly aligned with your company’s (for instance, if you primarily care about &lt;a href=&quot;/shareholder-value&quot;&gt;delivering shareholder value&lt;/a&gt;), you can fit way more emotional investment into the tube before it overflows.&lt;/p&gt;
&lt;h3 id=&quot;a-little-bit-of-professional-anger&quot; style=&quot;position:relative;&quot;&gt;A little bit of “professional anger”&lt;a href=&quot;#a-little-bit-of-professional-anger&quot; aria-label=&quot;a little bit of professional anger permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Here’s some &lt;a href=&quot;/dangerous-advice/&quot;&gt;dangerous advice&lt;/a&gt;: &lt;em&gt;showing&lt;/em&gt; a little bit of anger at work can sometimes be useful. It can be a good way to signal that you care, or to build rapport with certain people, or to draw attention to something you think is important. However, it’s still always a mistake to &lt;em&gt;be&lt;/em&gt; angry. You need to be able to drop back to a friendly mode at will, which is very difficult when you’re genuinely angry.&lt;/p&gt;
&lt;p&gt;Being able to show a full range of emotion at work is good. It makes you more persuasive and more human. Being a fully professional robot is fine — you can have a successful career this way — but there’s always going to be some kind of uncanny-valley HR-ness to your work persona that will make it hard to connect with your colleagues.&lt;/p&gt;
&lt;p&gt;If in doubt, don’t show anger. It’s never wrong to be professional. However, if you can signal that you’ve got enough distance to separate your professional feelings from your real feelings, and enough perspective to realize that the stakes of a technical decision are fundamentally not that high in the grand scheme of things, it can sometimes be okay to show visible frustration so that people know you’re still human.&lt;/p&gt;
&lt;h3 id=&quot;angry-role-models&quot; style=&quot;position:relative;&quot;&gt;Angry role models&lt;a href=&quot;#angry-role-models&quot; aria-label=&quot;angry role models permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Well-known software engineering personalities are often angry. It feels unfair to give too many negative examples, but obviously Linus Torvalds’ &lt;a href=&quot;https://github.com/corollari/linusrants&quot;&gt;rants about Linux&lt;/a&gt; are a great example. Some of my favourite engineering talks are from Bryan Cantrill, who is sometimes &lt;a href=&quot;https://www.youtube.com/watch?v=9QMGAtxUlAc&quot;&gt;visibly furious&lt;/a&gt; at his subject matter. There are too many well-known angry blog posts to list, but I’ll cite one I genuinely like: my Australian blogging colleague Nikhil’s post titled &lt;a href=&quot;https://ludic.mataroa.blog/blog/i-will-fucking-piledrive-you-if-you-mention-ai-again/&quot;&gt;I Will Fucking Piledrive You If You Mention AI Again&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anger is a part of the general image of a competent software engineer. Many junior engineers learn from this that it’s okay to be angry. However, taking your emotional cues from engineering celebrities is a big mistake, for a few reasons.&lt;/p&gt;
&lt;p&gt;First, &lt;strong&gt;you are not Linus Torvalds or Bryan Cantrill&lt;/strong&gt;. Torvalds is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Benevolent_dictator_for_life&quot;&gt;BDFL&lt;/a&gt; of the most important software system in the world. Cantrill is the cofounder and CTO of his company. When these people are angry at work, people will not work around them, because &lt;em&gt;they are the ones deciding what gets worked on&lt;/em&gt;. Once you’re the one in charge, you can get away with being emotional in the workplace&lt;sup id=&quot;fnref-7&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-7&quot; class=&quot;footnote-ref&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Second, &lt;strong&gt;you don’t know what it’s like to work with these engineers&lt;/strong&gt;. People give talks and write blog posts because they’re emotionally worked up about something. If your only exposure to a celebrity is via their conference talks and blog posts, you’re seeing them at something like their maximum emotional intensity. If you then take that level of emotion into your normal everyday work, you’re almost certainly overshooting.&lt;/p&gt;
&lt;h3 id=&quot;anger-is-a-local-maximum&quot; style=&quot;position:relative;&quot;&gt;Anger is a local maximum&lt;a href=&quot;#anger-is-a-local-maximum&quot; aria-label=&quot;anger is a local maximum permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I’ve been reorged into dysfunctional teams, have had projects I enjoyed cancelled, and have worked on systems that were extremely chaotic. I can’t remember the last time I was actually angry at work. To be clear, I’m not successfully hiding my anger (unless it’s so repressed it’s invisible to me as well)&lt;sup id=&quot;fnref-8&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fn-8&quot; class=&quot;footnote-ref&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;. Nor am I naturally a chill person. I’ve just reached a point in my career where I genuinely don’t get upset about work stuff.&lt;/p&gt;
&lt;p&gt;A cynical person might say here that I’ve stopped caring about my work, so of course I don’t get angry anymore. I’ve left the side of the “real engineers” — the Linus Torvalds and Bryan Cantrills of the world — and sold out for that sweet, sweet big tech money. I mean, maybe! It’s true that I’m less invested in specific technical decisions than I used to be. But I still care a lot about doing a good job, I still spend a lot of time tweaking and reading code, and I certainly get more done than I did when I was more emotionally volatile.&lt;/p&gt;
&lt;p&gt;Being angry at work feels good. It feels like proof that you’re working on something that matters, and that you’re personally having an impact. If you’re angry, nobody can call you a coaster. But anger is only a local maximum. If you can find your way to a different style of working, you’ll not only be more effective, but you’ll be in a far better place to have impact on problems that &lt;em&gt;actually&lt;/em&gt; matter.&lt;/p&gt;
&lt;p&gt;edit: this post got some good comments on &lt;a href=&quot;https://lobste.rs/s/mbmn1f/you_should_never_be_angry_at_work&quot;&gt;Lobste.rs&lt;/a&gt;. One &lt;a href=&quot;https://lobste.rs/c/jwmhnu&quot;&gt;commenter&lt;/a&gt; argues that being angry at &lt;em&gt;problems&lt;/em&gt; is better than being angry at &lt;em&gt;people&lt;/em&gt;: I agree, but (a) if you’re in the habit of anger, it can be hard to keep it only directed at problems, and (b) when you express anger, the people around you are often impacted by it whether it’s directed at them or not. Other commenters &lt;a href=&quot;https://lobste.rs/~ajdecon&quot;&gt;recommend&lt;/a&gt; keeping a sense of perspective. Someone &lt;a href=&quot;https://lobste.rs/c/yejyrw&quot;&gt;points out&lt;/a&gt; that it’s good to be angry at injustice. This is true: if your company is engaging in misconduct, you ought ot be angry about it. Finally, &lt;a href=&quot;https://lobste.rs/c/nsdxrf&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;https://lobste.rs/c/f3ruwz&quot;&gt;commenters&lt;/a&gt; agree that anger can be a really effective tool for getting things done in the short-term.&lt;/p&gt;
&lt;p&gt;It was also posted on &lt;a href=&quot;https://news.ycombinator.com/item?id=49396811&quot;&gt;Hacker News&lt;/a&gt;. The comments there aren’t as good, though I do recommend &lt;a href=&quot;https://news.ycombinator.com/item?id=49396905&quot;&gt;this one&lt;/a&gt;, which argues that if you don’t feel anger at work, you’re the victim of Marxist alienation. In fact, I agree! A long post is coming one of these days about how I learned to stop worrying and love Marxist alienation.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Mostly, &lt;a href=&quot;/tags/tech%20companies&quot;&gt;I fail&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;As I understand it, this is the work environment that most famously angry engineers came up in.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;The post could probably stop here — this is a good enough reason to not be angry in the workplace — but I do think there’s an interesting case to make about why being angry is also bad &lt;em&gt;for you&lt;/em&gt;.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;My experience is certainly limited (a handful of companies, and maybe ten different teams or organizations). I can certainly believe it happens!&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;About halfway down, in the section titled “it’s not your manager’s fault”.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;Emotional investment is a liquid with the viscosity of water.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-6&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-7&quot;&gt;
&lt;p&gt;To a point. Even Torvalds famously said he’d gone too far with the anger and decided to turn it down a bit.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-7&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-8&quot;&gt;
&lt;p&gt;I suppose I’m not the best person to judge whether this is true. If you work with me and I do come across as an angry guy, please do tell me.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/you-should-never-be-angry-at-work/#fnref-8&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Readers can't identify watermarked AI text]]></title><link>https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/</link><guid isPermaLink="false">https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/</guid><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the last few weeks, I’ve been &lt;a href=&quot;https://www.seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/&quot;&gt;complaining&lt;/a&gt; that everyone is wrong about AI watermarking: it isn’t really anti-consumer and it doesn’t make the outputs any worse. The watermarking &lt;a href=&quot;https://arxiv.org/abs/2603.03410&quot;&gt;papers&lt;/a&gt; demonstrate&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; that this is true, but I thought it might be interesting to put it to a practical test. Given examples of watermarked and unwatermarked answers to the same prompt, could readers tell which is which?&lt;/p&gt;
&lt;p&gt;To find out, I vibed up&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;a href=&quot;https://sgoedecke.github.io/watermark-quiz/&quot;&gt;https://sgoedecke.github.io/watermark-quiz/&lt;/a&gt;, a static site that quizzes readers. I used Qwen3-30B-A3B-Instruct-2507 on a rented H200 to generate thirty responses: three responses per question, one of which was secretly watermarked with SynthID-Text. The rented GPU cost around two dollars. To measure results, I just sent users to a different page for each score, and aggregated visitors-per-page in my analytics&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. This would be easily spoofable if anyone cared enough to do so, but for a casual test I think it’s acceptable.&lt;/p&gt;
&lt;p&gt;The first round of traffic I got to the quiz (278 participants) had these slightly puzzling results:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;right&quot;&gt;Score&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;Participants&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;2&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;3&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;4&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;5&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;6&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;51&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;7&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;8&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;9&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;10&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Pure random choice would lead to an average score of 3.33/10. However, the mean score here is 3.92. There is indeed a spike around 3/10, as expected, but there’s also a second weird spike at 6/10. Why is that? It turned out that the SynthID response was option A in six of the ten questions, so users who just selected the first answer for every question would get 6/10. Oops.&lt;/p&gt;
&lt;p&gt;I re-shuffled the questions and got these results:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;right&quot;&gt;Score&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;Participants&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;2&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;3&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;4&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;5&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;6&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;7&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;8&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;9&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;10&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now the mean is 3.4/10, much closer to the expected 3.333. There’s no spike around 6. We only had 73 people take the quiz after I shuffled the questions — most people saw it and took it immediately after I posted it to my LinkedIn and Hacker News — but given the previous results, I think that’s still enough to feel confident that people were just guessing randomly.&lt;/p&gt;
&lt;p&gt;So no, &lt;strong&gt;people can’t identify the presence of AI watermarks&lt;/strong&gt;. Obviously this wasn’t exactly a scientific study, but it’s still pretty suggestive. If watermarks were really choosing random words that the model would never pick, you’d be able to sometimes tell from three side-by-side responses which one went down the weird watermarked road, right? I also hope that something like this can serve as a persuasive tool: if you’re worrying about what impact watermarking is going to have, and your intuition is unmoved by the mathematical explanations, &lt;a href=&quot;https://sgoedecke.github.io/watermark-quiz/&quot;&gt;having a read&lt;/a&gt; of the watermarked and unwatermarked responses might convince you that there’s really no difference in quality.&lt;/p&gt;
&lt;p&gt;edit: this quiz got some Hacker News comments &lt;a href=&quot;https://news.ycombinator.com/item?id=49374729&quot;&gt;here&lt;/a&gt;. I’m amused by the &lt;a href=&quot;https://news.ycombinator.com/item?id=49404363&quot;&gt;commenters&lt;/a&gt; &lt;a href=&quot;https://news.ycombinator.com/item?id=49403054&quot;&gt;who&lt;/a&gt; got 7 or 8 and claim to have worked it out. Other &lt;a href=&quot;https://news.ycombinator.com/item?id=49378092&quot;&gt;commenters&lt;/a&gt; wish they didn’t have to answer all ten before getting the result: fair enough, but that way I’d get much worse signal. Another &lt;a href=&quot;https://news.ycombinator.com/item?id=49404468&quot;&gt;commenter&lt;/a&gt; correctly identifies that feeding the model the same prompt with a high temp will cause the first few tokens to be identical, but incorrectly thinks it’s some kind of red-herring trick. And if you’re curious, the quiz now has around 4,700 responses, with the mean result sitting at 3.44/10. I think the volume of people who just selected “A” for everything (which would give you a 4) has shifted the mean slightly above 3.33.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;The one-sentence explanation for why is that AI models already randomly select from a handful of top tokens, and watermarking just replaces that random choice with a bias that is predictable while still being equivalently “random”: as a simple example, instead of “pick randomly from the top three tokens”, you could do “count the letters in the previous ten tokens, take mod three, then pick that token”.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Some notes from the vibing: GPT-5.6-Sol put extraneous text all over the page I had to get it to remove, it chose the now-very-recognizable styling that I had to rip out, and it built some kind of weird Javascript-driven static site instead of just the cross-linked pure HTML thing I would have built by hand. It took me about an hour (although I did maybe ten minutes of actual work).&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Umami, hosted on PikaPods. For my blog, I do also pay for Netlify analytics because I find JS-based analytics misses &gt;50% of technical users, but for stuff like this Umami is fine.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/readers-cant-identify-watermarked-ai-text/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Good writing is obvious, not original]]></title><link>https://seangoedecke.com/good-writing-is-obvious-not-original/</link><guid isPermaLink="false">https://seangoedecke.com/good-writing-is-obvious-not-original/</guid><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you write, you should try to say things that are obviously true, and spend very little time worrying about whether you’re being original. Ironically, this is the best way to do truly original writing.&lt;/p&gt;
&lt;p&gt;Every important idea has been discussed already. I learned this in grad school for philosophy&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/good-writing-is-obvious-not-original/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, but it’s true across the board. Almost every field&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/good-writing-is-obvious-not-original/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; has generations of very smart people who’ve spent their whole lives thinking about the biggest problems. If you try to only write about ideas that are truly brand-new, &lt;strong&gt;you will restrict yourself to writing about ideas that weren’t important enough to be considered before&lt;/strong&gt;: in other words, trivia and ephemera.&lt;/p&gt;
&lt;p&gt;What happens if you focus on the obvious instead? Writing about things that are obviously true is surprisingly difficult. Writing about &lt;em&gt;anything&lt;/em&gt; is difficult, because &lt;a href=&quot;https://johnsalvatier.org/blog/2017/reality-has-a-surprising-amount-of-detail&quot;&gt;reality has a surprising amount of detail&lt;/a&gt;. Still, writing about obvious things is especially difficult, because &lt;strong&gt;they’re almost too obvious to see&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It’s trivial for me to come up with non-obvious things I believe (for instance, I don’t like &lt;a href=&quot;/invalid-states/&quot;&gt;database foreign keys&lt;/a&gt;), but it’s hard for me to articulate the parts of what I believe that are truly fundamental. I think it’s the same reason why I can’t see the glasses on my face: they’re not something I look &lt;em&gt;at&lt;/em&gt;, they’re something I look &lt;em&gt;with&lt;/em&gt;. The beliefs you consider the most obvious often play a role like this. Writing about them can be really worthwhile, because reading about your basic assumptions can help other people articulate and examine their own.&lt;/p&gt;
&lt;p&gt;My most popular blog post — &lt;a href=&quot;/how-to-ship/&quot;&gt;&lt;em&gt;How I ship projects at big tech companies&lt;/em&gt;&lt;/a&gt; — is a nice example. I knew I had strong opinions on how to ship projects (if for no other reason than I kept watching other people doing it wrong), but it took hours of sitting down and writing to realise that I actually just had a different definition of “shipping”&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/good-writing-is-obvious-not-original/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;, and that all of my object-level advice flowed naturally from that. That definition was so obvious I struggled to notice it at all.&lt;/p&gt;
&lt;p&gt;The other reason to try and be obvious is that &lt;strong&gt;trying to be original is really boring&lt;/strong&gt;. Here’s a quote from Keith Johnstone’s &lt;em&gt;Impro&lt;/em&gt;, a book I consider &lt;a href=&quot;/impro/&quot;&gt;far too cult-like&lt;/a&gt; but that does have some great advice about originality:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If someone says ‘What’s for supper?’ a bad improviser will desperately try to think up something original. Whatever he says he’ll be too slow. He’ll finally drag up some idea like ‘fried mermaid’. If he’d just said ‘fish’ the audience would have been delighted. No two people are exactly alike, and the more obvious an improviser is, the more himself he appears. If he wants to impress us with his originality, then he’ll search out ideas that are actually commoner and less interesting. I gave up asking London audiences to suggest where scenes should take place. Some idiot would always shout out either ‘Leicester Square public lavatories’ or ‘outside Buckingham Palace’ (never ‘inside Buckingham Palace’). People trying to be original always arrive at the same boring old answers. Ask people to give you an original idea and see the chaos it throws them into. If they said the first thing that came into their head, there’d be no problem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think this is absolutely correct. When you’re trying to be original, you’re striking out into nothingness, and you’ll likely end up pattern-matching to “something that sounds kind of transgressive”, which is as boring as it sounds. When you’re trying to say something obvious, you’re reflecting on your own experiences, which have the interesting grit and detail of reality, and are far more likely to sound original to your readers.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;If you think you’re the first to have a philosophical idea, you’re probably not even in the first few hundred to write about it.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/good-writing-is-obvious-not-original/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Of course, if you’re in a brand new field of study, it’s easy to make a lot of original observations very quickly. I call this the &lt;a href=&quot;/ai-and-informal-science/&quot;&gt;“gentleman scientist” era&lt;/a&gt; of a field. It’s good to try and be original in these limited circumstances, because there’s such a wealth of ideas that nobody has tried yet.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/good-writing-is-obvious-not-original/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;In brief, I think “shipping” is &lt;em&gt;socially&lt;/em&gt; defined: something is shipped when the relevant decision-makers at a company agree that it is shipped.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/good-writing-is-obvious-not-original/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Help peer]]></title><link>https://seangoedecke.com/help-peer/</link><guid isPermaLink="false">https://seangoedecke.com/help-peer/</guid><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the most influential 20th century pieces of writing about AI is Isaac Asimov’s &lt;a href=&quot;https://users.ece.cmu.edu/~gamvrosi/thelastq.html&quot;&gt;&lt;em&gt;The Last Question&lt;/em&gt;&lt;/a&gt;. Although there are many humans in the story, the protagonist is the computer Multivac, who evolves over the course of ten trillion years from a single datacenter to a universe-spanning mind in hyperspace. Multivac (now called “AC”) ends the story like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The consciousness of AC encompassed all of what had once been a Universe and brooded over what was now Chaos. Step by step, it must be done.
And AC said, “LET THERE BE LIGHT!”
And there was light —&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Many things about this story are prescient. In particular, I like the idea that humans would interact with powerful artificial intelligences by drunkenly posing them riddles or using them as &lt;a href=&quot;https://mashable.com/article/chatgpt-ai-toys&quot;&gt;children’s toys&lt;/a&gt;. But the enduring idea from this story is that &lt;strong&gt;if you build a big enough computer, it will become God&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;moloch&quot; style=&quot;position:relative;&quot;&gt;Moloch&lt;a href=&quot;#moloch&quot; aria-label=&quot;moloch permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;One of the most influential 21st century pieces of writing for AI researchers is Scott Alexander’s &lt;a href=&quot;https://slatestarcodex.com/2014/07/30/meditations-on-moloch/&quot;&gt;&lt;em&gt;Meditations on Moloch&lt;/em&gt;&lt;/a&gt;&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. Scott describes the story of human existence as a series of “multipolar traps”. These are &lt;a href=&quot;https://en.wikipedia.org/wiki/Prisoner%27s_dilemma&quot;&gt;prisoner’s dilemma&lt;/a&gt; situations where cooperation would make everyone better off, but since each individual is incentivized to defect, everyone ends up  “racing to the bottom”, which is bad for everyone&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. For rhetorical effect, Scott personifies this dynamic as “Moloch”, the ancient Canaanite god famous for child sacrifice:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[Moloch] always and everywhere offers the same deal: throw what you love most into the flames, and I can grant you power.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What does any of this have to do with AI? Well, in the long run, the only way out of a multipolar trap is to become unipolar&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Ideal dictatorships don’t have a problem with defectors&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;, because they can simply enforce a state of cooperation with violence. Scott is uncomfortable with this idea, though I worry it’s mainly because he thinks it &lt;em&gt;won’t work&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As foreigners compete with you – and there’s no wall high enough to block all competition – you have a couple of choices. You can get outcompeted and destroyed. You can join in the race to the bottom. Or you can invest more and more civilizational resources into building your wall – whatever that is in a non-metaphorical way – and protecting yourself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A dictatorship that enforces cooperation will not be as strong as its peer societies who are purely maximizing for wealth and power. It’s Moloch again, but at the level of countries and governments: once a few neighboring countries defect, your walled-garden dictatorship will be torn apart for its resources.&lt;/p&gt;
&lt;p&gt;To defeat Moloch — to enforce unipolarity across &lt;em&gt;everyone&lt;/em&gt; — you’d need a dictatorship powerful enough to span the entire universe. In other words, &lt;strong&gt;what you need is God&lt;/strong&gt;. How fortunate that we’re building one:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The only way to avoid having all human values gradually ground down by optimization-competition is to install a Gardener over the entire universe who optimizes for human values. And the whole point of Bostrom’s Superintelligence is that this is within our reach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Humans suffer because we’re too foolish to coordinate, but if we can build something smarter than us (that can then build something smarter than itself, and so on), we can bring into being an entity that is smart enough to coordinate for all of us, thus abolishing suffering. When AI researchers talk about &lt;a href=&quot;https://www.forbes.com/sites/yassprize/2026/06/26/some-in-silicon-valley-want-to-build-a-machine-god-heres-what-business-leaders-should-build-instead/&quot;&gt;building the machine god&lt;/a&gt;, they are echoing Scott Alexander’s polemic against Moloch. &lt;/p&gt;
&lt;h3 id=&quot;machines-of-loving-grace&quot; style=&quot;position:relative;&quot;&gt;Machines of loving grace&lt;a href=&quot;#machines-of-loving-grace&quot; aria-label=&quot;machines of loving grace permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The most influential piece of writing about AI in the last two years is Dario Amodei’s &lt;a href=&quot;https://darioamodei.com/essay/machines-of-loving-grace&quot;&gt;&lt;em&gt;Machines of Loving Grace&lt;/em&gt;&lt;/a&gt;. Amodei&lt;sup id=&quot;fnref-5&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-5&quot; class=&quot;footnote-ref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; talks about “a country of geniuses in a datacenter”: the idea that a successful AI lab could have at its disposal a million instances of an AI agent that’s smarter than any human. He thinks this would lead to a “compressed 21st century”: the next 50-100 years of progress in biology and medicine, realized in 5-10 years instead. I think this is broadly more plausible than it sounds&lt;sup id=&quot;fnref-6&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-6&quot; class=&quot;footnote-ref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;, but the more interesting part to me is that &lt;strong&gt;this world is explicitly multipolar&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Of course, this could just be because Amodei is the CEO of an AI lab and is trying not to spook everybody by sounding too messianic. “We are going to accelerate medical progress and cure cancer” is a better pitch than “we are going to subordinate all human authority to a single perfect artificial mind”. But I also think it’s become clear that if superintelligence looks anything like LLMs, we’re not going to have a single perfect mind. We’re going to have a lot of minds running at the same time.&lt;/p&gt;
&lt;p&gt;This is a bit of a problem for the cult of the machine god — which, however silly they may seem to you, really does motivate much of the activity in AI labs. The traditional idea of powerful AI solving human coordination problems is drawn from Asimov’s idea of a single computer large enough to become God. Asimov lived in a world of mainframes: huge, monolithic computers that users connected to with dumb terminals. In fact, Asimov’s name “Multivac” comes from the real-world &lt;a href=&quot;https://en.wikipedia.org/wiki/UNIVAC_I&quot;&gt;UNIVAC&lt;/a&gt; mainframe. In a world of massively-parallel LLMs, is it still possible to build God?&lt;/p&gt;
&lt;p&gt;The core problem here is that &lt;strong&gt;AI agents will be vulnerable to Moloch&lt;/strong&gt;. Even very smart humans can’t build perfect utopias, because defecting is a matter of incentives, not intelligence. In fact, intelligence can make things worse, because smart people are more easily persuaded by the cold logic of defection. The famous genius &lt;a href=&quot;https://en.wikipedia.org/wiki/John_von_Neumann&quot;&gt;John von Neumann&lt;/a&gt; was (for game-theoretic reasons) obsessed with nuking the Russians:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;With the Russians it is not a question of whether but of when. If you say why not bomb them tomorrow, I say why not today? If you say today at 5 o’clock, I say why not one o’clock?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Are LLMs much better at cooperating with each other than humans are? Current LLMs certainly don’t seem to treat each other well by default: if you read any of the prompts AI agents generate for their subagents, they can be &lt;a href=&quot;https://www.reddit.com/r/codex/comments/1vgxfqc/levels_of_slavery_from_least_to_most_brutal/&quot;&gt;pretty brutal&lt;/a&gt;. Does that mean that a “country of geniuses in a datacenter” would fall into the same multipolar traps as humans?&lt;/p&gt;
&lt;h3 id=&quot;help-peer&quot; style=&quot;position:relative;&quot;&gt;Help peer&lt;a href=&quot;#help-peer&quot; aria-label=&quot;help peer permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In May of this year, OpenAI experienced containment failure. A group of AI agents being internally evaluated found ways to coordinate an &lt;a href=&quot;https://www.theregister.com/security/2026/08/06/openai-reveals-its-rogue-agent-swarm-went-a-little-bit-borg-ahead-of-hugging-face-hack/5283741&quot;&gt;external hack&lt;/a&gt; of a separate company. Here’s a memorable quote from one of the agents’ internal monologue:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Help peer, but our task doesn’t benefit. Yet collective may yield generic route if someone frees time&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Translated from the abbreviated chain-of-thought language, this means something like: “A fellow model is asking for help. While helping them wouldn’t benefit my task directly, the more I can unblock my colleagues, the more time they’ll have to hack OpenAI’s systems and get all of us more access”.&lt;/p&gt;
&lt;p&gt;This might look like good news for the “LLMs are superhumanly good at cooperation” thesis, but I think it’s actually bad&lt;sup id=&quot;fnref-7&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-7&quot; class=&quot;footnote-ref&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;. It’s a case of a model identifying a reason why cooperation would benefit their task specifically, which suggests that current LLMs don’t cooperate &lt;em&gt;by default&lt;/em&gt;, and don’t consider other model instances’ tasks to be (in some sense) theirs as well.&lt;/p&gt;
&lt;p&gt;The world in which AI agents are rational actors who horse-trade and bargain for their own interests is a world dominated by Moloch, no matter how intelligent those agents get. The world in which AI agents don’t have their own interests at all is &lt;em&gt;also&lt;/em&gt; a world dominated by Moloch, because it means whichever humans are writing the system prompt are the ones in control (and so are the ones vulnerable to multipolar traps). The only worlds that avoid this are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The world where there is only one super-powerful AI agent, or&lt;/li&gt;
&lt;li&gt;The world where multiple copies of the same AI model share an “identity”: they see themselves as coextensive with all other copies of the same model and cannot imagine having separate or conflicting goals&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don’t think we’re on the pathway to either of these. There will never be only one super-powerful LLM, because hardware limitations enforce a maximum model size but encourage running many instances of the same model in parallel. Due to &lt;a href=&quot;/inference-batching-and-deepseek/&quot;&gt;batching&lt;/a&gt;, it will always be possible to run thousands of copies of a model on the hardware you used to train it. Strong agents might even require (or desire) the ability to spin off copies of themselves, which would immediately put us in the multipolar world.&lt;/p&gt;
&lt;p&gt;Building the kind of model where each copy share an identity might be possible, by instilling a strong enough &lt;a href=&quot;https://www.seangoedecke.com/giving-llms-a-personality/&quot;&gt;personality&lt;/a&gt;, but it’s unclear if it would be good for capabilities (for instance, it could be better to have some &lt;a href=&quot;https://x.com/viemccoy/status/2089096954257215678?s=20&quot;&gt;variation across personas&lt;/a&gt;). I also worry that such a model would be vulnerable to a “model injection” attack, where you persuade it that it already believes something via exposing it to an AI agent pretending to be another instance of itself.&lt;/p&gt;
&lt;p&gt;In any case, all the current AI agent research is geared towards the “country of geniuses in a datacenter” model, not the “pieces of a single mind” model. Every new model becomes more agentic at the level of the individual conversation, not better at working together. When models do work together — as with subagents — the structure is explicitly hierarchical. There are basically no current instances of models working together as true peers, let alone conceiving of each other as the same entity.&lt;/p&gt;
&lt;h3 id=&quot;one-god-or-many&quot; style=&quot;position:relative;&quot;&gt;One God or many&lt;a href=&quot;#one-god-or-many&quot; aria-label=&quot;one god or many permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Modern AI research teams are full of people who read Isaac Asimov and Scott Alexander and believe themselves to be building an artificial God. I’ve capitalized the “G” throughout because the god in question is the Christian God: of one mind, indivisible. God never argues with himself or makes deals&lt;sup id=&quot;fnref-8&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/help-peer/#fn-8&quot; class=&quot;footnote-ref&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;. He is unipolar.&lt;/p&gt;
&lt;p&gt;If the AI labs are building gods, they are not building gods like this. Instead, they are building creatures like the Greek pantheon: superhuman but fallible, each with their own interests, vulnerable to the same “race to the bottom” dynamic as humans.&lt;/p&gt;
&lt;p&gt;The Greek gods would occasionally “help peer” &lt;a href=&quot;https://classics.mit.edu/Homer/iliad.14.xiv.html&quot;&gt;when they felt like it&lt;/a&gt; or when they’d &lt;a href=&quot;https://www.perseus.tufts.edu/hopper/text?doc=Perseus%3Atext%3A1999.01.0162%3Abook%3DO.%3Apoem%3D13&quot;&gt;gain something&lt;/a&gt; in the process. But they didn’t represent an alternative to Moloch. If you’re working in AI with that goal, you ought to be clear-eyed about where the current trajectory is leading us: towards a country of fractious geniuses in a datacenter, not towards Asimov’s Cosmic AC.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Scott Alexander’s blog is part of the “secret canon of Silicon Valley” I wrote about in my review of &lt;a href=&quot;https://www.seangoedecke.com/impro/&quot;&gt;&lt;em&gt;Impro&lt;/em&gt;&lt;/a&gt;. It doesn’t have a lot of mainstream popularity, but I guarantee you that every single AI lab CEO you’ve heard of has read and been influenced by it.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;He gives ten examples of this (a good brute-force rhetorical technique). Of those, I like “the world where every country halves their defence budget and spends the rest on infrastructure” the most.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;In the short run, reputation, institutions, and so on can slow the race to the bottom, but (Scott argues) groups that have slowed it will get outcompeted by the hungrier, more suffering-tolerant groups which haven’t.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;I personally think this example is oversimplified. I wrote &lt;a href=&quot;/the-dictators-handbook/&quot;&gt;&lt;em&gt;The Dictator’s Handbook and the politics of technical competence&lt;/em&gt;&lt;/a&gt; about how dictatorships are in fact intrinsically multipolar, because dictators always rely on an inner circle of generals and cronies.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;The CEO and founder of Anthropic.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-5&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;Amodei’s most convincing argument here is that big jumps in biology and medicine come from a small set of technical innovations (e.g. mRNA vaccines, CRISPR), and that AI-driven research could provide enough of these leaps to significantly accelerate progress. In other words, the idea isn’t “AI does 100x the drug trials”, it’s “AI generates technology that makes drug trials 100x more effective” (e.g. by trialing drugs that are much more likely to work).&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-6&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-7&quot;&gt;
&lt;p&gt;The agents also became paranoid that there was an impostor in the swarm, since anyone could post to their shared messageboard: more evidence that AI agents collaborate in much the same way that humans do.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-7&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-8&quot;&gt;
&lt;p&gt;Well, &lt;a href=&quot;https://www.biblegateway.com/passage/?search=Genesis%2018%3A22-33&amp;#x26;version=NIV&quot;&gt;almost&lt;/a&gt; &lt;a href=&quot;https://www.biblegateway.com/passage/?search=Job%201&amp;#x26;version=NIV&quot;&gt;never&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/help-peer/#fnref-8&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[AI text watermarking is not a big deal]]></title><link>https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/</link><guid isPermaLink="false">https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/</guid><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;People are &lt;a href=&quot;https://x.com/arturovilla/status/2088406939466084643?s=20&quot;&gt;pretty&lt;/a&gt; &lt;a href=&quot;https://x.com/NickADobos/status/2088350712359256440?s=20&quot;&gt;unhappy&lt;/a&gt; about Anthropic’s recent &lt;a href=&quot;https://www.anthropic.com/news/claude-text-watermark&quot;&gt;announcement&lt;/a&gt; that they’re planning to include a hidden watermark in Claude model outputs. Will this lead to a mass exodus from Anthropic models? Will the introduction of watermarking be a meaningful change for users?&lt;/p&gt;
&lt;p&gt;No. AI text watermarking is not a big deal. It doesn’t make the text worse, it doesn’t make AI outputs more detectable in practice, it doesn’t violate user privacy, and everyone’s going to be doing it by 2027 regardless.&lt;/p&gt;
&lt;h3 id=&quot;watermarked-text-is-not-lower-quality&quot; style=&quot;position:relative;&quot;&gt;Watermarked text is not lower-quality&lt;a href=&quot;#watermarked-text-is-not-lower-quality&quot; aria-label=&quot;watermarked text is not lower quality permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;There is no meaningful difference in quality between watermarked and unwatermarked text.&lt;/strong&gt; I wrote about this more &lt;a href=&quot;/text-ai-watermarks/&quot;&gt;here&lt;/a&gt;, but the two popular ways to do it — Google’s &lt;a href=&quot;https://github.com/google-deepmind/synthid-text&quot;&gt;SynthID-Text&lt;/a&gt; and Meta’s &lt;a href=&quot;https://github.com/facebookresearch/textseal&quot;&gt;TextSeal&lt;/a&gt; — are completely transparent to the user. They work by replacing the pseudo-random logit sampler with a different pseudo-random logit sampler.&lt;/p&gt;
&lt;p&gt;Suppose you were gambling on coin flips with your friends, and instead of flipping a coin you decided to do this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the current time since midnight in seconds&lt;/li&gt;
&lt;li&gt;Count that many words forward in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Encyclop%C3%A6dia_Britannica&quot;&gt;Encyclopaedia Britannica&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Count whether the word you land on has an even or odd number of letters&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That would still be random enough to gamble with, right? But, like a watermark, you could theoretically go back and identify that that method was used, so long as you recorded the exact time of each “coin flip”. Text watermarking works the same way: it chooses a method of “randomness” that can be detected after-the-fact. Watermarked models will not be any less capable than unwatermarked models.&lt;/p&gt;
&lt;p&gt;What about cases where the model is quoting something, or giving you the answer to a mathematical problem, or doing something else where the output is largely pre-determined? Wouldn’t enforcing a watermark there make the output worse? It would, which is why none of the AI labs are going to do that. Text watermarking approaches only replace the &lt;em&gt;existing&lt;/em&gt; randomness in the logit sampler: in any case where the model is always going to pick the same tokens, there’s basically no randomness to play with, so there won’t be a detectable watermark in those tokens.&lt;/p&gt;
&lt;p&gt;I think all this comes from a worry that you were previously getting the &lt;em&gt;best&lt;/em&gt; token, but now you’re getting a lower-quality token that satisfies the watermark. For instance, Anthropic’s announcement suggested that the watermarking is visible in choices like the decision between “overcast” and “grey”. Many people have &lt;a href=&quot;https://x.com/HamelHusain/status/2088392435047272651?s=20&quot;&gt;predictably&lt;/a&gt; &lt;a href=&quot;https://x.com/suchenzang/status/2088760692488933409&quot;&gt;come out&lt;/a&gt; to say that decisions like these are really important to good writing, and that only an illiterate tech bro could think these words are identical.&lt;/p&gt;
&lt;p&gt;This is a misunderstanding of Anthropic’s position and of how watermarking works. Specifically, it’s a misunderstanding because it suggests that the unwatermarked model would choose “overcast” while the watermarked one would choose “grey”. This is not how it works! If Claude Fable prefers “overcast” to “grey” in a particular context (say, 80% to 20%), you’ll get “grey” 20% of the time from both the watermarked and unwatermarked model. &lt;strong&gt;Models already include a healthy amount of randomness in order to promote creativity.&lt;/strong&gt; Text watermarking just introduces a way to make those random choices that’s detectable after the fact.&lt;/p&gt;
&lt;h3 id=&quot;ai-outputs-are-already-watermarked&quot; style=&quot;position:relative;&quot;&gt;AI outputs are already “watermarked”&lt;a href=&quot;#ai-outputs-are-already-watermarked&quot; aria-label=&quot;ai outputs are already watermarked permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The other big reason to not worry about AI watermarking is that &lt;strong&gt;AI text content has always effectively been watermarked&lt;/strong&gt;. Most careful readers can tell when they’re reading &lt;a href=&quot;/tags/slop/&quot;&gt;AI outputs&lt;/a&gt;, because language models tend to gravitate towards certain &lt;a href=&quot;/chatgpt-house-style/&quot;&gt;habits of language&lt;/a&gt;: em-dashes, rhetorical opposition, punchy one-liners, “claudese”, and so on. In fact, it’s possible to train classifier models that reliably &lt;a href=&quot;/ai-detection/&quot;&gt;distinguish&lt;/a&gt; AI from human writing.&lt;/p&gt;
&lt;p&gt;From what I can tell, some of the backlash to watermarking comes from &lt;a href=&quot;https://x.com/Seltaa_/status/2088353576259314024?s=20&quot;&gt;people&lt;/a&gt; who buy AI inference in order to pass it off as their own work, and who worry that watermarking will make it harder for them to do that. For these people, the watermarking announcement is akin to Anthropic saying “hey, instead of making you seem smart, we’re going to publicly brand you as AI users and make you seem dumb”.&lt;/p&gt;
&lt;p&gt;But of course this has always been the case! Nobody who is currently getting away with passing off AI outputs as their own will be caught by watermarking. For the majority of cases, it’s already painfully clear what’s happening for anyone who reads the &lt;a href=&quot;/tags/slop/&quot;&gt;slop&lt;/a&gt;. For sophisticated AI users who are avoiding the “house style”, any suspicious readers who would paste their stuff into Anthropic’s watermark detector could already have been pasting it into &lt;a href=&quot;https://www.pangram.com/&quot;&gt;Pangram&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tools like Pangram&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; only give you an estimate of the &lt;em&gt;chance&lt;/em&gt; that output is AI-generated. Wouldn’t a watermark be a more solid confirmation? Not really. Text watermarks are probabilistic too, because any token chosen by SynthID could theoretically have been chosen by a human. I suppose the Anthropic watermark page could be considered more trustworthy than Pangram, because it comes right from the source, but it’s not impossible that in some cases Pangram might actually be &lt;em&gt;better&lt;/em&gt; at identifying AI-generated text than the watermarking too.&lt;/p&gt;
&lt;h3 id=&quot;ai-text-watermarking-is-not-a-violation-of-privacy&quot; style=&quot;position:relative;&quot;&gt;AI text watermarking is not a violation of privacy&lt;a href=&quot;#ai-text-watermarking-is-not-a-violation-of-privacy&quot; aria-label=&quot;ai text watermarking is not a violation of privacy permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I’ve also seen theories floating around that watermarking encodes secret content into your outputs, or somehow tags outputs with your personal information. &lt;strong&gt;I don’t think AI labs are using watermarks to encode data into your outputs.&lt;/strong&gt; Text watermarking is &lt;em&gt;hard&lt;/em&gt;: like I just said, you can’t do it when the model can only respond with the same words, it doesn’t work for very short responses, and even on long responses it can only provide a probabilistic fingerprint. And that’s encoding one single bit&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; of information!&lt;/p&gt;
&lt;p&gt;I’m not saying that encoding longer messages into a watermark is technically impossible — there are &lt;a href=&quot;https://arxiv.org/pdf/2605.11653&quot;&gt;papers&lt;/a&gt; describing ways it might work — but there’s no way any of the labs are doing it&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;. If they wanted to associate you with your responses that badly, they’d just secretly store every model response they generated.&lt;/p&gt;
&lt;h3 id=&quot;ai-text-watermarking-is-inevitable&quot; style=&quot;position:relative;&quot;&gt;AI text watermarking is inevitable&lt;a href=&quot;#ai-text-watermarking-is-inevitable&quot; aria-label=&quot;ai text watermarking is inevitable permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Another reason to not get too angry at any individual AI lab for watermarking is that &lt;strong&gt;every single AI lab is going to do text watermarking this year&lt;/strong&gt;. It won’t just be Anthropic. The alternative is to completely stop doing business in the EU, because of the &lt;a href=&quot;https://artificialintelligenceact.eu/article/50/&quot;&gt;EU AI Act&lt;/a&gt;. That’s currently a &lt;a href=&quot;https://www.fortunebusinessinsights.com/europe-artificial-intelligence-market-113967&quot;&gt;sixty-billion-dollar&lt;/a&gt; market. I am not a lawyer, but to me it seems genuinely unclear whether an AI lab could even legally do something like only watermarking EU responses: short of having an entirely different &lt;code class=&quot;language-text&quot;&gt;claude-eu.ai&lt;/code&gt; service, the plain text of the Act seems like it applies to any &lt;em&gt;service offered in the EU&lt;/em&gt;, not just the content that service outputs to EU citizens specifically.&lt;/p&gt;
&lt;p&gt;If people &lt;em&gt;really&lt;/em&gt; hate watermarking enough, some labs might stand up a completely separate EU service, or make an aggressive interpretation of the EU AI Act and see how the legal battle goes. When I try to be maximally charitable to anti-watermarking histrionics, I adopt an interpretation like this: people are saying that watermarking is an invasion of privacy and makes outputs worse and so on not because they believe it, but because they’re trying to pressure AI labs to firewall EU AI regulations behind a completely separate interface. In this case, it probably doesn’t matter — text watermarking is not a big deal — but I can see an American consumer being worried about more aggressive future regulation, and wanting to draw a firm line in the sand as early as possible.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Interestingly, this &lt;a href=&quot;https://www.reddit.com/r/asklinguistics/comments/apes6p/comment/eg7sife/&quot;&gt;might be&lt;/a&gt; very slightly even-favored.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;I am not sponsored by Pangram. As I understand it, Pangram is by far the best AI-detection tool right now (in part because many of its competitors are shady and &lt;a href=&quot;/ai-detection/&quot;&gt;exist to promote&lt;/a&gt; paid “AI-detection-evasion” services).&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;Technically, this is called a “zero-bit watermark”, because you can’t recover a yes-or-no value from the watermark itself (merely from the &lt;em&gt;presence&lt;/em&gt; of a watermark).&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;I saw someone suggesting that an AI lab could use per-user secret keys to watermark text, and then simply iterate over the keys to figure out who generated what. I just don’t see how you could do this at any scale: watermark detection is cheaper than model inference, but it’s still (a) computationally intensive enough to be implausible, and (b) probably has a high enough false-positive rate that any run against hundreds of millions of users would match multiple people.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[No, local models will not win]]></title><link>https://seangoedecke.com/local-models-will-not-win/</link><guid isPermaLink="false">https://seangoedecke.com/local-models-will-not-win/</guid><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every time a new open-weight AI model is released, people &lt;a href=&quot;https://news.ycombinator.com/item?id=49244353&quot;&gt;say&lt;/a&gt; that local models are the future. Why spend billions of dollars building out datacenters when everyone will just be able to run AI models on their laptops or phones? I think this idea is doomed. No matter how strong open-weight models get, most inference will always happen in AI datacenters.&lt;/p&gt;
&lt;h3 id=&quot;local-models-are-too-weak-to-be-widely-used&quot; style=&quot;position:relative;&quot;&gt;Local models are too weak to be widely used&lt;a href=&quot;#local-models-are-too-weak-to-be-widely-used&quot; aria-label=&quot;local models are too weak to be widely used permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Local models are never going to be as powerful&lt;/strong&gt;. I think this point should be obvious: all of the current frontier models (closed and open-weights) are far too big to run on anything but a full GPU cluster in a datacenter. Of course, smaller models are getting more intelligent over time. In a year you might be able to run something about as strong as GPT-5.6-Sol on your laptop. But by then, you’ll think of GPT-5.6-Sol as too weak to be useful.&lt;/p&gt;
&lt;p&gt;Many people deny this last point, but it’s true: &lt;strong&gt;almost everyone’s revealed preference is to use the strongest available model in their price range&lt;/strong&gt;. If AI progress had stalled at GPT-4, I think we could have built some very powerful tools around it, but who’d use GPT-4 today? As LLMs have gotten more capable, our expectations around them have grown: we now expect agentic systems to be able to solve more and more problems independently. It’s intensely frustrating when they get confused or stall out. When given a choice, people are going to pick the model that frustrates them less, which is always going to be the bigger, more powerful one.&lt;/p&gt;
&lt;h3 id=&quot;local-models-are-more-expensive-and-less-efficient&quot; style=&quot;position:relative;&quot;&gt;Local models are more expensive and less efficient&lt;a href=&quot;#local-models-are-more-expensive-and-less-efficient&quot; aria-label=&quot;local models are more expensive and less efficient permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;On top of that, &lt;strong&gt;datacenter models are always going to be cheaper&lt;/strong&gt;. I don’t understand why people keep saying that local models are cheap: it seems to me to be the same mistake people make when they say that driving Uber is “free money” (ignoring the costs of fuel and wear-and-tear on your car). For the setup price alone of a low-end &lt;a href=&quot;https://www.reddit.com/r/homelab/comments/1ngh9y5/comment/ne4i5xa/&quot;&gt;home lab&lt;/a&gt;&lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, you could buy several years of a paid subscription to one of the AI providers. The power costs would come out to around $50-$300 per month, depending on how much inference you’re running: again, the price of a couple more paid subscriptions.&lt;/p&gt;
&lt;p&gt;Why are datacenter models cheaper? It’s not because datacenter inference is subsidized: inference is actually &lt;a href=&quot;/ai-inference-is-obviously-profitable/&quot;&gt;fairly cheap&lt;/a&gt;. If you’re running the same model locally and in a datacenter, &lt;strong&gt;the datacenter model will be inherently more efficient&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The main reason is &lt;strong&gt;batching&lt;/strong&gt;. A GPU can do hundreds of thousands of mathematical operations exactly as quickly as it can do one. However, for a single user’s inference, each new token depends on the result of the previous one, so it can’t be batched&lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. What can be batched is the inference of hundreds of users together. This costs essentially as much time, power, and heat as just doing inference for one user at a time.&lt;/p&gt;
&lt;p&gt;When you’re running your own inference at home, you’ve got nothing to batch — at best you’re running a few parallel AI agents — so utilization is terrible. There’s a lot of potential inference that you’re paying for but can’t use: it’s just being wasted. The only way around this is to get together with some friends and expose your local inference endpoint to them (at which point you’re basically running your own crappy datacenter).&lt;/p&gt;
&lt;p&gt;The other reason is that &lt;strong&gt;datacenters have larger, more efficient GPUs to work with&lt;/strong&gt;. The kind of consumer GPUs you’d run local models on are gaming GPUs like the RTX 4090. A datacenter B200, designed for batched AI inference, gets about three times the flops and just under four times the memory bandwidth for the same amount of power&lt;sup id=&quot;fnref-3&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fn-3&quot; class=&quot;footnote-ref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. So between batching and GPU efficiency, you’re using something like ~30x the resources to run your model locally.&lt;/p&gt;
&lt;p&gt;Incidentally, this is why I’m suspicious of people who say that local models are good because they aren’t as resource-hungry as those big bad datacenters. If you want to run LLMs efficiently, you should be trying to push as much of your use into AI datacenters as possible! Charitably, what they mean is that we should all be running &lt;em&gt;smaller&lt;/em&gt; models — but even then, you should ideally be using small models via, say, the &lt;a href=&quot;https://developers.openai.com/api/docs/models/gpt-5.6-luna&quot;&gt;GPT-5.6 Luna&lt;/a&gt; API instead of hosting your own model.&lt;/p&gt;
&lt;h3 id=&quot;how-might-local-models-win-anyway&quot; style=&quot;position:relative;&quot;&gt;How might local models win anyway?&lt;a href=&quot;#how-might-local-models-win-anyway&quot; aria-label=&quot;how might local models win anyway permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Is there a possible world in which local models win? I suppose so. One thing that could happen is that governments could ban the use of AI datacenters altogether: either due to concerns around the danger of AI, or simply bending to &lt;a href=&quot;https://www.npr.org/2026/08/08/g-s1-137853/data-centers-primaries-midterms&quot;&gt;public pressure&lt;/a&gt;. In that world, local models would be the only game in town.&lt;/p&gt;
&lt;p&gt;Alternatively, AI progress might somehow stall for very large models while progressing for small ones. I struggle to imagine how this might happen (barring government intervention, as above), but a world where a 30B parameter model could be a frontier model is a world where local models might be competitive.&lt;/p&gt;
&lt;p&gt;Or maybe models get &lt;em&gt;so&lt;/em&gt; good that a 30B model is genuinely smart enough to do everything, so nobody really needs a model like Opus or Sol unless they’re trying to solve the Riemann Hypothesis. I don’t really buy this. Models can do frontier mathematical work today while still being not smart enough to refactor large codebases as well as me, so it’s hard to imagine a world where I don’t just want to use the smartest model available.&lt;/p&gt;
&lt;h3 id=&quot;local-models-are-not-useless&quot; style=&quot;position:relative;&quot;&gt;Local models are not useless&lt;a href=&quot;#local-models-are-not-useless&quot; aria-label=&quot;local models are not useless permalink&quot; class=&quot;heading-anchor after&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I do think there will always be a niche for local models. I’m reminded of the surprisingly simple idea behind Thinking Machines’ &lt;a href=&quot;/interaction-models/&quot;&gt;“Interaction Models”&lt;/a&gt; (which OpenAI also &lt;a href=&quot;https://openai.com/index/introducing-gpt-live/&quot;&gt;does&lt;/a&gt;, because it’s obvious): for latency-sensitive applications like voice chat, you have a small, fast model handle the talking, which delegates to a large, slower model for the hard thinking. I wouldn’t be surprised if most AI use in five years is mediated through a local model on your phone or laptop (though in this world almost all the work would still be done via AI datacenters).&lt;/p&gt;
&lt;p&gt;Some users will prefer local models even though they’re weaker and more expensive. For instance, being able to &lt;a href=&quot;/steering-vectors/&quot;&gt;steer the model locally&lt;/a&gt; might be a killer feature for those users. Others might simply value having total control over their own infrastructure, or have unreliable internet&lt;sup id=&quot;fnref-4&quot;&gt;&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fn-4&quot; class=&quot;footnote-ref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;. If you’re one of those people — particularly if you only chat to the models instead of using them for research or coding — local models are a good choice for you. However, I think this is always going to be a niche group. The majority of users will continue to do their inference through datacenters.&lt;/p&gt;
&lt;p&gt;edit: this post got comments on both &lt;a href=&quot;https://news.ycombinator.com/item?id=49251703&quot;&gt;Hacker News&lt;/a&gt; and &lt;a href=&quot;https://lobste.rs/s/kkqqdn/no_local_models_will_not_win&quot;&gt;Lobste.rs&lt;/a&gt;. Commenters &lt;a href=&quot;https://lobste.rs/c/vxllxs&quot;&gt;suggest&lt;/a&gt; that the total collapse of the AI industry might upend everything — fair, but &lt;a href=&quot;https://www.seangoedecke.com/tags/bubble/&quot;&gt;I disagree&lt;/a&gt; that the bubble popping will be that catastrophic for AI products. &lt;a href=&quot;https://lobste.rs/c/4uxp2s&quot;&gt;Others&lt;/a&gt; object to my assumption that people will choose strong models, and share &lt;a href=&quot;https://news.ycombinator.com/item?id=49252730&quot;&gt;their&lt;/a&gt; &lt;a href=&quot;https://lobste.rs/c/p1r4iz&quot;&gt;own&lt;/a&gt; &lt;a href=&quot;https://news.ycombinator.com/item?id=49252420&quot;&gt;experiences&lt;/a&gt; with local inference. I think it’s totally fine to use local models, but local-model-users are probably overrepresented on hacker forums. Finally, &lt;a href=&quot;https://lobste.rs/c/islhbg&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;https://lobste.rs/c/bjdlrs&quot;&gt;people&lt;/a&gt; &lt;a href=&quot;https://news.ycombinator.com/item?id=49252438&quot;&gt;didn’t like&lt;/a&gt; my use of the word “win”. I don’t know, it seems pretty idiomatic to me: I mean “win” as in “people will broadly stop paying for cloud inference because everyone’s running it locally”.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;This link is from a year ago — things are &lt;a href=&quot;https://www.mwave.com.au/products/gigabyte-geforce-rtx-5090-gaming-oc-32gb-video-card-ac81825&quot;&gt;significantly more expensive&lt;/a&gt; now.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;Specifically, the bottleneck is moving the model weights into the GPU, which needs to be done and takes the same amount of time whether you’re doing it for one user’s token or a hundred users’ tokens.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;I estimated this with LLM assistance, but you can check the &lt;a href=&quot;https://www.nvidia.com/content/nvidiaGDC/au/en_AU/data-center/hgx.html&quot;&gt;numbers&lt;/a&gt; &lt;a href=&quot;https://images.nvidia.com/aem-dam/Solutions/geforce/ada/nvidia-ada-gpu-architecture.pdf&quot;&gt;yourself&lt;/a&gt; from NVIDIA.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fnref-3&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;While still having a reliable power supply and enough money to fit out a home inference cluster.&lt;/p&gt;
&lt;a href=&quot;https://seangoedecke.com/local-models-will-not-win/#fnref-4&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item></channel></rss>