Rust vs Go in 2026: The Heuristic I Actually Use
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…
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…
The Go concurrency patterns I actually reach for in 2026: errgroup instead of sync.WaitGroup, context cancellation everywhere, worker pools without cargo cult.
REST API design rules I still lean on in 2026: versioning, naming, pagination, errors, idempotency. Real Go code, plus the rituals I quietly skip.
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…
The Go error handling patterns I actually use in production: wrapping with %w, errors.Is and errors.As, sentinel errors, and errors.Join, with code.