About
I build and run engineering teams, mostly in payments, cloud, and more recently AI. The common thread is that I’ve mostly been the person who has to make the call rather than the one who gets to recommend one, and it turns out that changes what you notice.
15 months running payments connectivity at a high-volume consumer payments platform, card deposits and bank transfers and wires and the machinery underneath all of it. The failure rate came down a long way and almost none of that came from writing better payment code. A consumer AI product with a launch date fixed before I started and 12 weeks to reach it. A technology group budget in the millions, where the lesson was that most of a budget is already spent before anyone opens the spreadsheet.
I run CloudExpat and AZdev, and I wrote Coder to CTO, which exists because the jump from writing code to being accountable for it is mostly undocumented and everybody makes the same mistakes alone.
I’ve moved countries more than most people do. Germany, Ireland, Switzerland, and Canada. It comes up here more often than I’d expected, because most of what I know about distributed teams I learned by being the distributed one.
This domain has been running since 2004, though it only became a blog around 2009. The archive starts there, and it’s uneven in ways I’ve decided not to tidy. Some of it is random posts. Some of it is me being wrong about Linux with real confidence. I’d rather keep the record than curate it into something that looks more deliberate than it was.
Something broke, or something didn’t behave the way the documentation promised, and writing it down was how I worked out what I actually thought about it. That’s still the reason most of these posts exist.