The lab is a companion project to my portfolio and follows the same rules I use in production work: keep logic separate from presentation, make behaviour deterministic, and test it.
- Discrete-event simulations. Each experiment advances a simulated clock through a priority queue of events rather than scattered timers, so playback speed never changes the results and a single Step processes exactly one event.
- Deterministic and shareable. Workloads come from a seeded random generator; the same seed and settings replay the same run. Settings live in the URL (validated and clamped), so any setup can be shared as a link.
- Framework-free core, unit tested. The models are plain TypeScript with no React, tested with Vitest for cache hits, TTL timing, LRU order, polling timing, replay, deduplication, buffer exhaustion, balancing strategies, queue limits, percentiles, repeatability, and pause/reset behaviour.
- Accessible and bounded. Keyboard-operable controls, explanations next to every input, state shown in words and shapes (not colour alone), calm screen-reader summaries, reduced-motion support, and capped logs and histories so long runs stay light.
Built with Next.js, React, TypeScript and Tailwind CSS. No backend, accounts or tracking: everything runs locally in your browser. The full source is on GitHub.