A collection of things I've written about developer productivity, AI, accessibility, and building a sustainable career in tech.
Nobody knows what the future of software engineering looks like, and that's incredibly uncomfortable. But instead of waiting for someone to hand us the answer, I think the move is to embrace the uncertainty, because these moments of deep uncertainty have historically been moments of extraordinary opportunity.
The best practices for building with AI haven't been written yet, and that's actually exciting. This post breaks down a layered approach to AI-assisted development, from chat to coding agents to agent fleets, with practical tips for getting started no matter where you are.
I'm scared, I'm excited, and I'm exhausted by the pace of change. All of those things can be true at the same time. This blog post is a (hopefully) grounded take on living through AI's inflection point, why the backlash is valid, and why human connection matters more now than ever.
I went from brain dump to a working productivity tool in a single day. Here's how listening to the How I AI podcast pushed me to finally experiment with personalized software, MCP, agents, and skills—and why I think it's time to get on board (with some caveats).
I spent 2025 going from skeptical to genuinely excited about AI tools. My non-tech friends and family spent 2025 learning to hate them. The AI industry has fumbled this introduction so badly that we've turned a useful set of tools into a cultural flashpoint - but the damage isn't irreversible.
2025 was my year of doing ALL the things - speaking at 5+ conferences, starting a podcast, shipping side projects, and somehow not completely burning out. I learned that momentum creates more momentum, perfectionism is overrated, and seeing people in real life again after years of isolation is actually really, really good.
I wanted to add book clubs to my GoodReads-like app (Collective), but ATProto doesn't have a standard way to handle shared group resources yet. So I'm building opensocial.community—a separate service that manages groups independently from any single app. This means the same book club could potentially work across multiple apps (imagine your book club having both a reading list in Collective AND a discussion forum in another app), and groups can migrate between providers if needed. It's probably over-engineered for my use case, but might help other ATProto developers building community features.
For most of my career, I've been confusing building products with building businesses—and that confusion kept me from pursuing a lot of ideas. Two weeks off helped me realize that not everything needs to be a startup, and some of the best things we build are the ones we build just because we want them to exist.
I've cracked the code on breaking the eternal cycle - features win, tech debt piles up, codebase becomes 'legacy', and an eventual rewrite. Using coding agents at GitHub, I now merge multiple tech debt PRs weekly while still delivering features. Tickets open for months get closed. 'Too hard to change' code actually improves. This is the story of the workflow.