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.
I pulled Gin out of a service that had eleven routes. Here is how I now choose between net/http, chi, Gin, Echo and Fiber, with…
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…
Rust vs Go, decided by what you are building rather than benchmarks: where the borrow checker pays off, where Go's compile times win, and when…
I wrote the same map helper four times before using Go generics. Where type parameters earn their keep, where I backed them out, and what…
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…