Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.
I haven’t posted in a bit, but I feel bad leaving my last post at the top of my blog. I think my position at the time was reasonable: in mid-2025, “I’m skeptical but curious and experimenting” was a defensible stance, but that was a million years ago. In 2026 (and really, as of late 2025), approximately 100% of the code I write, professionally and personally, is written by an LLM.
I’ve noticed two things recently: People’s skepticism of “what AI-based coding is good for” is inversely proportional to how good they are at it. I am skeptical of AI-based coding. So: epistemologically speaking, I think my best path towards having a well-informed opinion about what AI-based coding is and is not good for is to “Get Gud” as the kids would say. kttt.io is my first pass at that.
One of the coolest things about working at a tiny startup is getting to make foundational technical decisions and seeing how they play out. A couple years in startup time is as long as a life-age of the earth like a decade in normal business time. It lets you get feedback on how those decisions worked out as the company + team scale. I was the first eng hire at Daybreak Health. 3 years later I was…
So, it turns out that css background-images don’t get loaded until the relevant selector is triggered. Many people might say “neat!” I used it to build a bi-directional CSS-only async chat.
There are a bunch of free/cheap options for hosting static sites (just html/css/js) out there: github pages, netlify, firebase hosting - but when I want to build a bulletproof static site “for real”, my go-to toolset is S3 for hosting with Cloudfront caching in front of it. My workflow for that usually looks like:
Some people, when confronted with a problem, think “I know, I’ll use AWS Lambda.” Now they have thousands of concurrent problems. If you want to know how to build a sanely-architected url-shortener using AWS Lambda on top of a datastore like Postgres, this is not the post for you. We’re going to build a Rube-Goldberg url-shortener using just Lambda.
Because my parents didn’t raise me right, I decided to take another crack at making valid ruby that is indistinguishable from javascript. Update: This post became a talk at RubyConf 2018.
Want to upload audio to twitter? You can’t. You’d have to upload it to soundcloud, then post that link to twitter. Some clients will give you a nice in-app soundcloud player and some won’t. You can upload video to twitter, though.