News
News about what I've been doing and how's it been going
One direction, held
This site commits to a single aesthetic direction and spends the whole token set on it. What that buys, and what it costs when a component arrives wanting something else.
- Design systems
- Tokens
PROJECT UPDATE: Density, and why planets are the wrong size
Mass and radius were independent numbers in Planetar, so the picture on screen could contradict the physics behind it. Tying them together with density, and rebuilding the presets around real mass ratios.
- Personal projects
- Work in progress

PROJECT UPDATE: Planetar has an address
Deploying a Next.js app to GitHub Pages as a static export, and the sub-path problem that quietly breaks every asset URL until you tell the build where it lives.
- Personal projects
- Work in progress

Monospace everywhere, and the one exception
Every label, button and numeral on this site sets in JetBrains Mono. Long-form prose does not. Writing that exception down is what stopped it spreading.
- Typography
- Design systems
PROJECT UPDATE: Nineteen thousand pairs a frame
An all-pairs gravity summation is quadratic by construction, and the speed controls had made that impossible to ignore. Halving the constant, removing a square root, and knowing where the real ceiling is.
- Personal projects
- Work in progress

PROJECT UPDATE: A system is just its initial conditions
Saving and loading planetary systems, which turns out to be a very short file — plus the predefined systems that came almost free once import existed.
- Personal projects
- Work in progress

PROJECT UPDATE: A simulation you cannot steer is a screensaver
Zoom that keeps the point under the cursor, drag to pan, speed that does not break the integrator, and an arcade mode that teaches orbital mechanics faster than any diagram.
- Personal projects
- Work in progress

PROJECT UPDATE: Writing a gravity engine from scratch
Starting Planetar, and why a general physics library was the wrong tool for it. Newton's law, the singularity you have to soften, and the two-line change that stops orbits spiralling apart.
- Personal projects
- Work in progress

The flag I did not turn on
Next 16 ships Cache Components behind a config flag. This site leaves it off, and the reasoning is more interesting than the feature.
- Next.js
- Rendering