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.
Simulates daily occupancy and shows why p50/p85/p95/p99 give very different absolute answers from the same data.
R in the browser · webRWeekly 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 · webRWhy 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 · webRTwo 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 · webRLinked 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 · OpenStreetMapQueueing 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 · webRTrust-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 theoryA 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 · parametricAn 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 multiplesAn 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 appA 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 · touchA 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 · touchAn 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 graphA 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