The C <code>free()</code> API gives libraries and functions useful freedom

Creating a tag and releasing from a GitHub Action, with GoReleaser

Most people run GoReleaser by creating a tag locally, pushing it, and letting their CI takes care of the matter.

C's <code>malloc()</code> and <code>free()</code> APIs are reasonable APIs for C

Parent links in Go ASTs

A common question that comes up when writing AST-based tooling in Go is &quot;how do I find a node's parent?&quot;, or more generally, &quot;what are all the ancestors of a given node?&quot; 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...