I write about things I've learned the hard way -- architecture decisions, AI integration patterns, team dynamics, and the craft of building software that lasts. These are field notes from forty years of practice.

* most recent first

"AI Doesn't Replace Developers"

The conversation around AI and software development keeps missing the point. AI doesn't make developers obsolete -- it redefines what the job looks like. The developers who thrive will be the ones who learn to think with AI, not the ones who fear it or blindly trust it. This piece breaks down what that actually means in practice: pairing, prompting, reviewing, and knowing when to override the machine.

"Spring Boot from .NET"

After years in the .NET ecosystem, I took on a major Spring Boot project. This is a practical field guide for .NET developers making the same transition -- what maps cleanly, what doesn't, and the mental model shifts that matter more than syntax differences. Covers dependency injection patterns, middleware vs. filters, configuration paradigms, and the surprising places where the two ecosystems think identically.


Topics I Think About

These are the threads I keep pulling on. Some will become articles, some are just questions I'm chewing on.

How do you teach AI judgment vs. just prompting?

Legacy modernization without rewriting everything

The architecture of teams that actually ship

When to build, when to buy, when to walk away

more writing coming soon...