Web Applications
Some publicly available web applications built for fun and entertainment - see About for 'actual' work.
These links may change or be withdrawn at any time.
Sokoban Gardener


An implementation of the Classic 'Sokoban' puzzle game with a gardening theme, levels browser with filters and demos for thousands of levels playing back precomputed solutions. Run using React 19; TypeScript 5.6; Vite 6; HTML5 Canvas API. Solutions pre-computed offline using the Festival solver on AWS EC2 Windows. Still in development. Closed source.
Snack Attack

A fast-food themed Space Invaders game built with React, TypeScript, and HTML5 Canvas. Defend against invading burgers, fries, and soft drinks! Same play mechanic as 'Classic Invaders'. Touch friendly controls on touch friendly devices. Closed source.
Classic Invaders

A Space Invaders-style fixed shooter game built with React, TypeScript, and HTML5 Canvas. Applies a retro CRT aesthetic with scanlines and glow (switchable to help out low-power devices). Emulates original 'false' colour with coloured transparent strips over a monochrome display. Touch friendly controls on touch friendly devices. Closed source.
Leaf Shooter


A bubble shooter type game where players aim and fire colored leaves to match 3+ of the same color. Matched leaves pop, and any leaves no longer connected to the ceiling fall. Features continuous level progression, particle effects, sound, watercolor paper texture throughout, and autumnal theme with automatic light/dark support. Think of it as something to do when you're on a long call. Built with React, TypeScript, and originally with Canvas but now ported to PixiJS (thanks, Safari!). Closed source.
Freecell

A React TypeScript implementation of the classic FreeCell solitaire card game with Microsoft's original RNG algorithm, deployed as a static website on AWS. Open Source.
Klondike-Solitaire

A React TypeScript implementation of the classic Klondike solitaire card game, deployed as a static website on AWS. Options for single or double deck and single or 3-card draw. Open Source.
Wordsearch


Full-stack Wordsearch game with React TypeScript frontend and Python Lambda backend. Various player options and content filtering. Dark and light mode responsive theme. Closed Source.
Hangman


Full-stack hangman game with React TypeScript frontend and Python Lambda backend. Various player options and content filtering. Dark and light mode responsive theme. Fun for all the family! Open Source
Towers of Hanoi


Implementation of the classic Towers of Hanoi puzzle game. Built with React, TypeScript, and Bun. Dark and light mode responsive theme. Open Source.
Historical Day

Explore historical weather data (for major cities) and significant events for any date since 1754. Try your birthday! A free and open-source project built with TypeScript, React and Next.js, exported as static assets. Weekday calculated using Zeller's congruence. Historical weather provided by Open Meteo. Historical events provided by Wikimedia.
Tarot Card Shuffle Draw
N.B. Tarot cards were chosen as a more interesting alternative to regular playing cards - there are 2 decks and cards have an 'up' and a 'down'. Designed for demonstration/entertainment purposes only. A free and open-source project that shuffles and returns a selection of Tarot cards. Users can choose different decks, specify the number of cards to draw, and include reversed cards in the draw. Public domain illustrations of the cards are presented with the results. Deployed as a React static website frontend and serverless Go backend using AWS S3, CloudFront, Lambda, and API Gateway. Deployed with Tofu (Terraform).
