About me

I've been building web software for over two decades — long enough to watch languages mature, frameworks rise and fall, and the discipline of software architecture grow up alongside them. PHP, Symfony and other frameworks have been a throughline for most of that career; more recently that's meant picking up Python, so I can work across more stacks used by my clients.

Early on, I spent years on contract work: engineering and infrastructure for early social media platforms, full site implementation for a popular independent film community, interactive projects for a major camera company—and dozens more.

Most recently, as lead engineer and CTO at SocialHP and CityBlast for over a decade, I owned architecture end-to-end — which taught me the same lesson from both directions. When it isn't sufficient, developers stuff code into whatever corner is available, and the antipatterns pile up quietly until they're tedious and expensive to unwind. When it exists, it removes friction from everyday work and keeps you from getting blindsided by scaling problems.

I made those calls personally—service boundaries, what to modernize and when—including taking the infrastructure from a single VM to a Kubernetes deployment on GCP as it grew. I built domain-driven design architecture to isolate complex business logic. I used clean architecture and CQRS to isolate application layers into modular pieces and contain complex SQL logic to a single persistence layer—which I continually optimized as the company's data schema grew. I built event-driven data pipelines, CDC/ETL flows and Pub/Sub-based messaging to move data reliably at scale. And I trained other engineers in it all, through documentation, diagrams, and live walkthroughs.

Now I'm back in the contract world—bringing that decade of architecture calls directly to teams who need them made.