YouTube API with Laravel & Guzzle Http

I felt that my minimal, PHP YouTube client was worth sharing. If you’re looking to do something similar, interacting with the YouTube API via PHP, then look no further.

Add a Honeypot to Livewire Volt Forms

What are Livewire and Volt? Livewire allows you to build ‘Powerful, dynamic, front-end UIs without leaving PHP’. For me, as a PHP fanboy, it’s quickly becoming my bread and butter for creating reactive components all within the comfort of my own backyard. Livewire Volt is a package you can use on top of Livewire, described […]

How to block WordPress comment spam with Cloudflare

A little while ago I wrote a post titled ‘How to block Contact Form 7 spam with Cloudflare‘. This explained how I use Cloudflare’s WAF rules to prevent any spam form submissions coming through with the popular Contact Form 7 plugin for WordPress. Even if you don’t use Contact Form 7, I’d highly encourage you […]

Dnsmasq Domain Resolution with Docker Compose

Dnsmasq resolves a subtle, but real problem that becomes apparent when adopting Docker Compose as a LAMP stack. By allowing containers to resolve requests to each other with custom domain names, you can ensure that all containers can…

Local PHP development with Docker Compose

Introduction This post will cover how I host local copies of PHP websites running WordPress and Laravel with Docker Compose. This removes the need to install PHP, Composer, Nginx/Apache, MySQL, NPM/Node, etc locally on your host machine. I run my local development environments within Docker to avoid bloating my system. This means all of the […]

Automatically update Pypi on GitHub release

Introduction This article will guide you through setting up a GitHub workflow that automatically updates your PYPI package upon a new GitHub release, using my zomboid_rcon repository as a practical example. Understanding the Workflow The process involves a GitHub workflow specifically designed to upload a Python package to PYPI when a new release is published. […]

Squashing Commits with Git Interactive Rebase and Reset

When working on projects both personally and professionally, I use Git for version control. More often than not, If I’m working on a fix or a new feature, I will work from a new branch which has a single, specific focus and then merge it into the main branch when the work is complete. This […]

Foreign Keys in Laravel Migrations, Models & Eloquent ORM

The problem we’re solving I’m building a small SaaS project with Laravel. My project is a website up-time monitoring platform that pings users’ websites every 5 minutes to check if they’re live. Suppose a website is unreachable for any reason: In that case, a notification will then be sent to the account owner so they […]

Using WordPress via Composer: How and Why?

Introduction For my website, jackwhitworth.com, I’ve embraced Composer. The main reason for this choice is the ease of managing custom code. By using Composer, I can easily integrate version control and pull in other packages I’ve written from custom Composer repositories. This approach ensures that the site remains efficient, secure, and easily updatable. In a […]

A Guide to Optimising Image Sizes in Divi

Introduction Within web design, images are central to user experience. However, unoptimised images can significantly slow down your website. For Divi users, fine-tuning image sizes can vastly improve site speed and performance. This guide dives deep into how you can optimise image sizes in Divi, ensuring your website remains visually appealing without compromising on speed. […]