Toy Models

A small collection of self-contained demo apps, each living in its own directory of this repository. They are designed to aid discussion and build a shared understanding of the key concepts in each domain. Pick one below.

Occupancy & Percentiles

Simulates daily occupancy and shows why p50/p85/p95/p99 give very different absolute answers from the same data.

R in the browser · webR

Flu Season Shapes

Weekly flu patients overlaid across seasons, showing early-peak, late-peak and slow-burn shapes — and which past season a new one resembles so far.

R in the browser · webR

Average vs Intraday Bed Modelling

Why sizing beds on an average (admissions × length of stay) under-provisions versus an hour-by-hour model of arrivals, length of stay and discharge timing.

R in the browser · webR

Population Pyramids — English Geographies

Two population pyramids side by side for chosen areas and years, with change by age band and sex below. Region, sub-ICB or local-authority level, multi-select. Real ONS 2022-based projections.

R in the browser · webR

England Geography Map

Linked list & Leaflet map selector for English regions, sub-ICBs and local authorities — tick the list or click the map, they stay in sync. ONS boundaries.

Leaflet · OpenStreetMap

Waiting Lists: Shape & Simulation

Queueing theory for backlogs (NHS RTT, MRI, endoscopy, letters…): the exponential + targets, how constraining long waiters reshapes the list, and a referral/removal simulator.

R in the browser · webR

Demand & Capacity — NUH (RX1)

Trust-wide, specialty-connected demand & capacity model: the RTT 65/80/92 glide path converted to required outpatient, theatre, bed and diagnostic capacity per treatment function.

JS engine · queueing theory

Bookshelf Designer — birch ply

A parametric plywood bookshelf rendered live in 3D: width, depth, height, shelf count, ply thickness and an optional back panel, with volume and weight readouts.

three.js · parametric

RTT 18-week Diversion

An animated fictional waiting list to 1 April 2028 under surplus, balanced and deficit capacity — each run ordinarily and again with capacity diverted in the last 18 weeks to flatter the metric on the day. A study of a tactic the author does not endorse.

JS engine · animated small multiples

Global Explorer

An educational guessing game on a 3D globe: pick a start country, then hunt the hidden one hop by hop. Each guess comes back warmer or cooler, with three difficulty levels, and finding it unlocks capital, population, neighbours and facts for all 250 countries and territories.

three.js three.js · JS engine · gamemiddot; JS engine three.js · JS engine · gamemiddot; installable app

Block World

A 3D block-building game for tablets and phones, co-designed with Elliott. Dig and water bubbles up, build with 76 kinds of block from moonstone to candy stripe, furnish with beds, lamps and sofas, lock rooms behind passcode trapdoors, hide treasure in chests, spy through security cameras on a computer, fly, and ride the villagers.

three.js · JS engine · game · touch

Build Life

A life-building game for 7 to 12 year olds, designed with its two players. Buy a house, decorate every room and the garden in a dolls'-house view, go to school (maths, words and the world) to earn gold coins, buy screens and security cameras, adopt a dragon, bring a baby home from the hospital, catch burglars and move up to a castle.

SVG · JS engine · game · touch

NHS Specialties & Treatment Functions

An index of NHS main specialties and treatment function codes from the NHS Data Dictionary, built into a factsheet per specialty from YAML, with a graph layer linking specialties through their medical roles: grades, shared training pathways and special-interest roles.

YAML factsheets · JS engine · network graph

Synthetic Hospital Data

A seeded, deliberately messy synthetic dataset for a fictional large acute trust: PAS admissions and ADT events, an ED tracking board, outpatients and RTT, CT, MRI and ultrasound, and an endoscopy export, with a catalogued answers table, a derived layer that rebuilds spells and national returns from the raw events, a table viewer and ERDs. Now in its own repository.

800k patients · Parquet · R generator · DuckDB · separate repo