// Writing

Articles

Tutorials, opinion pieces, tech reviews, and personal reflections. Covering web engineering, AI, the tools I use, and the things I've learned along the way.

Reflection

Your Website Needs an MOT

You built the website, paid the bill, and watched it go live. Job done. Except it isn't — and the longer that assumption goes unchallenged, the more expensive the correction becomes.

21 May 2026· 17 min read
Reflection

Who's Watching Your Code?

What happens when the people building your software are the only ones who ever look at it? A pattern that surfaces time and again in outsourced projects — and one that AI-generated codebases are rapidly making more common.

20 May 2026· 19 min read
Reflection

Your LLM Isn't Quite As Smart As You Think

When you ask an AI assistant to draw a picture, search the web, or simply tell you the time, it's almost never the model itself doing the work. Here's what's actually going on — and why it matters.

6 May 2026· 18 min read
Reflection

The Accidental Telephony Engineer

What happens when a chat and AI specialist suddenly becomes the go-to person for SIP trunks, packet captures and telephony implementations? This is the story of how I accidentally became a telephony engineer — and what I learned along the way.

24 April 2026· 10 min read
Reflection

Can Claude Really Build an App with No Engineer Required?

Can someone with no technical background really build a production-ready app using Claude? I put it to the test — here's what I found, warts and all.

19 April 2026· 12 min read
Tutorials

Accepting PayPal Payments in Laravel with drewdan/paypal

A guide to installing and using the drewdan/paypal open source package — covering installation, creating orders with the builder pattern, retrieving and capturing orders, and handling PayPal webhooks.

28 April 2025· 15 min read
Tutorials

Deploying Laravel on a LAMP Stack

A step-by-step guide to manually setting up a Linux server with Apache, MySQL, and PHP to host a Laravel application — covering everything from package installation to firewall configuration.

5 March 2025· 12 min read
Tutorials

Fixing 413 Errors When Uploading Files Through Expose

Getting a 413 Request Entity Too Large when uploading files through BeyondCode's Expose tunnel? It's an Nginx body size limit on the server. Here's the fix.

13 January 2025· 3 min read
Tutorials

Fixing Expose 504 Gateway Timeout on WSL2

Getting a 504 Gateway Timeout when using BeyondCode's Expose tunnel on WSL2? It's almost certainly a DNS misconfiguration. Here's the one-line fix.

18 November 2024· 4 min read
Tutorials

Sideloading Extensions in Microsoft Edge

How to load an unpacked browser extension into Microsoft Edge without publishing it to the add-on store — useful for developers building extensions and companies distributing internal tools.

2 October 2024· 3 min read
Tutorials

Git is Marking Every File as Modified — Here's Why

If git status suddenly shows every file in your project as modified but you haven't changed anything, file permission changes are almost certainly the culprit. Here's the one-line fix.

19 August 2024· 2 min read
Tutorials

Switching PHP Versions in Apache

How to change the PHP version your Apache web server is using — useful when upgrading between PHP releases. A quick two-command swap with a2dismod and a2enmod.

11 July 2024· 3 min read
Tutorials

Loading Timezone Data into MySQL

If your MySQL queries using CONVERT_TZ are returning no results despite data being present, you're probably missing timezone table data. Here's how to fix it on Ubuntu.

3 June 2024· 4 min read