The Gap Between What You Feel and What Is True
Open water hides its state from you. Gas, nitrogen load, blood oxygen, core heat, current, fading light — the variables that decide whether you surface safely are mostly invisible at the moment you need them, and your body actively lies about several of them. A freediver blacking out feels fine seconds before. Hypothermia degrades the judgment you'd use to notice hypothermia.
Most water-safety content answers this with rules to memorize. I wanted to explore a different design question: can an interface teach the gap itself — the distance between perceived state and true state, under time pressure — rather than teach rules?
The result is a decision simulator with real numbers in it: four disciplines, real physics models, emergency decision drills, a logbook. And a set of deliberate refusals that turned out to be the actual design work.
What I Bring, and What I Don't
I'm a PADI Rescue Diver and Advanced Open Water diver — the recreational tier where training stops being about you and becomes about managing panicked people in the water. That training shaped the interaction model directly: the drills rehearse the decision structure of emergencies I've trained for.
What I am not: an instructor, a physiologist, or any kind of authority. That boundary isn't a legal footnote here — it's the central design constraint, and the next sections are about what it produced.
Four Decisions That Did the Work
1. Four activities, four currencies — one taxonomy
Scuba, freediving, snorkelling, and open-water swimming usually get treated as points on one "watersports" spectrum. The simulator's core model rejects that: each discipline spends a different currency (breathing gas plus decompression obligation · a single breath of blood oxygen · distance against current · core heat and energy) and therefore fails in a different shape — slow and negotiable, instant and silent, gradual and geographic, creeping and cognitive. Every mechanic, drill, and warning in the simulator hangs off this one taxonomy. Getting the model right made the interface almost design itself.
2. The truth panel — epistemic honesty as a mechanic
The simulator always knows the real state. You don't. Your instruments show you a partial, delayed, sometimes wrong picture — like real instruments do. A "truth panel" showing the numbers the water is hiding exists, but is deliberately off by default, and consulting it has consequences: it ends the run's standing in the logbook. Checking the answer key costs you the dive.
That one mechanic carries the whole thesis: situational awareness isn't knowing the numbers, it's operating well while not knowing them — and knowing when the gap has grown too wide to continue. It's the same design problem as building trustworthy interfaces for AI systems, which is the practice this study feeds.
3. Refusal as architecture
The simulator tells you, above the fold and in its own voice: it is a toy with real numbers in it, not a training tool. Nothing in it qualifies you to enter open water. The drills rehearse decisions, not skills — the skills are physical, are taught in water by instructors, and decay without practice.
This isn't defensive boilerplate bolted on at the end; it's load-bearing copy that shapes what the product is allowed to be. Features that would have made it feel more like training — scores implying competence, streaks, completion language — were cut for exactly that reason. In a portfolio full of AI-trust work, this is the same muscle: a system that's honest about what it can't give you is the only kind worth trusting.
4. Sound as instrument, not atmosphere
All audio is synthesized in the browser — regulator breathing, bubbles, the muffle when you go under. Nothing is downloaded. The regulator isn't ambience: it's the metronome of a dive, and hearing your own breathing rate change under stress is a primary instrument in real diving. The sound design treats it that way.
Accessibility-Considered — the Honest Version
Every colour-coded state is also carried by text or shape, so nothing depends on colour discrimination alone. Instrument readouts and status changes announce through live regions. Motion respects reduced-motion preferences in every animated system. And the first-person view has a full text-equivalent instrument screen — a readout mode that carries the same decision-relevant state as the rendered scene.
I'm saying "accessibility-considered" rather than "accessible" deliberately: the core navigation loop still has no true non-visual or motor-alternative play path. Claiming more than that would contradict the project's whole premise.
What I Built and Chose Not to Ship
There is a deeper mode of this simulator — a medically-informed layer that adjusts the model for specific clinical histories, built from published guidance and carrying the most careful interaction design in the entire project. It works. It is also the point where "a toy with real numbers" stops being a defensible category: an unlicensed personal website has no business computing clinical risk for real people, however good its disclaimers.
So the public build ships without it — fully removed, not hidden. Disclaimers reduce how a thing reads; they don't change what it does. Knowing where the scope-of-practice line sits, and cutting your best work when it lands on the wrong side, is a design decision too — the kind I'd want any team building AI-powered health or safety features to be able to make.
Architecture
One self-contained HTML file, roughly 430 KB, zero external dependencies, zero network calls. Deterministic physics models for gas consumption, nitrogen loading, oxygen, heat loss, light and current; a drill engine that gates gameplay behind explicit acknowledgment; Web Audio synthesis for every sound; a local logbook. Nothing is stored or sent anywhere.
The intelligence is deliberately old-fashioned: the models are equations, not a language model. For a decision trainer about invisible state, determinism is a feature — the same inputs always produce the same consequences, which is what makes the consequences teachable.
What This Has to Do With AI Products
Nothing in this project calls a model — and that's precisely why it belongs in this portfolio. The design problems are the ones AI products live and die on: a system that knows more than its user, instruments that summarize a reality they can't fully show, trust calibrated against honest uncertainty, degraded-mode decision-making, and the discipline to refuse capabilities that exceed the system's standing.
Strip the water out and the truth panel is an explainability surface, the drills are human-oversight rehearsal, and the refusal architecture is scope-of-practice design for AI features. This is the safety-critical decision-design muscle, exercised on a domain where the stakes are literal.
How It Was Made
Designed and built AI-assisted throughout, working with Claude across the systems model, build, and an adversarial multi-agent review — five independent reviewer personas, a red team, and a verified code-surgery pass that removed the unshipped medical mode from the public build. The taxonomy, the refusals, and every judgment call about what this project is allowed to be are mine.