C's <code>malloc()</code> and <code>free()</code> APIs are reasonable APIs for C
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...
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...
This release took a while, for all the good reasons: a ton of new features and bug fixes for your delight! Oh, and, over 100 commits! It might be the biggest GoReleaser release in commits made, although I have no data to back it up — except my memory. GoReleaser s...
GoReleaser Pro v1.11+ added support to keeping a nightly release. That means that, whenever you want, you can run: goreleaser releaser --clean --nightly And it’ll delete previous nightly releases and create a new one with the current commit artifacts. To enable it, you&rsqu...
Everyone likes command line completions, so much that some even install extra tools just to have them. But you don’t need to install anything just for completions: Bash, Fish and ZSH all support it out of the box! In this post I’ll show you how to ship completions for...
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...
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...