When Would You Ever Want Bubblesort?

There are very few universal rules in software engineering, but there are are a lot of near-universal principles. Things like “prefer composition to inheritance” is near-universal. I love finding the rare situations where these principles don’t hold, like where you do want inheritance over composition. A similar near-universal principle is “don’t use bubblesort“. Some would […]
Developing a food-safe finish for my wooden spoons

You know what they say in the world of products: fast, cheap, good; pick two Which is very similar to my experience when trying to find the most suitable wood finish for my hand carved wooden spoons and coffee cups. hand carved wooden spoon It’s hard to find a finish that: cures fast (in less […]
Useful patterns for building HTML tools

10th December 2025 I’ve started using the term HTML tools to refer to HTML applications that I’ve been building which combine HTML, JavaScript, and CSS in a single file and use them to provide useful functionality. I have built over 150 of these in the past two years, almost all of them written by LLMs. […]
Getting a Gemini API key is an exercise in frustration

Last week, I started working on a new side-project. It’s a standard React app partly made up of run-of-the-mill CRUD views—a perfect fit for LLM-assisted programming. I reasoned that if I could get an LLM to quickly write the boring code for me, I’d have more time to focus on the interesting problems I wanted […]
The future of Terraform CDK

{{ message }} This repository was archived by the owner on Dec 10, 2025. It is now read-only. You can’t perform that action at this time.
Super Mario 64 for the PS1

This repo does not include all assets necessary for compiling the game. An original copy of the game is required to extract the assets. sm64 ├── actors: object behaviors, geo layout, and display lists ├── assets: animation and demo data │ ├── anims: animation data │ └── demos: demo data ├── bin: C files for […]
Terrain Diffusion: A Diffusion-Based Successor to Perlin Noise

Abstract:For decades, procedural worlds have been built on procedural noise functions such as Perlin noise, which are fast and infinite, yet fundamentally limited in realism and large-scale coherence. We introduce Terrain Diffusion, an AI-era successor to Perlin noise that bridges the fidelity of diffusion models with the properties that made procedural noise indispensable: seamless infinite […]
Internal RFCs saved us months of wasted work

And how to fix it with RFCs Have you ever returned from vacation to find the project you entrusted to your team completely off track? I have — and that experience taught me one of the most important lessons of my engineering career. In this article I’ll share why teams often believe they’re aligned when […]
Is it a bubble?

Ours is a remarkable moment in world history. A transformative technology is ascending, and its supporters claim it will forever change the world. To build it requires companies to invest a sum of money unlike anything in living memory. News reports are filled with widespread fears that America’s biggest corporations are propping up a bubble […]
Using Git add -p for fun (and profit)

Here’s the problem: You’re coding, and in flow state, and you make a lot of changes to a single file. Now you want to commit it, but because there isn’t a single atomic change you have to suck it up and write something terrible like git commit -m “Update stuff”, or commit early and often […]