Services
Most software problems aren’t hard because of technology. They’re hard because of unclear thinking, rushed decisions, and systems that grew without a plan.
My work is about reducing that mess: building software that’s easier to reason about, easier to change, and less stressful to run.
Software Development
I design and build software that exists to do a job, not to look impressive in screenshots. This includes web applications, internal tools, APIs, and systems that have to work under real-world constraints like bad data, changing requirements, and people pressing the wrong buttons.
I handle the full lifecycle: shaping the problem, writing the code, shipping it, and keeping it alive in production.
The goal is simple: software that is understandable, maintainable, and boring to operate.
Consulting & Advisory
I help teams think clearly about software before they commit to bad decisions. That can mean reviewing architecture, simplifying over-engineered systems, or pushing back on ideas that sound good on paper but don’t survive contact with reality.
This is not motivational consulting or framework worship. It’s practical, opinionated guidance focused on trade-offs, long-term costs, and building things you can still reason about a year from now.
Technical Training & Workshops
I run hands-on training sessions for developers who want to actually understand what they’re working with. These are practical workshops focused on how things fit together, why certain patterns exist, and when not to use them.
No slide decks full of buzzwords, no artificial examples. We work with real problems, real code, and the kind of questions that come up once the tutorial ends and the job starts.