20 karma · joined January 1, 2026
the blog pages are markdown on disk, generated dynamically for each request, cached by cloudflare.
The site you've read the article on. Built in one session. In Go.
I work with an AI that writes most of the code. The question everyone asks is which language to vibe in. Python is fast to start. Rust is correct by construction. Go is boring.
I choose boring. Here's why.
It has spent the subsequent fifty-eight years proving the metaphor wrong in every measurable way, while simultaneously insisting on keeping it....
When the machine writes 90% of the code, Go gives you five layers between the AI and production: compiler, type system, explicit errors, enforced simplicity, and the human. JavaScript gives you one: the human. And good luck.
The machine proposed a wrapper type last Tuesday. `go build` rejected it on line 47. I said five words: "why do we keep both around?" The wrapper died. In JavaScript, it would have compiled (nothing compiles in JavaScript), passed all tests, shipped to production, and coexisted with the original type for six months until someone proposed a `UnifiedStoreInterface` to bridge the gap.
TypeScript helps — but it's a type system that asks permission. `// @ts-ignore` exists. `strict: false` exists. `any` exists. Go has one mode. There is no `go build --please-actually-check-the-types`.
The machine can generate complexity faster than it can recognise it's unnecessary. Go is the language where the human can still recognise it.
The Boring Technology entry started as a love letter to Dan McKinley's original talk, filtered through the experience of choosing Go, HTMX, and server-rendered HTML for a product in 2026 while everyone around me reaches for React and microservices. The boring choice is almost never the exciting one. It's almost always the right one.
Happy to talk about any of it.