Reading List

This page is auto-generated from Github Actions workflow that runs every day at night and fetches the 5 latest articles from each of my favorite blogs.

Go maps, hashes of map keys, and pointers: a little surprise

Thoughts on coding agents

Before December 2025, I was thinking about coding agents mostly as a question of autonomy, e.g. how far a model can go on its own before a human has to step in. The models are being trained to produce trajectories that are effective for people who already know where they want to...

Gin: 12 years, 88K stars, and zero broken APIs

#​608 — July 3, 2026 Read the Web Version Go Weekly Building Gin: Simple Over Easy — Did you know Gin, the popular Go web framework, was built for a social network that never took off? Twelve years and 88K stars later, its creator re...

Summary of reading: April - June 2026

"The Nuremberg Trial" by John Tusa and Ann Tusa - a detailed, meticulously researched account of the Nuremberg Trials. There's not a whole lot of side questing in this book - it's all focused on the trials themselves. Interesting read overall, though somewhat dry and a...

Profiling

In the previous article we took apart the reflect package and found that its magic is mostly the compiler leaving very good notes — type descriptors frozen into read-only data at build time, and a package that knows how to walk them. The whole article was about reading metadat...

Go interfaces, reflection, and binary size

Request coalescing with Go singleflight

A hot cache key expires and a hundred requests issue the same query at once, saturating the database. Go's singleflight package coalesces those duplicate calls into one. How to wire it up, how to measure whether it's firing, and why per-pod coalescing is usually enough.

Comparing six Go cache designs

#​607 — June 26, 2026 Read the Web Version Go Weekly Awesome Go: ~3000 Categorized Go Resources — Most curated ‘awesome’ collections go stale, but I’ve been impressed that Go’s gets almost-daily updates! It’s a perennially...

Rewriting the world in Rust

The world runs on legacy code—hundreds of millions of lines of it. Can we rewrite it all in Rust? And is that even a good idea?