Welcome to the web blog
Bit pusher at Spotify. Previously Interactive News at the New York Times, U.S. Digital Service, and Code for America.
Visualizing a generalized maximum-weight-matching graph algorithm - March 10, 2026
I have a small side project I’ve been tinkering with over the past few years: a chess tournament management application. It’s been nice as a sort of open-ended exploration sandbox for all sorts of different things, like learning Phoenix, and getting to implement the rules of chess.
read more...Making a big button to answer FaceTime calls - March 26, 2025
Wire up a giant button that hides a ridiculous Rube Goldberg machine (Arduino! AppleScript! And more!) to answer FaceTime calls.
read more...Self-hosting Obsidian LiveSync on Kubernetes with Tailscale - June 17, 2024
Gluing a bunch of stuff together to get what you get for free with Apple Notes, except you get to keep your notes on your own server, and you don’t have to expose the server to the internet.
read more...Building a chess application with Phoenix LiveView (Part 2) - June 5, 2024
With the rules of chess implemented in part one, we can now go ahead and turn them into a board with Phoenix LiveView.
read more...Building a chess application with Phoenix LiveView (Part 1) - May 31, 2024
Getting started by implementing (most) of the rules of chess.
read more...For older posts, check out the blog.
The Sprawl Trilogy - December 28, 2019
A Confederacy of Dunces - December 10, 2019
The Idiot - November 14, 2019
Sula - November 5, 2019
Play It as It Lays - October 21, 2019