The bill for fifty-one modules
Change one line in the tls module and you've signed up for twelve releases. That's not a bug in the architecture, that's the architecture.

Change one line in the tls module and you've signed up for twelve releases. That's not a bug in the architecture, that's the architecture.

To append four lines to one YAML file, the release job was cloning this entire website into memory. The first fix for it failed without making a sound.

I wrote the process document before doing the hard one. Then the hard one went through it and rewrote a step.

Everyone writes up the modules that came out. The decisions that mattered were the four packages I decided to leave exactly where they were.

Twenty-seven packages, four marks each, out of ten. The interesting column wasn't the one I expected, and one row explained the whole programme.

I wanted an FFmpeg that couldn't touch my disk. Building the interface to get one accidentally produced something considerably more useful.

Every FFmpeg progress bar I've seen scrapes the CLI's stderr. afmpeg has no CLI to scrape, so progress had to become part of the API instead.

Eleven variants of one shell script, on hundreds of laptops, launching pods into production. The language was never the problem, and it wasn't the fix either.

Two configs for one tool, the user's and the project's, and no rule anywhere about which one wins. Twenty minutes to make one a layer of the other and keep a straight answer about where every value came from.

go/mcp puts a Go CLI, HTTP service or gRPC service on the Model Context Protocol with three discovery tools instead of one per command, so a model carries a lantern rather than the whole catalogue.
