Parent links in Go ASTs

A common question that comes up when writing AST-based tooling in Go is "how do I find a node's parent?", or more generally, "what are all the ancestors of a given node?" Go's AST package does not come with parent links out of the box; this is a common choice...

Go 1.19 added an <code>atomic.Pointer</code> type that's a generic type

Gotcha: testable examples in Go need an `output` comment

One thing I really like about building libraries in Go is that you can create testable examples as a first-class citizen of the testing framework. This allows writing example code in the repository in a way that can make sure that expected use cases are always valid and do not br...

Announcing GoReleaser v1.11 — the hundred commits release

This release took a while, for all the good reasons: a ton of new features and bug fixes for your delight!

Enabling Nightly releases using GoReleaser Pro

GoReleaser Pro v1.11+ added support to keeping a nightly release.

Shipping completions for Go CLIs using GoReleaser and Cobra

Everyone likes command line completions, so much that some even install extra tools just to have them.

How I used Go to make my radio auto-switch to AUX-IN when a Raspi plays music

Ok, so your radio lacks AirPlay support but has an auxiliary input and can be remote-controlled via the Frontier Silicon API. Fetch a Raspberry Pi, put Shairport-sync and Raspotify on it, plug it into the AUX port, and glue everything together with some Go code. Et voilà - home...

Introducing the `tidied` tool, to more easily check whether `go mod tidy` has been run

If you're working with Go projects that use Go modules, you may be aware of the format of the go.mod and go.sum, which are used to track dependencies and their checksums respectfully. For instance, if we take the following go.mod, you'll notice there are two sections for dependen...

Some resources for looking at the current development version of Go

The C <code>free()</code> API means memory allocation must save some metadata