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.
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.
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
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.
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.
Most rebuilds don't happen because the first version was written badly. They happen because a handful of early decisions got baked into every table and every endpoint, and this post covers which ones those are.
When a system starts blocking the business, the instinct is to replace all of it. A better first step is to find out which parts are actually in the way, and treat each one differently.
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.