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

A video did the rounds on my feed this week โ one of those animated explainer channels โ with a hook designed to make you feel like a sucker: your $20 AI subscription is a delusion, and some power use...

Here's a dumb thing I ran into this week. I have a second phone number that answers calls for me โ an automated receptionist line I built recently. What I wanted was simple: if I don't pick up, or I'm...

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