Menu
The notebook

Blog.
notes from real projects

Practical writing on Laravel, AI engineering, token costs, SaaS architecture, and the technology decisions that make software cheaper to run and easier to grow.

All AI & LLMs Cloud & DevOps Industry Insights Laravel & PHP Modernisation Performance & Scale SaaS & Product Security & Compliance
Modernisation 10 posts
25 Jan 2026 Modernisation Replacing Excel With Custom Software: When It's Actually Worth It The threshold signals — multi-user editing conflicts, version chaos, formulas nobody understands, GDPR exposure in shared sheets — and an ROI calculation template comparing hours lost to a r... 13 Jan 2026 Modernisation Leaving Shopify for Custom: A Replatforming Decision Framework A revenue-threshold framework: below ~100k EUR/yr Shopify's speed wins, above ~500k the fee stack and platform limits flip 3-year TCO toward custom/headless — with the migration cost and tim... 26 Dec 2025 Modernisation When Your No-Code MVP Hits the Wall: Migrating to Custom Code The 2026 wave of Bubble/vibe-coded MVPs hitting performance, integration, and GDPR walls — the specific symptoms that mean it's time, what carries over (validated flows, data) and what doesn... 22 Dec 2025 Modernisation Migrating off CodeIgniter and CakePHP, honestly I have shipped production systems in CodeIgniter, CakePHP and Laravel. Migrating between them is mostly unglamorous mapping work — here is what it actually involves. 15 Dec 2025 Modernisation The rewrite that should not happen Clients ask me for rewrites far more often than they need them. Most of the time the honest answer is no — here is the reasoning I walk through before saying it. 14 Dec 2025 Modernisation Rebuild vs Refactor: How I Help Clients Decide on Legacy Systems A concrete decision framework (change-rate of modules, domain-model fitness, maintenance share of IT budget) with the 2026 hook that legacy upkeep now eats 70-80% of IT budgets while blockin... 08 Dec 2025 Modernisation Writing tests for code you did not write, in the right order Unit tests are the wrong place to start on inherited PHP. Characterisation tests — pinning down what the code does today — are what make an upgrade survivable. 04 Dec 2025 Modernisation Inheriting a codebase with no tests and no author The original developer is gone, there are no tests, and production cannot stop. Here is the order I work in when a legacy Laravel codebase lands on my desk. 27 Nov 2025 Modernisation Upgrading Laravel without a big-bang cutover Every legacy engagement includes someone proposing the rewrite. Here is the incremental upgrade ladder I use instead, and why it keeps winning on risk and cost. 20 Nov 2025 Modernisation Laravel 5 to 8 on a system that could not stop running Three major Laravel versions, upgraded in place on a system processing real bookings and invoices every day. What I planned, what I measured, and what broke anyway.