HermitClock development, May 2024

Following on from my recent post covering the success of hermitclock.com, I’ve decided I’d like to keep a record of the work I’m doing on the website. This will showcase the work that’s been carried out, as well as upcoming features that I have planned. Without further ado, let’s jump in! What’s new? HermitClock has […]

The Success of HermitClock’s Launch

For those who don’t know, HermitClock is my latest side project. It’s a website which shows the live, local times for all of the active Hermitcraft members. Hermitcraft is a Minecraft, multiplayer survival server on which only a select group of players (often called Hermits) can play. All of the active Hermits are content creators, […]

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 […]

Using Google Analytics on my blog after 3 years

In my experience within the web development industry, Google Analytics is the go-to solution for monitoring the effectiveness of a website, and for optimising the content. Being able to audit and track not only the sources of your traffic but also the way your users interact with your website, is invaluable information for those willing […]

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 […]