Introducing `dmd-web`, a web frontend for Dependency Management Data (DMD)

Since starting the project in February, I've been having a great time working on dependency-management-data, a project to make it easier to understand how internal and Open Source dependencies are used in your projects. We've been using it a fair bit at Deliveroo and it's helped...

Ungrammar in Go and resilient parsing

It won't be news to the readers of this blog that I have some interest in compiler front-ends. So when I heard about a new(-ish) DSL for concrete syntax trees (CST), I couldn't resist playing with it a bit. Ungrammar is used in rust-analyzer to define and access a …

Finding bugs with fuzzing

In the thrilling conclusion to our fuzz testing series, we’ll use Go’s fuzzer to find a real bug in our code, and also to verify the fix.

Finding bugs with fuzzing

In the thrilling conclusion to our fuzz testing series, we’ll use Go’s fuzzer to find a real bug in our code, and also to verify the fix.

Sharing state between `net/http` method calls in Go

I've recently been writing some HTTP server code with Go, and found it not-super-searchable to find out how to have a struct that shares state between method calls, so I thought it'd be good to blogument it. For a super contrived example, we want to share the state along our serv...

Names should be as short as possible while still being clear

Short, meaningful names that take context into account are better than long, verbose names that don't.

Lookup Tables (Forth Dimensions XIX.3)

An article about lookup tables in Forth that I co-authored with Hans Bezemer (creator of 4tH) when I was 16.

Summary of reading: April - June 2023

"WebAssembly: The Definitive Guide" by Brian Sletten - a wide and shallow overview of the WASM landscape. Logically, it can be seen as a compantion to "The Art of WebAssembly" which goes deep into the WASM language and spec; in reality, it falls short. The bo...

For Python packages, file structure != API

When designing Python packages, decoupling the file structure from the package's API makes your package easier to import and use.

Announcing GoReleaser v1.19 — the big release

Almost 200 commits adding Nix, Winget, and much more…