Projects
Where a project could be made to run in the browser, it does. Where it genuinely could not — an iOS app, an Android AR headset app, a Windows overlay — there is a video or a writeup instead.
Selected work
Sudoku Solver
A backtracking solver you can watch think.
Playable herePythonpygameTypeScript
Underpeel
A tournament site for a Valorant league, still live today.
Live siteReactViteTailwind CSS
League Win Predictor
Can a game's outcome be called from its 14th minute?
Playable herePythonscikit-learnpandas
Valorant Kill Map
Where rounds are actually won, plotted from match data.
Playable herePythonFlaskmatplotlib
VRVision
Augmented reality as an aid for low vision.
Playable hereJavaAndroidGoogle Cardboard
WatTravl
Indoor navigation for a building where GPS gives up.
Playable hereKotlinAndroidGoogle Maps SDK
ChamberCrawler3000
A roguelike you can play here, ported from the C++.
Playable hereC++Make
Also built
Earlier work
Student Progress Tracker
Automating the coaching report nobody wanted to write.
PythonGoogle Sheets APIxlsxwriter
Student Management API
A full-stack CRUD app, containerised for AWS.
JavaSpring BootReact
ATM Simulator
Where the object modelling clicked.
JavaSwing
HooBank Landing Page
A styling exercise in modern Tailwind layout.
ReactViteTailwind CSS