I am a full stack Laravel developer based 20 minutes outside of London, UK, with a passion for crafting custom software and exceptional user experiences since 2009. This blog details my continuous learning, journey, challenges, and solutions.
Integrating with external APIs is a common task for a developer, but it can quickly become a hard to maintain mess! I’ve often found myself repeating the same boilerplate code across different projects—manually setting up headers, handling authentication, and formatting responses for every single endpoint.
One of the biggest hurdles in migrating a legacy site is the users database. You want to move to Laravel, but you don't want to force every single user to reset their password the moment you go live. Here's how you can achieve this when migrating from WordPress!
Kubernetes can be confusing and creating service accounts for deployment is no exception. In this quick guide, I show you how to create an authenticated service account for deploying to Kubernetes!
Sometimes, the standard Heroicon set just isn't enough. Here's how you can quickly and easily add additional vectors to your Laravel FilamentPHP project
Laravel is an excellent framework that supports multilingual functionality out of the box - but it doesn't go as far as setting up the routing for you. Here's how you can achieve it with simple routing and middleware.
PHP Attributes are a powerful feature of PHP >= 8. In this example, I provide a brief introduction to using reflection to enhance your Enums with PHP attributes
Following on from my recent introduction to my auditing package, I'm going to show how quick and easy it is to implement an audit log viewer into FilamentPHP admin panel
The action pattern is a common programming pattern that allows you to abstract code into elements known as actions. It's powerful and provides many advantages.
Meilisearch is an amazing open-source search engine with an intuitive API to rival the likes of Algolia. Upgrading can be scary, so I automated it with a bash script!
Adding ReCaptcha to your forms is a necessary step when handling public form submissions, but adding it for Livewire is a little trickier. I'll explain how I go about this process.
API's can be a pain - throttling is an issue you'll often encounter, particularly with large datasets. One workaround is to enforce delays between execution
I've been writing some tests to check my new subscription form functions as expected. I show how easy it is to write tests to make assertions against a Livewire component.
I share a surprisingly simple zero-downtime deployment technique that utilises Deployer 7 and GitHub Actions to automatically and atomically deploy Laravel applications.
As we make the switch from BitBucket to GitHub, I've been embracing GitHub Actions for automatic test running. I'm sharing our most commonly used test configuration.