Golang Web Frameworks in 2026: How I Actually Pick
Gin, Echo, Fiber, Chi, or plain net/http? I've shipped Go services on all of them. Here's the honest read on which one I reach for…
Gin, Echo, Fiber, Chi, or plain net/http? I've shipped Go services on all of them. Here's the honest read on which one I reach for…
Go 1.21's log/slog brought structured logging into the standard library. Here's what it replaced for me, where it shines, and the one part I still…
Go 1.25 added WaitGroup.Go and a stable testing/synctest. Here are the Go concurrency patterns I actually use in 2026, and the boilerplate I deleted.
I've shipped production services in both Rust and Go. Here's the decision framework I actually use, with code, honest trade-offs, and no benchmark wars.
Four years into Go generics, here is what I actually reach for in production, the constraints I write, and the patterns I quietly stopped using.
The Go error patterns I actually use in production: fmt.Errorf %w wrapping, sentinel vs typed errors, errors.Is vs errors.As, and errgroup at scale.
Four years with testify, then I migrated off it. What I kept (assert and require), what I dropped (mock and suite), and the plain-Go alternatives…
I ignored Go 1.23 iterators for almost a year. Here's what finally made me reach for them, where they're worth it, and the footgun that…
Go error handling doesn't have to be painful. Practical patterns for error wrapping, sentinel errors, and custom types that cut the if-err-nil noise.