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

Adding snippets to the blog

As you may have noticed by my propensity for footnotes sidenotes I love asides. Likewise there are a lot of small things I come across that either aren't meaty enough for a full post, or trend so narrowly technical that I feel hesitant about broadcasting (a reticence my college self didn't share based on my post setting up my router). I still want them to be searchable as a reference for myself and potentially others, but I want them to take up less presence on the blog (and not be sent out in email blasts). The solution? Snippets!

Read More


Snippets

January 3, 2026
December 22, 2025
December 9, 2025
— view all snippets —