Skip to main content



Too Many Games 2024 Retrospective
·1516 words·8 mins
In which I drive to Philadelphia and try to play a bunch of games.
How to find that one volume you're pretty sure you didn't lose
·440 words·3 mins
Docker volumes can be opaque, so I wrote a small bash script to help you troubleshoot.
Stamping Builds with Bazel
·667 words·4 mins
Versioning is a critical part of delivering software to users. With bazel, you can derive per-build values and inject them anywhere in your build process.
Non-mechanical Tabletop Gaming Fundamentals
·639 words·3 mins
A non-exhaustive list of tips and rules that elevate my tabletop gaming.
Pragmatic Projections: A Primer
·932 words·5 mins
Projections are abstract, but abstractions are a powerful tool for helping us model the world.


The Joy of Versioning
·545 words·3 mins
Investing in tooling makes adhering to good practices almost easy enough to be joyful.
Beautiful Builds with Bazel
·2681 words·13 mins
bzlmod makes bazel extremely appealing and isn’t hard to grasp for anyone already familiar with go modules. My frustration with make for complex builds led me to bazel.
Validating YAML frontmatter with JSONSchema
·735 words·4 mins
As a collection of Markdown documents grows organically, maintaining consistency is important. JSONSchema offers a way to automatically ensure frontmatter stays up to spec.
Putting Lipgloss on a Snake: Prettier Help Output for Cobra
·900 words·5 mins
Using lipgloss to abstract away the specifics of nice terminal output.
Using Taxonomy Terms in Hugo: Adding Content
·516 words·3 mins
What am I Doing?