Why my macOS Messages badge lied to me (and the one-line fix)

I will be the first to admit that I'm sometimes bad at responding to texts — but I'm not 113-unread-messages bad, as the notification badge on my Mac makes me out to be. It sits there mocking me, over a hundred messages that despite my best efforts I can never clear. No matter how many times I right-click to try and find them they remain tucked away somewhere, inactionable and yet unread, invisible yet demanding to be seen. "Look at me!" they shout. "You're missing out on the opportunity of a lifetime!"

I've ignored this in the past and tabled it for later: it must stand the test of time. But that time is now. Here's how I used lldb to reverse engineer Messages, found a bug in Apple's code, and fixed my badge.

Read More

Turning a Chinese IoT camera into an owl livestream

My brother Spencer works as an artist in Asheville. He's also into nature conservation, leading a nature journaling class and regularly weaving ecology and local wildlife into his work. When UNC Asheville announced plans to turn a local urban forest into a soccer stadium, he pushed back, in part by raising awareness through birding sessions to show off a Great Horned Owl family and their three owlets living in the forest. Spencer set up a 24/7 camera filming their nest but wanted to livestream that footage and couldn't figure out how — enter me, stage right! While it wasn't easy here's how I eventually made it work (though unfortunately by the time you're reading this they've flown away and the livestream has ended).

Read More

DataSF and scraping planning applications for my inner YIMBY

I am doing a series of blog posts diving into 400 Divisadero Street, a defunct car wash and gas station in San Francisco that they're trying to turn into apartments — and have been for over a decade without breaking ground. The reasons for the lack of (visual) progress is multifaceted, but to properly dive into it and explain the timeline I wanted to dig into the raw planning documents. They're widely available as part of SF’s PIM (Property Information Map), but I wanted to download them all locally for OCR, manually review them all, and process them with Claude.

Read More

Claude Code's thinking animation

I am unfortunately spending more and more of my time interacting with LLMs through terminal interfaces. While the sentient silicon churns through thousands of tokens I find myself scrolling short-form videos contemplating next steps, freeing my time up for deeper mental pursuits, and much more importantly (and realistically) getting entranced by the blinking cursors. But how do they work?

Read More


Snippets

April 28, 2026
January 3, 2026
December 22, 2025
— view all snippets —