Redowan's Reflections

Redowan's Reflections

Redowan

Redowan Delowar's reflections on software, systems, and sundry.

Latest Posts

Go’s proposal for package flag was accepted on July 23, 2026. It fixes an awkward case in programs that read the same setting from command-line flags, environment variables, and defaults. Suppose a server has a -debug flag whose default...
Go’s proposal to allow examples with any signature was accepted on July 8. Today, an example must look like func ExampleXxx(). go/doc skips the function as soon as it sees a parameter or result. The example doesn’t appear in go doc or on...
These days, unmanaged go func() calls don’t appear as often as they used to in the early days of Go. At this point, everyone knows Dave Cheney’s maxim to “never start a goroutine without knowing how it will stop”. Even so, I still...
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.
Search Random