Personal · 2026
PlanesView
All air traffic live on a photorealistic globe, and the view from the cockpit of any aircraft.



The story
The initial brief said "no backend". I measured, provider by provider, the CORS headers of the ADS-B feeds: four ADS-B providers refuse calls from a web page. Rather than give up the "free, no key, no account" constraint, I designed a minimal allow-listed relay that can only reach origins fixed in a file.
Positions arrive about once a second. To get smooth 60-frames-per-second movement without ever showing a "late" aircraft, each aircraft is tracked by a constant-velocity Kalman filter, factored into two filters per axis (4 terms to propagate instead of 16).
The globe is a quadtree of tiles: a tile is never empty (it borrows its ancestor's texture), detail sharpens with a fade, a parent is replaced only once its four children are built, and the IndexedDB cache is warmed up along the trajectory.
What I take away
Measure before deciding: the brief was wrong on one point, and the right answer was a small, strictly bounded relay. I also learned that "plausibly wrong" maths (geodesy, projections) are the ones that need the most tests.