What Changed This Sprint
The jump from 300 to 345 simulations took about six weeks and was the most category-diverse sprint yet. Previous sprints tended to deepen existing categories — adding more physics, more chemistry, more space. This sprint opened eleven new category areas that had never been covered, filling gaps that were clearly visible in the "full spectrum" analysis we ran in February.
The driving insight was a simple metric: how many of the major university-level STEM disciplines had zero simulations? The answer was uncomfortable. Special relativity had zero despite being a first-year physics topic with deeply visual mathematics. Combinatorics had zero despite being the backbone of algorithm analysis. Topology — the mathematics of shapes and connectivity — had zero. Ecology, chronobiology, and materials science all had gaps. This sprint was about systematic coverage, not just adding popular topics.
New Categories This Sprint
Special Relativity
6 sims — twin paradox, Minkowski, Lorentz, E=mc²
Topology
Möbius strip, matrix transforms, spherical projections
Ecology
Food webs, trophic cascades, Lotka–Volterra extensions
Combinatorics
Graph colouring, Pascal's triangle, N-queens
Agronomy
Growing degree days, RUSLE soil erosion model
Civil Engineering
Euler–Bernoulli beam, ACI 211 concrete mix design
Chronobiology
Goodwin oscillator, circadian rhythm, melatonin cycle
Nanotechnology
Brownian motion, Lennard-Jones molecular dynamics
The 5 Hardest Simulations This Sprint
Möbius Strip — 3D with Euler Sorting
A 120×16 parametric surface rendered on Canvas 2D using the "painter's algorithm" — sorting all 1920 quads by their centroid depth each frame. The tricky part: a Möbius strip has exactly one edge, not two, which breaks naive polygon winding order assumptions. Getting the edge highlight and ant-path animation correct required tracking which quads belong to the single boundary edge around a double-period parametric curve.
Crystal Structures — 3D Viewer with Depth Sorting
Six crystal lattice types (SC, BCC, FCC, HCP, Diamond, NaCl) rendered in Canvas 2D with full 3D rotation via the painter's algorithm. The challenge: supercell mode (2×2×2) generates 64× more atoms, each with a radial gradient for sphere shading. The bond rendering order had to interleave correctly with atom spheres across depth layers without Z-fighting artifacts at the intersection of multiple bonds at high-symmetry sites.
Ocean Acidification — Newton's Method in the Browser
The carbonate chemistry system (CO₂ dissolution, H₂CO₃ dissociation, aragonite saturation) forms an implicit algebraic equation in [H⁺] that has no closed form. Solved with 30 iterations of Newton's method on each slider move. Getting the equilibrium constants right (Weiss 1974 for K₀, Mehrbach for K₁/K₂) and handling numerical edge cases near the low-pH coral dissolution boundary required careful float precision management.
Twin Paradox — Animated Spacetime Diagram
The simulation draws a live Minkowski diagram with correct relativistic geometry as the rocket flies out and back. The hard part: the proper-time tick marks on the rocket's worldline must be spaced according to the dilated interval ds² = (c dt)² − dx², which changes every frame as the animation progresses through the outbound, turnaround, and return phases. Getting the event circle (where the twins reunite) to appear at precisely the right spacetime coordinates required careful coordinate transformation from simulation time to screen space.
Exoplanet Transit — Mandel-Agol Light Curve
The transit light curve formula (Mandel & Agol 2002) has fifteen separate analytic cases depending on the overlap geometry between the planetary disk and the stellar limb. Evaluating elliptic integrals K(k) and E(k) in JavaScript without a math library required implementing the AGM (arithmetic-geometric mean) algorithm from scratch, accurate to six decimal places, fast enough to recompute the entire light curve at 60 fps as the planet position advances.
Architecture: Still No Build Step
At 345 simulations, the "no build step, no framework, no bundler"
architecture decision that was made at the very beginning is still
paying off. Every simulation is a standalone index.html
file. Deploying a new simulation means dragging a folder to the
server. Fixing a bug means editing one HTML file. The development loop
— write code, see result — has zero latency.
The cost is real: no tree-shaking, no type checking across files, no shared component state. The Three.js CDN delivery adds ~600 KB to every simulation that uses it. But the benefit is radical simplicity and accessibility: any simulation can be opened in any browser, saved locally, forked on Codepen, embedded in an iframe, or taught in a classroom with zero setup. That accessibility is the whole point of the project.
The 60 fps constraint: Every simulation must run at 60 fps on a mid-range Android phone without WebGL (Canvas 2D only) for the non-WebGL subset, and at ≥30 fps on WebGL simulations. This single constraint has driven more architectural decisions than anything else: it eliminated SPH with >500 particles, N-body with >500 bodies (without Barnes-Hut), and full raytracing without ping-pong framebuffers.
Technical Lessons from the Relativity Sprint
The special relativity simulations were a category we had avoided for two years because the visual language of spacetime diagrams is non-obvious. How do you render a Minkowski diagram in a way that shows the geometry without requiring the user to know what the diagram means? The solution we landed on:
- Colour-coding intervals: timelike intervals in gold, spacelike in red, lightlike (the light cone) in white. Users learn the visual language before they read the labels.
- Live γ-factor readout: every slider move updates γ = 1/√(1−β²) in large text in the corner, making the relationship between velocity and time dilation immediate.
- Animated clocks: side-by-side animated clock faces running at different rates is more convincing than any formula.
- Preset journeys: "ISS orbit", "GPS satellite", "cosmic muon" — named presets that demonstrate where relativistic effects actually matter anchor the physics in reality.
The Flat-Path UK Version Architecture
The Ukrainian versions of simulations that were added early in the
project live at /uk/{slug}/index.html — "flat path"
canonical Ukrainian versions. This has an important SEO benefit:
Google treats them as first-class pages rather than translations,
which means they can rank independently for Ukrainian-language
queries. The hreflang linking between EN and UK versions ensures users
see the correct language version for their locale without duplicate
content penalties.
The flat-path architecture was adopted after session 40 and applied retroactively to all 345 simulations. Every new simulation now ships with both an EN index.html and a UK index.html on day one.
What We Learned About Category Design
Start with 3+ simulations
A category with 1–2 simulations feels thin. Users who navigate to a category expect a collection. We now build at least three simulations before creating a category page, instead of showing empty "coming soon" cards.
Difficulty badges matter
The ★☆☆ Easy / ★★☆ Moderate / ★★★ Advanced badges on simulation cards are clicked more than any other interactive element on category pages. Users filter by difficulty before topic — they want to know if they'll understand it.
The math box drives engagement
Blog posts with a math-box containing equations and
pseudocode have 2.4× longer average session duration than posts
without one. The math-literate audience is smaller but far more
engaged.
Presets are not optional
Simulations without named presets are abandoned within 20s by most users. Named presets ("Earth Orbit", "GPS Satellite", "Rogue Wave") transform a parameter space into a guided tour. We now treat presets as a first-class feature, not an afterthought.
What Comes Next: The Road to 400
The next milestone is 400 simulations, and the categories are already mapped. Several areas that were flagged as "fully absent" in the full-spectrum analysis are still waiting: plasma physics (beyond the aurora simulation), general relativity (Schwarzschild geodesics, gravitational redshift), cosmology (CMB, nucleosynthesis, dark matter halos), and topology (Klein bottle, torus genus, knot invariants).
On the content side, the statistics and algorithms spotlight posts (Spotlight #22 and Spotlight #23) are newly live, and Spotlight #24 covering ecology and population dynamics is in progress. The blog content is now growing faster than the simulation count — which is as it should be: every simulation deserves a tutorial, and every tutorial brings new users who engage with the simulations.
Community milestone: The project now appears in university course syllabi in five countries — linked from physics, mathematics, and computer science courses as interactive supplement material. That is the validation we set out to earn back when we shipped simulation #1.