
Bradwell Music
2025A personal favourite of mine, a Vite & React web app which includes a cute record player and streams a recently recorded album.
- TypeScript
- React
- Vite
Nothing excites people like three-year-old projects with accompanying videos of me as a younger lad, eh? Enjoy some archives from pre-industry, and pre-24/7 startup coding.
Scroll for more
A personal favourite of mine, a Vite & React web app which includes a cute record player and streams a recently recorded album.

Thirteen layers, trained in TensorFlow over a hand-labelled set of 3,992 digits, sitting behind a pre-processing step that isolates candidate numbers before they reach the network. It read all four digits correctly on 1,294 of 1,324 test images, which is 97.7 percent. Nearly all of the remaining error came from the Canny edge pass rather than the network, so the next thing to try would be different threshold values or a blur stage.

Seven filters that compose in any order: threshold, sharpen, emboss, Canny edge detection, blur in normal, median and Gaussian variants, lighten and darken. The point was being able to see what filters do to each other rather than one at a time, which is harder to picture than it sounds.
Detection and per-frame motion tracking over a live capture, written while working out how far you can get with gesture input on hardware everybody already owns.
The pretrained hand-recognition network comes from a TechVidvan tutorial, by way of Google MediaPipe.
Built for CSI4124, Foundations of Modelling and Simulation. The model reproduces the clinic’s actual scheduling behaviour closely enough to run efficiency experiments against it, then compares alternative approaches to doctor assignment and utilisation. The interesting result was how much of the queue came from assignment policy rather than from capacity.