Blog & Insights
Practical write-ups on Laravel, AI-assisted development, mobile apps and the engineering decisions behind the projects I ship.
Shipping a Laravel App to iOS and Android with Capacitor
You do not always need React Native. If you already have a working Laravel app, Capacitor can get you into both app stores in days — with a few sharp edges worth knowing about first.
What Actually Changed in My Workflow After Two Years of AI Tools
Not the productivity multiplier the marketing promised, and not the nothing the sceptics predicted. Here is the honest accounting.
Accessibility Basics That Take an Afternoon and Matter for Years
You do not need a full WCAG audit to make a site dramatically more usable. Six changes cover most of the real-world impact.
Building a Settings System Clients Can Actually Use
Hard-coded text is the number one reason clients email you for trivial changes. A simple key-value settings table fixes it — if you get the caching an...
The Client Handover That Stops the 2am Phone Calls
Most post-launch support requests are not bugs. They are things the client was never shown. An hour of handover work removes most of them permanently.
Using AI to Review Code Instead of Writing It
The highest-value use of AI I have found is not generating code — it is a second read of code I already wrote, with prompts aimed at specific failure...
Image Optimisation: The Single Biggest Speed Win on Most Sites
On the average site I audit, images are more than half the page weight — and most of that is avoidable with three changes that take an afternoon.
Deploying Laravel to Shared Hosting Without Losing Your Mind
No SSH, no symlinks, a document root you cannot change. Plenty of clients are on cPanel, and Laravel can absolutely run there — with a specific set of...
Making a Web App Feel Native on a Phone
The gap between a web app and a native app is mostly a handful of details — touch targets, momentum, safe areas and instant feedback. None of them are...
Writing Laravel Tests That Are Worth Maintaining
A test suite that breaks every time you rename something is a liability. Here is what I test, what I deliberately do not, and why the ratio matters.
Got a project worth building?
I write about this work because I do it every day. Tell me what you are building.