Go WaitGroup.Go in 1.25: When I Still Reach for errgroup
Go 1.25 added WaitGroup.Go, which removes the Add and Done boilerplate. Here is the before and after, plus when errgroup and SetLimit are still the…
Go 1.25 added WaitGroup.Go, which removes the Add and Done boilerplate. Here is the before and after, plus when errgroup and SetLimit are still the…
Go 1.27 lets methods declare their own type parameters. I converted a 14-function helper package, hit the interface rule that still says no, and reverted…
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.