Articles
Notes on building things, solving problems and learning as I go. Occasionally, a detour into books, running, cycling or cooking.
-
Adding reCAPTCHA v3 to Laravel, React and Inertia forms
A practical reCAPTCHA v3 tutorial based on my EDR forms work: fresh tokens in React, server verification in Laravel, and coverage for login, registration and password resets.
-
A morning spent fixing my NGINX cache
A stale page, a cold coffee and the difference between getting a cache working and knowing how to live with it.
-
How I use Laravel, React and Herd
Notes from building a Pokémon app and task managers: forms, migrations, Inertia and keeping the data moving clearly.
-
Thinking about AI and the work I want to do
Some thoughts from July 2025 on useful tools, uncertainty at work and the responsibilities that remain ours.
-
A working day, with running in between
An ordinary December workday: a run through Suffolk, a list of jobs, team conversations and a little time to experiment.
-
Reopening the projects I built fifteen years ago
Old backups, sprawling stylesheets and unfinished ideas: a useful reminder of how learning to build websites actually looked.
-
What building my own projects has taught me
What my JavaScript tools, Laravel file manager, React dashboard and Kanban experiments have taught me about data, state, design and learning through building.
-
Solito by Javier Zamora: a review
A review of Javier Zamora’s childhood journey to the USA, and how reading it in 2024 changed my understanding of a family I stayed with in Los Angeles.
-
CSS nesting without hiding the structure
How I approach native CSS nesting: shallow selectors, explicit parent references, specificity and a fallback for browsers that need compiled CSS.
-
Native image lazy-loading in WordPress
A practical approach to native image lazy-loading in WordPress, with attention to the first image, responsive sizes and layout stability.
-
From the daily commute to cycling around the Isle of Wight
Years of commuting, longer Suffolk rides and a hot morning around the Isle of Wight. A look back at the bikes, the hills and the lessons that have stayed with me.
-
Finding my feet in agency life
Nearing four years at a Suffolk agency: joining remotely, becoming the person behind the websites, helping a junior developer and learning how much can be done with less.
-
GitHub Copilot: where it helps and where review matters
Where GitHub Copilot can support development, how to keep suggestions reviewable, and why useful tests need expectations independent of generated code.
-
WordPress Application Passwords for a small REST integration
How I would connect a small server-side tool to WordPress using Application Passwords, restricted user permissions and clear REST API error handling.
-
Building custom WordPress block patterns for repeatable sections
A practical WordPress block-pattern example: register a category, provide native block markup and keep inserted sections editable for clients.
-
Learning MERN by building a personal dashboard
Learning MongoDB, Express, React and Node by building a personal dashboard for account cards, bills and bookmarks, and learning alongside other developers.
-
Proportional CSS layouts with aspect-ratio
Using CSS aspect-ratio for consistent image frames, with intrinsic dimensions, object-fit and practical checks for responsive content.
-
Building a custom file manager in Laravel
How I built a Laravel file manager for a client, with team workspaces, nested folders and Livewire uploads, and the security checks behind shared files.
-
Testing WordPress projects against PHP 8.1
A focused PHP 8.1 WordPress check: deprecation notices, internal return types, plugins, scheduled work and a careful staging-to-production comparison.
-
Building intly.js: a small JavaScript framework for fast websites
Why I built intly.js: a small ES module framework for page loading, WordPress APIs, cached state, custom interactions and lighter eco websites.
-
Vite and a frontend build process that stays maintainable
Keeping a Vite workflow maintainable through clear commands, repeatable installs, production asset checks and deliberate dependency upgrades.
-
Checking a WordPress website before moving to PHP 8
My approach to a WordPress PHP 8 compatibility check: a private staging copy, useful error logs, realistic journeys and a tested way back.
-
WebP images and the WordPress upload workflow
How to introduce WebP into a WordPress upload workflow while keeping source files, attachment metadata and responsive image sizes manageable.
-
Sass mixins and the question of maintainable CSS
How I decide when a Sass mixin is useful, with a small breakpoint example and checks for readable selectors and unnecessary generated CSS.