Post details
In Go, go.mod acts as both manifest and lockfile. There is never a reason to look at go.sum.

In Go, go.mod acts as both manifest and lockfile. There is never a reason to look at go.sum.

Very cool to see I'm on Golang Weekly's top 10 articles of the year with Go 1.24's go tool is one of the best additions to the ecosystem in years
I'm not surprised given the amount of traffic I've had for this over the year, but it's still cool to see reflected in their stats, too!
Does anyone know if there's a Charm BubbleTea UI prototyper? I'm trying to find something to have a play with some of the components to test out a UI I'm building, and ideally something drag-and-drop to play around with it would be convenient

Setting up govulncheck in GitHub Actions with GitHub Code Scanning alerts (2 mins read).

How to set up govulncheck to check for CVEs in your Go projects using GitHub Actions and have the results show up as a GitHub Code Scanning alert.
Gotcha: referencing symlinks with go:embed result in irregular file errors (2 mins read).

Why you may see irregular file errors in Go, if you're trying to go:embed a symbolic link.
Previous posts Why Go is not my favourite language and Go programs are not portable have me critiquing Go for over a decade.
GopherCon UK 2025 (10 mins read).

A writeup of the GopherCon UK 2025 conference.
An enum generator for go. Contribute to abice/go-enum development by creating an account on GitHub.
I'm on Fallthrough: Versioning: We Did It To Ourselves (1 mins read).

Announcing my appearance as a guest co-host on Fallthrough, talking about versioning.
I'm on Fallthrough: Why You're Wrong About REST (1 mins read).

Announcing my appearance as a guest co-host on Fallthrough, talking about REST, Hypermedia, and more.
Avoiding naming Go packages after common nouns like <code>rate</code> or <code>server</code> so that they don’t clash with variable names, and how to find a more fitting name for them instead.
Today, came across a Go package literally named "event". Such bland naming doesn't just hurt users, it hurts the package because being hard to google makes it less likely to be adopted. Ultra-generic naming isn't cool. It's just bad. For the love of god: https://brandur.org/fragments/go-no-common-nouns
The CLI starter kit. Contribute to charmbracelet/fang development by creating an account on GitHub.
Generating Go code from JSON Schema documents (25 mins read).

Looking at a couple of common libraries for generating Go structs from JSON Schema documents.
Creating cross-compiled Docker images from Go binaries (4 mins read).

How to create a (Docker) container image that is cross-compiled for different architectures, and includes a Go binary that is also cross-compiled.
Taking more control over your Cobra CLI documentation (2 mins read).

Releasing a library to manage the generation of Cobra CLI documentation using text/templates.
Improving the experience of browsing Renovate debug logs (4 mins read).

Creating a Terminal User Interface (TUI) application to improve the debugging experience with Renovate's debug logs.
Using type assertions in Go with concrete types (2 mins read).

How to perform a type assertion on a type in Go that isn't an interface.
Tricking oapi-codegen into working with OpenAPI 3.1 specs (7 mins read).

How to get oapi-codegen to interact with OpenAPI 3.1 specs, until it supports OpenAPI 3.1.
Go 1.24 new "tool" directive.

Rendering diffs for Go's testable examples (3 mins read).

A somewhat hacky solution for providing rich diffs for expected-vs-actual comparisons for testable examples in Go.
It’s a recurring question on gopher slack and discord: «How should I set up my go project repository?». Unfortunately, there are a lot of both outdated and o...
Go 1.24 introduced a new tool directive but it has one major problem.

Automagically migrating golangci-lint configuration to v2 with Renovate (2 mins read).

How to get Renovate PRs that update both the version of golangci-lint to v2, and runs the golangci-lint migrate command for you.
I'm on Fallthrough: APIs: Design Imperfectly, Improve Relentlessly (2 mins read).

Announcing my appearance as a guest co-host on Fallthrough, talking about APIs and how to build them.
I am thrilled to announce the release of v2! I hope is that these features will enhance your development experience.

A safe, succinct test data fixtures pattern using sqlc and validator.
I'm on Fallthrough: An Exploration of APIs, Versioning, & HTTP (1 mins read).

Announcing my appearance as a guest on Fallthrough, talking about APIs, versioning, documentation, and more.
I'm on Fallthrough: Patching Problems with Persnickety Proxies Purveyed by Paternalistic Princes (2 mins read).

Announcing my appearance as a guest host on Fallthrough, discussing the Go module proxy, pondering 'is Go dead?' and whether the Go team at Google have our best interests at heart.
Go 1.24's omitzero is another one of the best additions to the ecosystem in years (4 mins read).

Why I'm very excited about the JSON tag, omitzero, landing in Go 1.24.
Go 1.24's go tool is one of the best additions to the ecosystem in years (8 mins read).

Why I'm very excited about go tool landing in Go 1.24.
Accessing private Go modules in a Docker container (3 mins read).

How to use a Personal Access Token or SSH to access a private Go module, from a Docker container.
Gotcha: PersistentPostRunE only runs on successful commands in Cobra (3 mins read).

A possible gotcha when using Cobra to perform cleanup in a PersistentPostRunE.
Lessons learned adding OpenTelemetry to a (Cobra) command-line Go tool (10 mins read).

Some reflections on what I've found good and not so good about instrumenting a command-line tool with OpenTelemetry.
Some Go web dev notes
Using a separate Go module for your tools.go (2 mins read).

How to use the tools.go pattern to source-track your Go tool dependencies, but without polluting your top-level go.mod.
In this blog post, I'll explain why your logger belongs in the context, share my favourite package and provide some code snippets to get you started.

GopherCon UK 2024 (22 mins read).

A writeup of the GopherCon UK 2024 conference.
Always choose the right tool for the job? Nah. I know Go quite well, and I use it wherever I can. Want to find out why?

As of Go 1.21, Go fetches toolchains automatically, and it’s easy to not be running the version that you thought you were running.
You're currently viewing page 1 of 7, of 330 posts.