Redowan's Reflections
Redowan's Reflections
Redowan
Redowan Delowar's reflections on software, systems, and sundry.
Latest Posts
While going through the Go generics proposal, I got curious about how the compiler implements it. Compilers usually handle generics in one of two ways: With full monomorphization, the compiler turns generic code into concrete,...
Go 1.26 rebuilt go fix from scratch. If you haven’t tried it yet, give it a spin: it rewrites the code in your module to use modern language and library features. It has quickly become one of my favorite features, and LLMs are a big part...
Say you put a cache in front of Postgres to speed up reads. A hot key expires: the next request misses the cache, so it queries Postgres to refill the key the key is popular, so while that first query runs, a hundred more pile in for it...
I ran into the classic “range over a channel” leak while working on a custom cron scheduler. I’ve debugged it on prod many times before, but writing one myself in a small piece of code reminded me how easy it is to write bugs like this...
Go 1.27 is getting a goroutine leak detector in runtime/pprof. The proposal was accepted in April. A few common goroutine leaks # A goroutine leaks when it blocks forever on a channel or a lock that nothing will ever release, so it...
Postgres 19 finally gives us a clean way to do read-after-write across replicas. Without it, here’s the problem: you write a row to the primary then you immediately read it back and that query goes to a replica but the replica hasn’t...
I’ve been managing my dotfiles with GNU stow for a few years. I even wrote a piece with a corny title about that setup back in 2023. Stow served me well, but managing symlinks across multiple devices slowly became a pain in the butt. So...
Mirroring a static Hugo blog onto ATProto with standard.site and Sequoia, plus the GitHub Actions wiring that republishes the records on every push without any manual steps.
Drive-by AI changes break the shared model a team builds around its code, and the ICs end up cleaning up the mess. Why pushing to mainline should come with the pager.
How cmd/go's script tests led me to testscript, and how to use it for CLI tests that exercise argv, stdout, stderr, exit codes, and scratch files.
txtar is a tiny plain-text archive format Russ Cox introduced in 2018 for multi-file test fixtures. The Go Playground, cmd/go's script tests, gopls's marker tests, and rsc.io/rf all reach for it.
The default slog API is loose enough that a careless line ships broken JSON to production. Pin it down with Attr constructors, LogAttrs, a context-borne logger, and sloglint.
Four of the five steps in every unary RPC handler are wire plumbing. Pin the service function signature and they fit in one generic adapter per transport.
A Go closure holds a live reference to whatever it captures, not a snapshot. Real examples of where this trips people up, and how to keep it boring.
Notes on Go's newly accepted uuid proposal and the tradeoffs behind the API.