Introducing `dmd`, a command-line tool for Dependency Management Data (DMD)

I've been doing a lot of work recently around the dependency data of various projects, which stems from a post and idea of mine from a while ago about monetising the supply chain. Separate to that lofty goal - especially as there are some tools like socket.dev and StackAid workin...

What’s new in Go 1.20? Podcast

I was on episode 267 of the Go Time podcast, talking about What’s New in Go 1.20. Check it out!

Watermill v1.2 released

After almost three years since the last stable release, Watermill v1.2 is finally out! If you’re new here, Watermill is our open-source library for building event-driven applications in Go, the easy way. A lot has happened since v1.1. We’ve been running Watermill on p...

The case for atomic types in programming languages

Interfaces 101 : Error Handling With Go Ep. 3

Introduction In episode 2, Miki examined the impact interfaces have on the performance of a Go program. To perform this experiment, Miki invoked a type’s method in two ways: with the concrete type and as an interface function to measure the difference in execution time. The con...

Interfaces 101 : Heap Escape Ep. 2

Introduction In episode 1, Miki had two functions that performed the similar operation, but returned different types. To refactor this, Miki rewrote both functions as a generic function that allowed him to specify the type to be returned during invocation. In some cases, the comp...

Write packages, not programs

Go has a great standard library. What if we think about our work not merely as building one-off programs, but instead contributing packages to the universal Go library?

The Magic of Sampling, and its Limitations

The magic of using small samples to learn about large data sets.

What’s New in Go 1.20, Part III: Minor Standard Library Changes

Go 1.20 was released on February 1, 2023. That means it’s time for the final part of this three part look at What’s New in Go 1.20. In this part, we’ll look at some of the relatively minor changes to the standard library. Before we begin, here are two changes I won&...

C was not created as an abstract machine (of course)