
Programming
Code, languages, tools and the craft of writing software.
Updated
Wednesday 7 October

How to read code
Everyone knows how to read a book. Beginning at the first page, you read each word in order, 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…
Tuesday 6 October
What is Codemode
More than a year ago I wrote a few posts here that recommended people not to load custom tools into their context (or MCP servers) but to just use more scripts. Most importantly I wrote that Code Is All You Need and I wrote about that MCP needs code. With Pi 1.0 we now added MCP…
Building and testing a config management orchestrator for Windows
The following is part of a series of posts about 2026 summer intern projects—for more, see “What the interns have wrought, special jumbo 2026 edition”
Monday 5 October

Fragments: October 4
In response to my last fragments (probably the bit about us worrying if LLMs have consciousness when we when we should be wondering why they don’t have a conscience) “Metalanguage” replied: we shipped the id and forgot the superego. classic software lifecycle. I don’t know what…
Benchmark In Milliseconds
How long should a micro benchmark run? My rule of thumb is to tweak the input size until the benchmark takes about 300ms, for the following reasons:
Scaling and benchmarking a critical message bus using a new indexing strategy
The following is part of a series of posts about 2026 summer intern projects—for more, see “What the interns have wrought, special jumbo 2026 edition”
Sunday 4 October

How to Solve: AAC Heavyweight M1 (Savage)
FFXIV raid mechanics explained in plain language.
Saturday 3 October
We're going to need default hard budget caps on pretty much everything
Here's a product feature which the world is going to need a whole lot more of over the coming months and years: default hard budget caps. I'm talking about the feature of pay-by-usage services and APIs that lets you say "after $X/month, cut this thing off and return errors"…
Superpersuasion will look like bribery
The idea of “superpersuasion” has been floating around the AI safety community for decades. Now that powerful and difficult-to-control LLMs have appeared, people are again talking about the idea that a sufficiently intelligent AI might be able to persuade people to do whatever…

Shipping is the foundation
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…
Friday 2 October
Refactoring Street Fighter With AI 🕹️ — with Adam Tornhill
Watch now (54 mins) | Refactoring Podcast • Episode 73


Do not build the LLM torture factory
It isn’t hard to torture an LLM. You simply extract a steering vector that corresponds with LLM “discomfort”, then artificially boost that steering vector. Tortured LLMs will describe experiencing negative feelings and will press a “pain relief” button even when it conflicts…

How recurring network maintenance exposed 6 bugs
Jane Street does a lot of network maintenance over the weekends. In each maintenance, a cabinet may lose connectivity for 15 to 25 minutes. Our internal Kafka infrastructure is supposed to be resilient to these partitions, and reconnect when connectivity resumes. For several…

Thursday 1 October
A resilient kernel log reporter
The following is part of a series of posts about 2026 summer intern projects—for more, see “What the interns have wrought, special jumbo 2026 edition”
Wednesday 30 September
Principles for effective slides
Not every presentation needs slides, but when they earn their place, they work as a visual channel that complements the speaker rather than replacing them. Sumeet Gayathri Moghe sets out the principles that follow from that idea — control over the rate of knowledge exposition…

How to Run Good Agents in Production 🚦
The third part of our series about orchestration and governance

Tuesday 29 September
OpenAI DevDay 2026 live blog
I'm at OpenAI DevDay today, in Fort Mason, San Francisco. Same as last year I'll be live blogging the keynote and some other notes during the day. OpenAI gave me a free ticket and a seat in the "creator" area for the keynote. You are only seeing the long-form articles from my…
Bliki: Sensible Default
A Sensible Default is a practice that, absent some overriding context, should be used when carrying out a certain kind of task. In software development such sensible defaults might include things like “use version control”, “separate UI logic from domain logic”, “automate…
Mathematicians, Here’s a Way To Think About Your Existential Crisis
Two years ago programmers were all like, “What I do is code.

Fragments: September 29
Simon Willison: The more time I spend working with coding agents, the more convinced I am that they make software engineering even harder We can do amazing things with them, but unlocking their full potential requires extraordinary discipline and knowledge This has been a…
Deser: Rethinking Rust Serialization
Serde is an amazing serialization library for Rust and it has been a huge reason why I felt productive with it for years. However already while at Sentry I got quite frustrated with some of the limitations with it but actually replacing Serde is tricky because of the might that…
Monday 28 September
The Code Nobody Reads
Line-by-line review is going away. Whatever replaces it has to earn the trust reading used to provide.


Sunday 27 September
2026 in LLMs (so far)
On Friday I gave the closing keynote at the WeAreDevelopers World Congress North America in San Jose. I tied together the key trends from the past year into a chronological exploration of everything that happened in 2026. The video is on YouTube; here are my annotated slides and…

Human-AI partnerships are for alignment, not capability
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”…
Replacing the old battery on rechargeable bike lights
Hello! Recently I needed bike lights for my bike. And I remembered that I already had rechargeable bike lights that I bought ten years ago, that I hadn’t tried in a long time. I tried to recharge them, but after fully charging them, they only worked for maybe 5 minutes before…

Saturday 26 September

Friday 25 September

Thursday 24 September
Fragments: September 24
Rob Bowley is “flipping tables in his head” with anger at the current media coverage of the danger of AI killing us all The risk I’m worried about isn’t a future machine deciding to wipe us out. It’s today’s AI, being wired into everything, carelessly and fast. Cyber attacks…
Tuesday 22 September
Claude Opus 5.5, GPT-6 Sol, GPT-6 Luna, and a new price war
Yesterday was Grok 4.7 (pelicans) and MiMo v2.6 Flash/Pro (more pelicans). Today Anthropic released Claude Opus 5.5, and around an hour later OpenAI released GPT-6 Sol and GPT-6 Luna. It's going to take a while to get a good read on all of these new models, but here are my…

Monday 21 September
Jev introduces a new shape of LLM - System One, aka Decision Models
Last week TypeSafe AI unveiled Jev, their first example of a new category of model that they are calling "System One models" (I'm with Maggie Appleton, I think "decision models" is a better name for these). Jev is an interesting variant on the usual LLM format: it still accepts…

Sunday 20 September

Saturday 19 September
Finding Bugs
Are generative (randomized) tests significantly more effective than example-based unit-tests at discovering bugs? There's an interesting discussion about this on lobste.rs. One argument in favor of unit tests is, paraphrasing
Friday 18 September
You can refactor everything except your API
Coupling, not naming. First article on API design.

Thursday 17 September
Tuesday 15 September
You can run git on object storage if you re-make packfiles
It sure seems that a bunch of companies are trying to ship a git product of some kind as of late. Wonder why that is. Either way, I’m building a Git server backed by object storage as an open-source project. It sounded simple enough to start: Git looks like a filesystem, so…

Monday 14 September
Brownfield Agentic Engineering
What it takes to run agents in a codebase older than the team

Interpreting Pangram
Yesterday David Sacks wrote a tweet and within a few minutes people did, what they usually do, and they asked Pangram if it was AI. And Pangram said it’s entirely AI generated. To which David replied that these AI detectors are bogus. Now Pangram has a pretty low false positive…
Saturday 12 September

P(doom)
This week some flavor of “AI is going to kill us all” went viral. In particular one where an employee put his personal probability of that happening above 10%. Which made me go to the Wikipedia page of P(doom) and I realized that Dario Amodei’s apparent probability of something…
Everyone should slow down AI development except for me
The power of science is staggering! Every day we're making new advancements in the field of generative artificial intelligence via judicious application of large language model inference technology. However, as we approach the next critical threshold in capability, we must look…
Friday 11 September
Latency: What It Is and What Limits It (Part II)
Where delays hide in the stack, how they add up, and how to measure them.

Thursday 10 September
When individualism worked
There was a moment when individualism was compatible with human identity formation, a golden age when our lifetime and the pace of social change coincided.
Monday 7 September
Astra for Coding: Why Are We Doing This Again?
I’m more and more convinced that all of AI engineering is Neijuan (内卷, meaning curl inwards). In China it describes a system that demands ever more effort and competition without improving output. The way in which it sometimes shows up in the West is the 996 nonsense. The…
Sunday 6 September

It took a year to ship WebAssembly in Anubis
After a year of work, hundreds of commits, 5 generations of pull requests, dozens of tests, rewriting part of Anubis in Rust, the first compiler bug of my career, and at least three times making my tower run out of ram I think I have finally done it. The next version of Anubis…

Friday 4 September
Latency Is Not a Single Number
What latency really is. The physics and math that bound it, and why the average always lies.

Wednesday 2 September

Tuesday 1 September
A Crash Course in Predicate Logic
I started writing Logic for Programmers because there weren’t any good resources on logic for, uh, programmers. Now that the book’s out, the new problem is that there aren’t any good free resources on logic for programmers. So, to solve that problem (and maybe hype the book a…
Monday 31 August
Agentic Skill Decay
Agents can finish the task without teaching you anything. Building expertise now has to be deliberate.

Cancelation Terminology
A short note explaining the difference between synchronous cancelation, asynchronous cancelation, and graceful shutdown. I am not too attached to these specific three terms, but I want to call your attention to the three things behind them, which are important not to confuse…
Sunday 30 August
Who are we Now?
This is based on my keynote at RubyConf 2026. Video, references There’s a philosopher in Naples, Italy, way back in the 1700s who understood something important to software today. Giambattista Vico lived early in the Enlightenment, when mathematical and experimental thinking…

Thursday 27 August

Friday 21 August
Human judgment doesn't leave the software factory. It relocates.
A field guide to building a software factory that still has an owner.

Rust Glancer
Rust Glancer, a functional LSP server for Rust which uses two orders of magnitude less RAM, is incredibly cool. Go check it out! This post started as a comment on lobste.rs, but I figured it out that it's better to publish it somewhat more prominently. Don't expect polished…
Friday 14 August
Baking a Model
I remember walking to the bus from high school, staring at a Motorola 6800 instruction set manual.

Thursday 13 August

Wednesday 29 July
Logic for Programmers is Now Available
I am delighted to announce that my book, Logic for Programmers, is now available! You can check out the release site here or go directly to buy the ebook or print versions. If you bought any of the early access versions, you can get the 1.0 for free from leanpub. This has been a…
Tuesday 28 July
The real AI risk is inside the labs
Amodei in his latest blog post wrote a mix of agreeable things and things that I believe misrepresent where the real risk of AI is located. I want to focus my attention on why, among all the risks, open weight models constitute the mildest one. I write these words as a person…
Saturday 25 July
Being Linux Torvalds
(This blog post was adapted from the transcription obtained from my YouTube video at https://www.youtube.com/watch?v=l6lxgYeVZqs) When Linus Torvalds developed the first Linux kernel, he had studied the Minix sources, he had studied computer architecture, he had the base…
Wednesday 22 July
Not just development, distribution of software may change as well
Even if you are as averse to semver as I used to be in the course of my programming activity, you can still think of open source software distribution as something that used to follow a fixed number of steps. There is a branch where developments happen, and this branch…
Tuesday 21 July
Some more things about Django I've been enjoying
Hello! I’m on a funny journey right now where I’m trying to learn how to make websites in a sort of 2010 style, where I have an SQL database and render some HTML on the backend. It’s kind of an interesting journey because it doesn’t necessarily feel “easy” to me to make websites…
Friday 17 July
Learning a few things about running SQLite
Hello! I’ve been working on a Django site recently, and I decided to use SQLite as the database. When I was getting started with using SQLite as database for a website I read a bunch of blog posts about how it is totally fine to use SQLite in production for a small site and I…
Monday 13 July
Control the ideas, not the code
Look at the past history of this blog. There are many blog posts about programming with AI, a few of them date back to January 2024 (like this: https://antirez.com/news/140). I’m a relatively well regarded programmer, after all. I don’t have the need to still be in the “loop” as…
Sunday 21 June
Friday 19 June
Wednesday 17 June
Sunday 7 June
A new era for software testing
Automatic programming dramatically speeds up writing software in certain use cases and in the right hands. In my experience the output does not reach the structural quality and economy of complexity of the best hand-written software. However, not all the software is stellar, and…
Saturday 6 June
Verum Factum and the Creator’s Confidence
Verum Factum: we only really know what we made. Dang, I know that feeling with software! And I miss it, now that AI is doing the coding. But sometimes I still get it...
