Go

Notes on the Go programming language — interfaces, concurrency, testing, and patterns that have held up in production.

Error translation in Go services · article
Testing unary gRPC services in Go · article
Repositories, transactions, and unit of work in Go · article
Wrapping a gRPC client in Go · article
Go errors: to wrap or not to wrap? · article
Mutate your locked state inside a closure · article
What canceled my Go context? · article
Structured concurrency & Go · article
Your Go tests probably don't need a mocking library · article
Splintered failure modes in Go · article
Re-exec testing Go subprocesses · article
Revisiting interface segregation in Go · article
Avoiding collisions in Go context keys · article
Organizing Go tests · article
Subtest grouping in Go · article
Let the domain guide your application structure · article
Test state, not interactions · article
Early return and goroutine leak · article
Lifecycle management in Go tests · article
Gateway pattern for external service calls · article
Flags for discoverable test config in Go · article
You probably don't need a DI framework · article
Preventing accidental struct copies in Go · article
Go 1.24's "tool" directive · article
Capturing console output in Go tests · article
Deferred teardown closure in Go testing · article
Three flavors of sorting Go slices · article
Nil comparisons and Go interface · article
Stacked middleware vs embedded delegation in Go · article
Why does Go's io.Reader have such a weird signature? · article