Iceland Live
A real-time map of earthquakes, volcanic systems and official warnings around Iceland.

The idea
Veðurstofan publishes everything needed to follow what the ground is doing, but spread across feeds and pages. A raw count also says very little: twenty earthquakes is an ordinary day in one place and a warning sign in another.
What I built
The homepage is the application: a dark map of every recorded earthquake in the chosen window, with official warnings, volcanic systems, Reykjanes lava fields, radar interferograms, air quality, road cameras and IMO's dispersal simulations layered on top.
The interesting part
It compares each region only with its own past, so activity is ranked by how unusual it is for that place rather than by raw volume. The written summary is generated deterministically from the data with no language model, and anything that is a model rather than a measurement says so before it shows a number.
Decisions
CSV over GeoJSON, on purpose
IMO's CSV carries two fields the GeoJSON leaves out: the review status of each event and the magnitude scale. Both are worth showing, so the map reads the CSV, and columns are matched by name rather than position.
A fixed depth is not a precise one
Some depths are assigned by an operator and arrive with an uncertainty of exactly zero. They are shown as ‘10.0 km (fixed)’ with an explanation, instead of looking like the most precise readings on the map.
No clustering
A 30-day window is about 2,800 points. One WebGL layer draws them without effort, and clustering would hide the very thing the map is for: the shape of a swarm. The app has four runtime dependencies in total.
A simulation is not a forecast
IMO runs dispersal models for selected volcanoes several times a day, whether or not anything is happening. The panel says so before it lists anything, and every row shows the plume height as an assumption the model was given.
Arithmetic, not interpretation
Regional observations state the numbers they came from and can show their own method. A test fails if any generated sentence contains predictive or hazard language such as ‘imminent’ or ‘evacuate’.