R&D·01 ·SHIPPED·2026

Living Earth: the whole planet, live, in one browser tab

A 3D globe with 23 live layers: every satellite, 10,000-odd aircraft, lightning, earthquakes, weather, surf, rivers and buses, drawn by your own GPU. Hand-written WebGPU with two runtime dependencies, fed by a Raspberry Pi with its own ADS-B radio. Free, no account, nothing to install.

Shippedgeospatialwebgpuopen-data
Living Earth locked on to the International Space Station over the Americas, with ocean currents, the aurora over Canada, earthquakes, lightning and thousands of satellites round the planet.

How many apps do you need open to know what the planet's doing right now? A flight tracker, a ship tracker, a weather app, a surf app, a satellite site, a council website or two for the rivers... I counted six paid ones before I gave up, and that's about £146 a year, and you STILL don't get UK floods or buses.

So I put it all on one globe. Living Earth is 23 live layers in a single browser tab: every satellite and bit of debris in orbit (29,198 objects at the last count), 10,000-odd aircraft, lightning as it strikes, the last day's earthquakes, wildfires, 18 weather maps out to five days, swell and currents, 36 Cornish surf spots, every bus in England, the tube, and 3,077 river gauges. It all runs on one clock, so you can rewind a storm and watch the lightning again. Free, no account, nothing to install.

Written from the metal up

No game engine, no globe library. It's hand-written TypeScript and WebGPU with exactly two runtime dependencies (and yes, that was deliberate).

The bit I'm proudest of is the orbits. The full SGP4/SDP4 satellite model, deep-space terms and all, is ported line for line into a compute shader and run for every object, every frame. WGSL hasn't got 64-bit floats, so the hot terms are emulated with pairs of 32-bit ones. Against a double-precision reference over 29,093 objects the median error is 2 m. Plain f32 gets you 22 m, and a worst case of 3.1 km. A satellite moves 7.6 km a second, so 2 m is basically the width of a car.

It holds 59.9 fps on a desktop with a million moving points, and 58.8 fps on an iPhone 16 Pro Max at full resolution. Tap on a phone and it works out what you hit in a median of 29 ms.

Demo mode with ocean currents over the Pacific and the Moon beside the Earth, with a local-time callout for the Sunshine Coast, Australia.
Demo mode, left alone for twenty seconds. The Moon is where the Moon actually is.

A Raspberry Pi runs the whole planet

Every feed (40-odd of them, from NOAA and USGS to the Environment Agency and TfL) comes into a Raspberry Pi 5 on 21 scheduled jobs. It's turned into one of 21 purpose-built binary formats, an aircraft is 16 bytes, and pushed to Cloudflare R2. Weather arrives as GRIB2, imagery as JPEG 2000 and HDF5, so rather than ship native libraries I wrote the decoders in TypeScript. The GRIB2 one matches ECMWF's ecCodes on every point to within 0.000015.

The same Pi has its own radio on it. A software-defined receiver on 1090 MHz decodes the ADS-B every passing plane broadcasts, and feeds it to the adsb.lol network, which is what earns us the worldwide feed back. It decoded 29 million messages in its first three days. Hosting cost? £0 a month, by design.

The full rundown, with the price comparison and the numbers, is on the Living Earth site. Or just open the globe and leave it alone for twenty seconds.