Blain Smith
Blain Smith
A personal blog mostly about tech and some of the frustrations with it, but there is some technical goodies.
Top Words
- hare
- software
- programming
- years
- requests
- tracing
- fucking
- week
- october
- servers
- madglory
- easy
All posts (60)
The industry has a maddening relationship with solved problems. A thing gets figured out, packaged, documented, and shipped, and a decade later half the field is building it again from scratch. The old solution was rarely wrong. Somewhere along the way the proven thing got traded for something that looked cheaper,...
Recently, I wrote about using Go's net/http/httptrace to get the per-phase timing breakdown for HTTP requests - DNS, TCP, TLS, and server processing. After writing about that package, I wanted to know what the same breakdown costs in Rust: whether the ecosystem has an equivalent, and what building one reveals about...
I was writing a controller that watches Kubernetes HPAs and Istio VirtualServices for changes and coordinates between the two. Both watchers feed updates into the same reconciliation loop, and the loop needs to act on whatever the current state is, not replay a backlog of intermediate states it missed while it was...
RFC 10008 was published on June 15, 2026 and defines a new HTTP method: QUERY. It fills a gap that has existed for as long as I have been building APIs. You have data to send to the server in order to describe what you want back, but GET does not have a body and POST is neither safe nor idempotent. QUERY gives you a...
net/http/httptrace has been in the standard library since Go 1.7 and most Go developers I talk to have never used it. It exposes hooks for the points in an outgoing HTTP request that you usually cannot see from outside the transport: DNS resolution, connection acquisition, TLS handshake, the moment bytes go on the...
Walk into any old stone church and look up. The arches, buttresses, and ribbed vaults that hold the roof against gravity for a thousand years were not chosen for their beauty. They were chosen because stone is heavy and weak in tension, and the people who built those walls had to obey what stone could do. The beauty...
I have been writing more and more Hare over the past year and finding places where the ecosystem still has gaps worth filling. One of those gaps is messaging. NATS is my go-to for lightweight pub/sub and I have used it in production across a handful of projects, so building a native Hare client felt like a natural...
Hey, dipshit. You know what compiles in two seconds, deploys as a single binary, and doesn't shit itself when a transitive dependency gets yanked from npm at 3am? Go. The same way HTML has been sitting there since the dawn of the goddamn internet waiting for you to stop overcomplicating the frontend, Go has been...
Bluesky went down for half its users for about 8 hours on Monday. Jim Calabro wrote up an excellent post-mortem that is worth reading in full, but the root cause is something I keep seeing across languages and runtimes, and it's worth talking about on its own. One endpoint in their data plane, GetPostRecord, fanned...
I asked my son if he could learn to build anything, what would he want to build. He is twelve years old and autistic and he does not elaborate unless you ask him to. He said, "I want to measure the temperature outside." That was the whole answer. No explanation, no context, no story about why. Just the thing itself....
I've been building an API recently with a stack that I think hits a sweet spot of just enough structure to keep a team productive, not so much that you're fighting the tools. The stack is Huma for the HTTP layer, sqlc for database queries, and Goose for migrations. Each tool does one thing well and stays out of your...
Hare doesn't have a package manager. This is by design and I'm glad for it. No dependency hell, no lock files, no node_modules black hole. However, you still need a way to pull in third-party code. There are two approaches: system-wide installation via make install, and vendoring directly into your project with git...
Page 1 of 5