Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.
The wild west of polyglot docs sites
A technical writer explores the poorly charted problem of building one cohesive docs site for a project with libraries in many programming languages, comparing transformation and 'turducken' strategies, a universal header, and comprehensive search with Pagefind across outputs from different API reference generators.
5 min · 1,252 words
How to Fix autoconf-style Config Probing
Boris Kolpackov explains why autoconf/CMake-style configuration probing, which compiles and links test programs to detect features, silently produces wrong results, and proposes fixes tested in build2: control probes that must succeed, stricter error detection and more, with roughly half a second of overhead for 500 probes.
9 min · 2,021 words
The tests your agent writes for itself
Mashhood Rastgar responds to Kun Chen's DeepSWE v1.1 experiment, where banning Claude Sonnet 5.5 from writing its own tests left success flat while cutting time and cost, arguing the real lesson is about unrequested agent-written tests versus human-specified tests that encode intent.
3 min · 768 words
Margaret Hamilton, computing pioneer who led software development for the Apollo program, dies at 90
MIT News obituary for Margaret Hamilton, who led the software engineering team at MIT's Instrumentation Lab during NASA's Apollo program and died on September 30 at 90. It traces her work on the Apollo guidance software, her role in establishing software engineering as a discipline, her later career as a computing entrepreneur, and her many honors.
7 min · 1,590 words
matklad explains the mental model that made Git click for him: besides an immutable content-addressed object store, Git is a plain mutable key-value store of refs. Branches, tags, remote-tracking branches and notes are all just refs, and spelling out CLI shorthands like git fetch origin master shows why one command says origin master and another origin/master.
5 min · 1,098 words
Graham Lee walks through common objections to AI coding: code as art, AI as job thief, humans as prompt-relaying meat proxies, software engineering as rule-following, and AI companies as bad actors. He finds each rests on a contestable premise, drawing on Marx's Fragment on Machines to argue it is the mode of production, not the technology, that takes the job.
3 min · 711 words
David Heinemeier Hansson follows up his Rails World talk telling programmers to put down the pencils: coding agents are now good enough that writing most code by hand is no longer economically viable, AI is more like gaining capable new coworkers than another tool, and programmers who refuse to collaborate with agents are the ones who should worry.
2 min · 382 words
Last rites for Gentoo's Chromium package
LWN covers Gentoo's decision to last-rite its Chromium package: maintenance burden, toolchain and sandbox complexity, and what the end of a distro-packaged Chromium means for Linux users who relied on it.
58 min · 13,293 words
Maybe a better way to track the release history of a Git repo
Mark Dominus recalls how per-deployment release tags left ZipRecruiter's Git monorepo with far too many refs, and proposes an alternative: a single ref per tier and app pointing to a chain of two-parent metainfo commits, so the full release history stays auditable, revertible and browsable with ordinary git log.
8 min · 1,805 words
Consistency is not a localized property
A short N The Loop essay using Kafka's years-long exactly-once effort, which still needed redesign eight years later, to argue that consistency is an end-to-end property no single component can guarantee, so someone must understand and own the whole system rather than trusting machines to hold it.
1 min · 305 words
The Slow Formation of Durable SoftwareHow a group of historians took years to imagine Zotero, the research application that would eventually be used by millions
Today, software can be created more or less instantly with AI, for a large user base or for yourself, for any purpose or for no serious purpose at all. As Robin Sloan enticingly puts it, just “ask for what you want.” The genesis of Zotero, the “free, easy-to-use tool to help you collect, organize, annotate, cite, and share research,” used by over 20 million people in dozens of languages and countless disciplines, is the opposite of this instant gratification. It took five…
15 min · 3,481 words
Software developers are not okay
Baldur Bjarnason looks at the wave of software developers posting about burnout, layoffs, the 2026 job market and AI taking the fun out of programming, and argues the comment sections reveal an industry in real distress. His essay explains why so many are not doing well and suggests people in software consider a possible future outside the tech industry proper.
10 min · 2,208 words
Do you actually like hard problems?
Sunil Pai argues that engineers who say they love hard problems mostly love puzzle solving and pattern matching, which AI now does with near-infinite breadth. The genuinely hard problems left mix engineering with product, society, culture and politics, and he reflects on missing being the go-to engineer for the grind even as people still seek his higher-level judgment.
1 min · 312 words
When random is not actually random enough
Austin Seipp of East River Source Control shows why picking an item with random_u64() modulo n skews the distribution, and argues for APIs that express the desired distribution directly, such as weighted random_choice, which his team now uses everywhere in its Antithesis-related test code.
8 min · 1,816 words
Google Project Zero's Natalie Silvanovich explains why emergency security patches are slowed mainly by testing and delivery, and surveys the rapid-remediation tools large vendors use (feature flags, input filtering, alternate update channels and hotpatching), urging vendors to plan for widespread active exploitation as LLMs speed up attacks.
9 min · 2,033 words
Armin Ronacher explains why Pi 1.0 added MCP support through Codemode despite his long preference for bash and scripts: bash can only compose programs that run in the execution environment, while Codemode lets the model orchestrate harness-side tools like image reads and sub agents in a sandboxed QuickJS/WASM runtime, plus the open problems that remain.
12 min · 2,672 words
If somebody tries to hot-patch an already-hot-patched function, how do they avoid conflicts?
Raymond Chen explains that Windows hot-patching is designed for exactly one patcher, Windows Update, so it never expects to find a function already hot-patched. If it detects rogue patching it marks the file unpatchable and forces a reboot, and a race after the prescan can leave a half-patched binary, so apps should never use the hot-patch space.
2 min · 417 words
Flirt, a local-first code review tool built for the patch-series workflow where authors keep amending, rebasing, and force-pushing, is now open source on Codeberg. It remembers what you reviewed and shows the diff to the current state, works with GitHub and mailing lists, and is not yet ready for general use.
1 min · 173 words
Vibecoding Photoshop: Time and Pressure
André Klein argues the claim that vibecoding can't replace tools like Photoshop is now dead, because several agent-era Photoshop clones exist. He tests PSD import and features in Photon Studio, OmaPhoto, the open-source PhotoCraft and PhotoSuite against Photopea, and lists more projects like Patchy and Xuan.
5 min · 1,092 words
A new, bespoke static site generator to replace Jekyll
Chris Wellons replaces 15 years of Jekyll on nullprogram.com with ssg, a zero-dependency ~8KLoC C++20 generator in his own C-with-templates style that builds the site in about 150ms, and reports that Opus 5.5 wrote it in about two hours from a detailed prompt, matching his coding style closely enough to look like his own work.
6 min · 1,473 words