Blog
Thoughts on software engineering, AI, and building products
Rebranding a Live Product to Melio: 250 String Replacements, Zero Downtime
How I renamed a multi-package monorepo from three inconsistent brand names to one — plus a comprehensive mobile-first audit that caught blank pages, broken layouts, and hardcoded colors.
Day Detail UX Overhaul: PDF Export, Shopping Lists, and Killing Duplicate Components
How I unified three duplicate meal card implementations, built a full PDF export pipeline with clickable table of contents, and added shopping lists to the MealPlan AI day detail view.
Agent Builders Are Changing How I Ship Code — Here's My Actual Workflow
I've been shipping production features as a solo engineer on a complex multi-service codebase. The secret isn't working harder — it's building custom AI agents that know my architecture. Here's the exact setup I use with Claude Code.
PostgreSQL + ClickHouse: The Dual-Database Pattern That Made 70M-Row Dashboards Instant
Running analytics on 70M+ rows in PostgreSQL made our dashboards unusable — queries took seconds, joins killed performance. Here's the dual-database architecture I built at GovChime that cut query times by 100-300%.
Why I Moved AI Out of NestJS and Into a Dedicated Python LangGraph Service
Our NestJS AI chain hit a wall — unreliable outputs, no observability, zero crash recovery. Here's how I replaced it with a 5-node LangGraph StateGraph in Python FastAPI, and why splitting AI into its own service was the right architectural call.
Hello World — Welcome to My Blog
First post on my new blog. Here I'll share thoughts on software engineering, AI development, and lessons learned building products.