Notes on engineering leadership, architecture, and shipping software that works.
The job title says 'lead', but most of the value isn't in the code. After a decade leading teams from 3 to 21 people, here's where a tech lead actually earns their seat.
Building a secure, event-driven integration platform on Azure Functions, Service Bus, and Event Grid — the decisions that actually matter when you move past the tutorial.
The best technical leaders I know aren't the deepest specialist in the room. They're the ones who've shipped across enough stacks to smell a bad decision coming.
Inheriting a fragile, business-critical system is one of the most common — and most stressful — situations in software. Here's the order I work in.
Sub-second GPS tracking for thousands of daily journeys taught me where real-time systems really fail — and it's rarely where the demo suggests.
Zero-downtime migration isn't luck — it's a discipline. The patterns that let me move £10M+ platforms without anyone noticing.
I've promoted people from frontline support into senior and lead roles, and watched teams grow from 3 to 21+. Retention starts at the interview.
A founder doesn't need a full-time CTO yet — they need the decisions a CTO makes. Here's how I use the first month to earn the seat.
I get asked what my stack is. The honest answer is: whichever one the problem needs. After a decade shipping across the board, here's why I stopped picking a lane.
Next.js makes the demo easy and the production system interesting. The lessons that only show up once real traffic and real teams arrive.
Building the app is half the job. Getting it through Apple and Google review, repeatedly, without losing days — that's the other half nobody warns you about.
Node makes it easy to ship a service fast and easy to ship a mess faster. The structure that keeps a growing TypeScript backend from becoming a swamp.
Cloud cost isn't a finance problem you discover at month-end — it's an architecture decision you make every day. How I keep AWS predictable.