// writing

Technical Blog

20 years of real-world engineering — from writing C for Microsoft to running AI-assisted workflows at Freddie's Flowers. No fluff, just experience.

40 posts · 17 years of writing

2026

2 posts

2025

1 post

2024

7 posts
ArchitecturereplatformingLaravelNext.js

Platform Replatforming at Freddie's Flowers: The Decision Framework

Replatforming a production subscription e-commerce business without disrupting operations is one of the most complex engineering programmes a CTO can run. Here's the decision-making framework we used at Freddie's Flowers.

CTO CraftPenniescharityaward

Winning the Pennies Unsung Hero Award: What Micro-Donations Mean in Tech

In October 2024, I received the Unsung Hero Award from Pennies at their 5th Annual Awards ceremony. This is what micro-donations look like from the engineering side — and why it matters.

EngineeringTypeORMPrismaORM

TypeORM vs Prisma: Choosing Your ORM for a TypeScript Migration

During a platform replatforming, we ended up using two different ORMs in the same project — TypeORM for the core backend API, Prisma for the admin panel. Here's why, and what each is genuinely better at.

Engineeringmonorepomulti-repoarchitecture

Multi-Repo vs Monorepo: A Practical Decision Framework for Small Teams

The monorepo vs multi-repo debate generates more heat than light. Here's the framework I used — and why multi-repo won for a subscription platform replatforming with four applications and a lean team.

Engineeringfeature-flagsLaunchDarklyStatsig

The Two-Tier Feature Flag Strategy: When LaunchDarkly Is Overkill

Feature flags are non-negotiable for safe deployments. But commercial feature flag platforms have convinced teams that a £50K/year SaaS is the only way. Here's the two-tier approach that covers 95% of use cases at a fraction of the cost.

ArchitectureSQSAWSasync

Queue Everything: How SQS-Based Architecture Improved Our API Response Times

The most impactful architectural decision in our replatforming wasn't the language choice or infrastructure — it was systematically moving everything non-critical out of the synchronous request path and into SQS queues.

CTO Craftproductengineeringleadership

The Working Relationship Between Product and Engineering: A CTO's Perspective

The tension between product and engineering is one of the most commonly cited challenges in tech companies. After 22 years — and a lot of hard-won lessons — here's what I've come to believe about getting this relationship right.

2023

8 posts
InfrastructureAWS Lambdaserverlesscontainers

Serverless vs Containers vs EC2: Choosing Infrastructure for a Lean Engineering Team

The infrastructure decision for a replatforming project forces you to answer a question with no universal answer: what's right for your specific team, workload, and economics? Here's the framework I used — and why serverless won.

CTO CraftCTOinfrastructure-reviewstakeholder-management

How to Run a CTO Infrastructure Review That Stakeholders Actually Trust

A platform infrastructure review that produces the right technical answer but fails to bring stakeholders with it is a failed review. Here's the process I use — structured to produce decisions that the board, product leadership, and engineering teams can all trust.

EngineeringPHPTypeScriptmigration

PHP to TypeScript: Why We Migrated a Production Subscription Platform

Migrating a production subscription platform from PHP to TypeScript is not a decision taken lightly. Here's the honest case for why we did it, the alternatives we rejected, and what the migration actually delivered.

CTO CraftCTOplatformbuild-vs-buy

Build vs Buy: A CTO's Framework for Platform Decisions

Every CTO faces the build vs buy decision repeatedly. After 22 years of making these calls, I've developed a framework that goes beyond the surface-level cost analysis most teams do.

CTO CraftShopifytransaction-feesplatform-economics

Transaction Fees: The Hidden Cost That Makes Platform Economics Counterintuitive

When teams evaluate SaaS e-commerce platforms vs custom builds, they focus on the obvious costs: subscription fees, development time, staff. The number that actually swings the decision is almost always the one buried in the small print: transaction fees.

Scale & PerformanceCore Web VitalsperformanceLCP

Core Web Vitals as a Replatforming Success Metric: Real Before and After Numbers

When running a platform infrastructure review, you need objective metrics to evaluate options and measure success. Core Web Vitals gave us exactly that — here are the actual before/after numbers from a full replatforming, and why they mattered more than we expected.

Architecturebuild-vs-buyShopifysubscription

Build vs Buy for Subscription E-Commerce: A Detailed Cost Analysis

After running a rigorous build vs buy analysis for a subscription e-commerce platform, the numbers told a clear story. Here's the full framework, the cost breakdown, and why 'just use Shopify' is the wrong answer for complex subscription models.

Architecturemonolithmicroservicesreplatforming

The Monolith Tipping Point: 6 Signs Your Platform Needs More Than a Patch

Every monolith reaches a tipping point — the moment when the next patch costs more than it saves. I've run several platform reviews at this point. Here are the six signals that tell you incremental improvement is no longer the right answer.

2021

1 post

2020

4 posts

2019

2 posts

2018

2 posts

2017

1 post

2014

1 post

2013

1 post

2012

2 posts

2011

2 posts

2010

1 post

2009

1 post

2007

2 posts

2006

2 posts