Git branches as a social construct

Ultimate Go Tour

I have always appreciated the Go Team investing time on providing the community with the Go Tour. This website is designed to help developers get started in learning the Go programming language. The nice part of the website is that it provides an interactive environment where one...

What’s New in Go 1.22: reflect.TypeFor

The first release candidate for Go 1.22 is out, which means it’s almost time for the final release and it is time for me to blog about what I worked on this cycle. As usual, my contributions were small, but they were mine, so I’m going to talk about them from a behind-the-sce...

Sign in with Google in Go

This post provides some code samples for implementing a "Sign-in with Google" flow for your web application in Go. For an overview of auth/authz and the OAuth protocol, please refer to my earlier post about Sign-in with GitHub. Sign-in with Google has existed in one for...

How do you represent a JSON field in Go that could be absent, `null` or have a value?

If you're a follower of my blog you'll know that just one of the Open Source projects I maintain is the oapi-codegen OpenAPI-to-Go code generator. Last year, we received a feature request to handle the case where a JSON field may be one of three states - unspecified, set to null,...

Interactive examples of Go 1.22 features

#​490 — January 9, 2024 Unsub  |  Web Version Go Weekly Rob Pike: 'What We Got Right, What We Got Wrong' — A written version (the script, really) of Rob’s GopherConAU talk given in November (▶️ 47-minute video here), where h...

Best Go books for 2024

What are the best Go books for 2024? Read my (relatively) unbiased recommendations for the Go books you should absolutely buy and read right now, whether you’re a beginner or expert Gopher.

Best Go books for 2024

What are the best Go books for 2024? Read my (relatively) unbiased recommendations for the Go books you should absolutely buy and read right now, whether you’re a beginner or expert Gopher.

Rate limiting via Nginx

I needed to integrate rate limiting into a relatively small service that complements a monolith I was working on. My initial thought was to apply it at the application layer, as it seemed to be the simplest route. Plus, I didn’t want to muck around with load balancer config...

Rate limiting via Nginx

I needed to integrate rate limiting into a relatively small service that complements a monolith I was working on. My initial thought was to apply it at the application layer, as it seemed to be the simplest route. Plus, I didn’t want to muck around with load balancer config...