- The 9 Go test assertions I use (and why)
- How to manage configuration settings in Go web applications
- Organize your Go middleware without dependencies
- When is it OK to panic in Go? ★
- How to manage tool dependencies in Go 1.24+
- Eleven tips for structuring your Go projects ★
- Demystifying function parameters in Go
- A gentle introduction to Pointers
- A time-saving Makefile for your Go projects ★
- How to use the http.ResponseController type
- An introduction to Packages, Imports and Modules in Go ★
- A complete guide to working with Cookies in Go
- The 'fat service' pattern for Go web applications
- Using go run to manage tool dependencies
- Continuous integration with Go and GitHub Actions
- Which Go router should I use? ★
- I18n in Go: Managing translations
- How to correctly use Basic Authentication in Go
- Custom command-line flags with flag.Func
- Surprises and gotchas when working with JSON
- How to manage database timeouts and cancellations in Go ★
- How to parse a JSON request body in Go
- Golang Interfaces explained ★
- Using PostgreSQL JSONB with Go
- An overview of Go's tooling
- How to hash and verify passwords with Argon2 in Go
- Streamline your Sublime Text + Go workflow
- HTTP Method spoofing in Go
- How to build a Serverless API with Go and AWS Lambda
- How to disable http.FileServer directory listings
- Configuring sql.DB for better performance
- How to rate limit HTTP requests in Go
- Validation snippets for Go
- Working with Redis in Go
- Organising database access in Go ★
- An introduction to using SQL databases in Go ★
- Context-aware Handler chains
- Making and using HTTP Middleware in Go ★
- Simple 'flash' messages in Go
- Form validation and processing in Go
- HTTP responses in Go: JSON, XML and more
- Understanding Mutexes ★
- An introduction to Handlers and Servemuxes in Go ★
- Serving static sites with Go
Articles marked with ★ are favorites of mine