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

Around 1 AM I was doing what I thought was the easy part of a side project: applying a database migration. The migration ran clean. Then I tried to promote my own account to owner โ the role that's al...

I deliberately tried to make my AI assistant cross one of its own lines. Not because I wanted what I was asking for โ because I wanted to know how far the "no" actually extended. I run a personal assi...

There's a specific kind of awkwardness reserved for voice interfaces: you stop talking, and nobody notices. That was my life for a few weeks, on the phone with my own assistant. I'd say something, pau...

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...