Welcome to my personal corner of the internet. Here I share technical deep-dives and pieces of my life story.
Fresh from the blog

I shipped a thing recently. An open-source project โ a self-hosted CMS I built for my own blog โ and once the code was clean, the tests were green, and the README had actual screenshots in it, I hit t...

We were driving to Devils Lake when the dark magic conversation started. This wasn't planned. It was a sunny Sunday, the kind of BC summer day that makes you forget eight months of rain ever happened,...

I built the wrong thing first. That's not self-deprecation for effect โ I genuinely spent an afternoon building a dumb call recorder when what I actually wanted was a receptionist. The difference matt...

A question I chewed on this weekend: Google launches products and kills them again, over and over, and somehow it never sticks to them. Dropbox tries the same thing and the business press writes it up...

Confession time: this weekend I got stuck on a trivia question about my own memory. Who is Bailey in Finding Dory? I've seen the movie. I could picture Dory, obviously. Marlin and Nemo, sure. Hank ...

Five of my public repos got a full-service detail this weekend: rewritten READMEs, proper license files, a secrets audit, and a housekeeping pass. I farmed the work out to five coding agents running i...

Sunday night, after dinner, I stumbled across a phrase I'd heard a hundred times without ever knowing where it came from: Hanlon's razor. One lookup turned into three, because the answer kept name-dro...

At 11 PM on a Sunday night, my blog's brand-new SEO endpoint answered my first real API call with a 403 Forbidden. I had spent the evening shipping the feature โ an endpoint that lets an API client re...

When my AI agent went silent mid-task last week, my first thought was the Great Firewall. Chinese censorship. The obvious answer, given the model I was using. I have been running Kimi K3, the latest f...