About
I’m a staff software engineer. I started building for the web in middle school in the mid-1990s, before CSS was part of my toolkit. Since then, I’ve worked across frontend products, engineering tools, test automation, and industrial control systems.
How I work
I look for the parts of engineering that create avoidable friction: unclear requirements, repeated manual work, brittle tests, or tools that make routine tasks harder than they need to be. I try to make those parts clearer and more dependable, so people can spend more time on the decisions that need their judgment.
That approach now shapes my work with AI-assisted development. I build reusable guidance and tools that give coding agents useful context and focused tasks, then add testing and review steps so their output can be checked. The goal is not to hand engineering over to a model; it is to make the work easier to direct and verify.
A few chapters
At Smartrise Engineering, I built automation for work that had been done by hand, including generating engineering drawings, software, and parts lists. I also designed hardware test stations and built interfaces for monitoring control systems with live job-site data.
Later, I worked on large enterprise products at JPMorgan Chase and Routable. My work included modernizing frontend systems, building design-system components, and improving automated testing. I also taught engineering teams about testing, TypeScript, and system design.
Today, I’m a staff software engineer at G2i, working on software-engineering environments for AI research. I also build shared AI-development guidance and validation workflows that help engineers use agents more deliberately.
Across those roles, the tools and scale have changed. I keep coming back to the same question: how can we make the expected outcome clear, and make it easier to tell whether we got there?