Featured Work

View All
Plugin
Craft MCP Field Agent

Craft MCP Field Agent

I made a safety first content modelling tool that extends Craft MCP. Create, modify and delete fields, entry types and sections from an AI assistant

Agency (Abstrakt)
Earth's Best

Earth's Best

Full build and creative front end development for US based global food brand, Earth's Best. Thoughtfully developed UI with numerous micro-animations and interactions to sell the "playtime" brand

Commercial
Latch

Latch

Design consultation, full build, hosting and delivery for the Latch design agency; specialising in branding for property, hospitality and F&B

Agency (Subism)
ClearBank

ClearBank

Design and development consultation, content modelling, full build and front-end for fintech organisation, ClearBank.

Agency (Abstrakt)
Abstrakt

Abstrakt

Consulting, R&D, prototyping and development of interactive 3D overlays for UK web development agency, Abstrakt.

Personal
Night Room

Night Room

Exploratory audiovisual experience made with Three and React Three Fiber. Night Room is a soporific analog escape for sleepless summer nights.

Personal
Serein

Serein

React / Next web app for record label, Serein. Installable as PWA and featuring a fully streamable catalog with slideout player drawer. Howler for audio, zustand for state and framer motion

Personal
Solaris

Solaris

Audiovisual / spatial audio experiment depicting the solar system. Solaris uses positional audio attached to each planetary object to place the listener at the centre of the sound stage.

Journal

View All
JULY 2026
Accessibility & LLMs

Accessibility & LLMs

How to use LLMs like Claude, Codex to improve the accessibility of your web pages, where they shine, where they fail and a skill for producing good quality a11y audits

JULY 2026
Blender to transparent video with cross-browser support

Blender to transparent video with cross-browser support

How to render Blender scenes with a transparent background and encode them as cross browser friendly video files with alpha transparency

JULY 2026
One canvas & multiple three.js scenes with Lit

One canvas & multiple three.js scenes with Lit

A pattern for orchestrating multiple threejs scenes on one canvas with Lit. Each scene is its own isolated component thanks to Reactive Controllers.

JUNE 2026
Alpine.js and Lit compared

Alpine.js and Lit compared

A comparison and overview of Lit and Alpine.js, strengths and weaknesses and when I tend to each for one over the other.