Portfolio

My Work

Internal tooling, IoT platforms, and freelance builds. A selection of what I've designed and shipped.

Case Studies

6

ValidationPortal

ValidationPortal

Jul 2013 – Mar 2024

The internal tool I built from the support desk at Eseye. About forty people across support, finance, sales and dispatch used it every day, and it outlived the rewrite meant to replace it.

Perl PHP JavaScript Bootstrap MySQL +8
Migrating 1.2 Million IoT Devices

Migrating 1.2 Million IoT Devices

Designed and shipped the multi-threaded Perl orchestration that moved 1.2M cellular IoT devices off Cisco Jasper onto Eseye's Integra platform, with under 30 minutes downtime per unit and no customer revenue lost.

Perl MySQL Cellular IoT Jasper Control Center Integra +1
NearestForest

NearestForest

Aug 2026 – Present

A free app that shows you the nearest Forestry England forests, closest first, and sends you there in one tap. It works with no phone signal, covers 904 forests and car parks, and has no sign-up, tracking or adverts. Designed, built and deployed in a day.

JavaScript PWA Service Worker Python PHP +3
View project →
ProgressBoard

ProgressBoard

Jul 2026 – Present

A cross-project work board for building with AI agents. Cards are markdown files inside each project's own repo and the folder is the state, so a state change is a git diff. Built after classifying 35 open cards and finding 26 of them were decisions waiting on me, not work waiting on a developer.

Laravel PHP 8.4 Blade Pest Git +2
PlanHawk

PlanHawk

Jul 2026 – Present

One system of record for UK fire and building-safety consultancies: enquiries, projects, marked-up floorplans, issued reports and the money still owed, with every change kept. Multi-tenant, built on a temporal data model, and live as a demo.

Laravel 13 PHP 8.3 PostgreSQL Inertia Vue +3
View project →
Homelab

Homelab

Oct 2026 – Present

An old workstation rebuilt as a Proxmox server: a NAS, Home Assistant, photos, git and a dozen apps, each with its own HTTPS name, none of them open to the internet, and a status page that checks every one each minute.

Proxmox TrueNAS ZFS Docker Caddy +5