Skip to content
Writing

Notes from the work

What we have learned building, modernising and leading software. Written for the people who have to live with the decisions.

Lead

Why it pays to keep a developer who already knows your code

A retained developer is not a support contract, it is a way of keeping the knowledge that would otherwise leave with the invoice. This post sets out what that knowledge is actually worth, what a retainer should include, and the honest downsides of relying on one person.

Legacy systems, Team & hiring, Security
Modernise

Move the charity's CRM over a weekend, and be able to move it back

A CRM migration is not like other software changes: the data has to exist in exactly one place, which forces a short, sharp cutover rather than a gradual one. This explains, for trustees with no technical background, why a weekend window and a rehearsed rollback plan are the two things worth insisting on.

Legacy systems, Architecture, Testing
Lead

When your only senior engineer hands in their notice

Replacing a technical lead in the UK market takes months, and the decisions do not pause while you search. This post looks at what actually degrades first, the interim options and their real costs, and how to set up part-time senior input so it works.

Laravel, Legacy systems, Architecture, Team & hiring
Build

Decide how tenancy works before you write the first migration

Multi-tenancy is one of the few decisions in a new SaaS product that is genuinely expensive to change later. This post covers the three common models, how to pick one, and how to implement shared-schema tenancy in Laravel so it does not leak.

Laravel, Architecture, Security, SaaS
Lead

The decisions your contractors keep leaving for you

Contract developers ship features well, but they rarely own the decisions that shape a system over years. This post looks at what senior engineering judgement actually decides, and the honest tradeoffs of buying it part-time.

Legacy systems, Architecture, Team & hiring
Modernise

PHP 8.2 loses security support on 31 December 2026

PHP 8.2 stops receiving security fixes at the end of this year, and Laravel 13 already requires PHP 8.3. Here is a sequencing plan for getting a large legacy application off it without stopping feature work.

Laravel, Legacy systems, Security

Tell us what you are dealing with

A short conversation, let's get to know each other. If we are not the right people we will say so.

Start a conversation