Writing
Everything I have written down
Articles, reference guides and multi-part series on API design, architecture, PHP and the work around them. All of it free, none of it behind an email form.
Technical Debt: When to Fix, When to Ship
Technical debt is inevitable. What matters is managing it deliberately. Here is a practical framework for prioritisation and stakeholder communication.
The Engineering Manager as Coach, Not Boss
How to develop your coaching skills as an engineering manager, with practical techniques for performance conversations, growth planning, and career development.
Strategy vs. Execution: How Leaders Set Technical Vision
Why technical vision matters, how to set it, and how to maintain it over time in the face of changing circumstances and competing priorities.
Building Psychological Safety in Engineering
How to create a culture where engineers feel safe to take risks, speak up, and make mistakes without fear of punishment.
Scaling Engineering Teams Without Losing Velocity
How to design org structure, hiring, and coordination to avoid the common traps that kill velocity as engineering teams scale.
Hiring Engineers: A Manager's Playbook
A practical guide to hiring engineers - covering role definition, structured interviews, technical assessment, values alignment, and onboarding.
From IC to Manager: First Steps for New Engineering Leads
A practical guide for engineers moving into management - covering mindset shifts, letting go of coding, time management, feedback, and building leadership skills.
How to Lead a Remote Engineering Team
A practical guide to leading remote engineering teams - covering async rhythms, documentation, trust-building, and cross-timezone collaboration.
Building Real Applications with TempestPHP
How to structure TempestPHP applications with domain-first folders, repositories, command handlers, and thin controllers that stay maintainable.
Implementing the Saga Pattern in a Laravel Monolith
Learn how to implement the Saga pattern in Laravel to coordinate external APIs, recover from failures, and keep data consistent.
Building production ready APIs with kit
A practical guide to shaping production-ready APIs using kit, from contracts and validation to observability and rollout.
Why your Laravel controllers should be almost empty
Controllers are a transport layer, not a home for business logic. How I keep Laravel controllers down to a handful of lines using Form Requests, payloads, and Action classes.