-
Dockerise Python with a background CRON runnerDockerise Python with a background CRON runner
Since January, I’ve worked full-time in Django and Wagtail development. In my last post, I shared my Dockerfile for deploying such projects. That Dockerfile includes a multi-stage build to reduce the final image size and to improve security. This directly builds on that Dockerfile.
22 April 2025 -
Writing a Minimal Wagtail, Poetry & Node DockerfileWriting a Minimal Wagtail, Poetry & Node Dockerfile
Over the last few months, I have worked extensively on several Wagtail projects. Off the back of this, I have decided to pivot from focusing on WordPress development in favour of Django and Wagtail.
8 April 2025 -
How to run Pygame in the browserHow to run Pygame in the browser
I’ve built several projects using Pygame, such as a solar system simulation and a Zelda-like dungeon crawler. My biggest frustration has always been the complexity of sharing the projects with others.
10 March 2025 -
Dokploy and docker-mailserver with 10/10 deliverabilityDokploy and docker-mailserver with 10/10 deliverability
I recently switched from Plesk to Dokploy as the platform on my VPS for hosting websites. I did this because I felt Dokploy offered more control, leaning into the Docker and build packs approach utilised by many hosting services such as Heroku or Netlify. It is self-hosted and adds no …
5 March 2025 -
Valet-Linux on WSL Ubuntu: Windows 11Valet-Linux on WSL Ubuntu: Windows 11
Valet is Laravel’s tool for local development. It simplifies managing Nginx and PHP when working on multiple projects. I’ve always used Docker to power my development environments, but I’ve recently decided to pivot to installing and managing my LAMP stack directly in my Ubuntu WSL environment.
17 December 2024 -
WireGuard VPN for an open NAT (wg-easy)WireGuard VPN for an open NAT (wg-easy)
In the words of a brief Google search: “NAT stands for Network Address Translation, a service that allows private networks to use the internet and cloud. It works by translating private IP addresses to a public IP address before sending packets to an external network.”
9 December 2024 -
Dockerise Django and NPM with Multi-Stage BuildsDockerise Django and NPM with Multi-Stage Builds
I’ve recently started learning Django, the popular web development framework for Python. Until now, as a PHP developer, I’ve been rather spoiled with the ease of deploying projects thanks to software such as cPanel or Plesk.
11 November 2024 -
Auto-refresh the Browser on File Save with DjangoAuto-refresh the Browser on File Save with Django
I’ve recently started learning Python’s Django framework and have brought my favourite JavaScript framework along with me: TailwindCSS. From a development standpoint, I find that TailwindCSS feels much more efficient when I don’t have to refresh the page every time I make a change.
1 November 2024 -
How To Correctly Size WordPress ImagesHow To Correctly Size WordPress Images
This is a bit of a minefield topic, as there are a lot of plugins and ‘solutions’ out there that require you to pay money or install bloated software to accomplish something WordPress is designed to handle.
10 October 2024 -
Hosting Updateable WordPress Plugins on GitHubHosting Updateable WordPress Plugins on GitHub
If, like me, you enjoy writing custom plugins for WordPress, you may know the daunting feeling of managing the versions of your plugins across many websites. While you can use a PHP package manager like Composer for your plugins, this isn’t appropriate for most WordPress deployments.
3 October 2024 -
Testing Laravel & Livewire in Github ActionsTesting Laravel & Livewire in Github Actions
When running a Laravel test suite with Livewire components, the default workflow file provided by GitHub for Laravel likely won’t pass. When using their default config, I was presented with errors such as this:
19 August 2024 -
Hermitclock development, August 2024Hermitclock development, August 2024
Previously, there was just a static image of the Hermit on the top-left. While this was fine, I had a few people mention to me that they thought it would have moved. By using a clean screenshot of a 3D render, I accidentally created a bit of confusion.
19 August 2024