Golang Error Handling: The %w Mistake I Shipped for a Year
I wrapped Go errors with %v for a year and broke errors.Is without noticing. The golang error handling rules I follow now, with before and…
I wrapped Go errors with %v for a year and broke errors.Is without noticing. The golang error handling rules I follow now, with before and…
I found 41,217 leaked goroutines in one pprof dump. The Go concurrency patterns I actually ship in 2026: channel ownership, WaitGroup.Go, and errgroup.
Golang context past WithCancel: how WithCancelCause, WithoutCancel and AfterFunc fixed three real production bugs for me, with before and after Go code.
Go 1.23 range-over-func lets you skip slices you throw away. Here is how I rewrote real iterators with iter.Seq, when it helps, and when a…
The Go error handling patterns I actually ship in 2026: wrapping with %w, errors.Is vs errors.As, and killing the log-and-return anti-pattern.
How I moved a Go backend from zap to the stdlib log/slog package, the handler config I use in prod, and what I quietly miss…
I stopped rotating Go web frameworks and picked one. Here's when I reach for Chi, Gin, Fiber, Echo, and plain net/http on production Go services…
The Go concurrency patterns I actually reach for in 2026: errgroup instead of sync.WaitGroup, context cancellation everywhere, worker pools without cargo cult.
Go 1.23's range-over-func and the iter package killed a pile of iterator boilerplate I'd been writing for years. Here's what actually changed for me.
Go generics turned four. Here's where I actually reach for type parameters in real Go code, the constraints I lean on, and the patterns I…