
I Use AI to Build Software. I Don't Vibe Code.
Why AI use is not an engineering red flag, how experience changes what the tool can safely accelerate, and what hiring teams should evaluate instead.
Blog
Notes on production systems, architecture tradeoffs, AI-assisted development, and the judgment that only comes from shipping.

Why AI use is not an engineering red flag, how experience changes what the tool can safely accelerate, and what hiring teams should evaluate instead.

A candid look at what I shipped, rebuilt, unpublished, and learned in 2026—and why I still want to carry ideas all the way into production.

Why error handling is a routing decision, and how specific messages reduce user confusion, support work, and the time engineers spend reconstructing failures.

Why ASP.NET Web Forms frustrated me, what Ruby on Rails taught me about traditional web development, and how modern frontend frameworks changed my view of its component model.

Twelve thousand records, one wrong environment, and ninety seconds of certainty that my career was over. Why I now build systems that assume people will make mistakes.

What senior engineering judgment looks like before implementation, and why questions about failure, ownership, and reversibility usually shorten the work rather than delay it.

Why team familiarity, visible failure modes, and operational simplicity matter more than novelty when choosing a stack for software the business must continue to own.

Why I returned to server-rendered Rails and Laravel for many business applications after years of working across JavaScript frameworks, mobile apps, and separate frontend architectures.

What unofficial customer workflows reveal about product design, and how to decide whether to pave, tolerate, or block the path users created for themselves.

What moving a production app from native iOS to React Native and Expo taught me about abstraction, hardware integrations, and choosing where to own mobile complexity.

What building field software taught me about paper workflows, tacit knowledge, and why digitization is a product-design problem before it is a data-entry problem.

What a long-lived Ruby on Rails pricing portal taught me about small software, changing requirements, and the value of choosing a stack you can keep understanding.