You can ship type stubs for a third-party library with your own Python library, so everyone who installs yours gets them too. When you own both the library and its consumers, this sidesteps the need to publish and maintain a separate stub-only package. You can stub only the parts you actually use. You don’t need a plugin to pull this off, but you do need to configure your build backend and…
This is a story about handing off a passion project that started to feel like a burden. This is a familiar experience for many creatives, especially in open source communities. The emotions it stirs up are complicated and worth unpacking. This is also a story about scope creep. When AI lowers the barrier to implementation, knowing what’s worth doing and when to call something done is more…
This is a story about overengineering. Like most of my posts, if you found this, you are probably looking for a clever solution to some very specific problem. I’m going to give you that solution—and then, I’m going to tell you why you may want to avoid it. Quick context for everyone else: VCR.py is a Python library which records HTTP requests (and their responses) into…
The Music Box is a historic movie theater in Chicago, established in 1929. It would not be much of a stretch to say that they are a cultural keystone of Chicago’s north side. If you are a cinephile who lives in Chicago—or are good friends with one, spoiler alert—chances are you’ve been here many times. If not, you owe it to yourself to go. The Music Box underwent a major renovation in…
In November 2025, I’ll be celebrating my 10-year anniversary as a full-time software developer. Through these 10 years, my work laptop has always been a MacBook Pro. That’s four employers, five MacBook Pros, and counting! Macs make sense for corpo devs, both from the corpo and the dev side: macOS is Unix-based, but has better support (and MDM) than Linux. I like Macs, and I think they…
A friend’s kid recently celebrated her first birthday, so I made her a wooden toy car as a gift. I believe this is a kind of “push toy”. This was the first toy I made. I had a lot of fun with it, and I figured I’d share some process photos here. Before jumping into this, I want to give a shout-out to Pumping Station: One —Chicago’s oldest and largest hackerspace. I…
A while ago, I installed Gitea on my Synology DS920+ to mirror repositories which I thought had a decent chance of being taken down . This weekend, I tried pushing my own code to it, and I discovered that the SSH configuration it came with did not work out-of-the-box. I hope this post saves someone some time. I installed Gitea using the Gitea package from SynoCommunity . You can install it via…
Last month, I replaced 15 functioning tactile switches on my new Anbernic RG35XXSP emulation handheld with ones that had lower actuation force. If you’d like to do the same, here’s a reference for what switches to use: Shoulder buttons: Omron B3F-3120 ABXY/D-pad: Alps SKRRAAE010 Start/Select/Menu: Alps SKQGAFE010 These switches require about 40% less force than the originals. They are…
My New Year’s resolution for 2024 was to finally run a TTRPG. At GenCon that year, our group fell in love with Yazeba’s Bed & Breakfast . I decided this was the one. Yazeba’s is not a fully GM-less TTRPG, but it gives the “Concierge” many training wheels and few responsibilities. One of these is to serve as the group’s bookkeeper: I’d have to make a Ledger…