Back to CV

case_study_04 · quake-monitor

Exhibition installation · live · 2026

Quake Monitor — live earthquake display at Harpa Concert Hall

A real-time earthquake visualisation on an 85-inch 4K screen inside the volcano exhibition at Harpa Concert Hall in Reykjavík. Pulls from the Icelandic Met Office and plots quakes on a custom Iceland map. Shipped end-to-end from another country: I never set foot in Harpa, never saw the hardware, never stood in front of the screen. The installer was on-site; AI read the photos they sent back and confirmed the page rendered correctly on the actual panel.

Role
Solo build · ingestion, projection, exhibition page, calibration tooling, admin
Scope
Seismic data ingest · custom Iceland map · lat-lon → pixel projection · remote install QA · exhibition admin
Source
Veðurstofa Íslands earthquake feed · refreshed every two minutes
Display
85-inch 4K screen at Harpa Concert Hall · volcano exhibition · QA'd remotely from installer photos
Fig. 01 The exhibition page in motion — markers pulse as new quakes arrive, the eruption counter advances live, visitors walk past it on the exhibition floor.

01

Earthquakes are easy. Pixels are not.

Iceland has, on a calm day, a half-dozen earthquakes you could plot. The data is public, refreshed every two minutes, and free of charge. Pulling it down is a fifty-line script.

That isn't the project. The project is making an exhibition page that puts each of those earthquakes on the right pixel of a custom-styled Iceland map at 4K — not on a stock web map widget, not on a generic tile layer, but on a hand-rendered satellite image where every coastline, glacier and lava field has been chosen for how it reads on a public-facing exhibition display. And then making the same page look right on an 85-inch screen at Harpa Concert Hall, from a country away, using only photos sent by the installer.

Veðurstofa Íslands earthquake map — Staðsetning skjálfta — showing dozens of recent quakes plotted with magnitude colour coding
Fig. 02 — The input. Veðurstofa Íslands publishes earthquake locations every couple of minutes. Getting the list is trivial. Putting each one on a custom map is the work.

02

The projection, and the QA tool that made it work

The map is one big static image — a 4K rendering of Iceland, hand-styled for the exhibition. To plot an earthquake on it you need a transformation: real-world (lat, lon) → image (x, y). Get the transformation wrong and a magnitude-three quake appears off the coast of the Westfjords. Get it right and it sits on the volcano it actually came from.

Calibration is the boring kind of hard — pick anchor points, record their (lat, lon) and (x, y), fit the projection, verify, repeat. AI built the tool that turned that into a few minutes of work.

Image XY Picker — AI-built calibration tool showing the Iceland satellite map at native resolution with picked anchor points, each annotated with both image XY and geographic lat/lon coordinates, and a sidebar listing every picked point
Fig. 03 — The Image XY Picker. Click anywhere on the native-resolution map; the tool reports the exact image-space coordinates and the geographic coordinates side by side, and copies the point list out as a calibration table.

The proof of work is the before-and-after of the projection itself. The first version of the transformation was close, but only close. Many quakes off the south and west coasts plotted into the ocean — visually obvious, technically wrong. AI's QA pass refined the projection until the points sat where they actually came from.

03

Calibrating without being in the room

The output isn't a browser. It's an 85-inch 4K panel mounted in a public exhibition, with people standing in front of it every day. That changes the engineering shape. There is no view it on your laptop and ship.

What there also isn't, in this case, is the developer. I never set foot in Harpa, never saw the hardware, never stood in front of the screen. The installer was on-site; I was a country away. The QA channel between the build and the venue was photos.

Two calibration pages were built specifically for that loop. The fit test is a yellow-bordered grid — corners, centre crosshair, gridlines — that makes it obvious whether the entire image is on-screen with no overscan, no letterboxing, no clipped corners. The scale analysis renders a known reference pattern that makes any scaling distortion in the chain visible at a glance. Both pages are designed to be readable from a single phone photo.

The installer took photos of those pages on the actual screen. AI read the photos against expectation, flagged anything that looked off, and once both came back clean the visualisation could ship. The pages exist so a single photo from the venue is enough to QA the whole chain — source image, browser engine, signal, panel — without anyone from the dev team being in the room.

04

The admin and the live loop

The exhibition page is the public-facing surface. The admin is where the page is operated. Headline text and font, subtext, marker and wave magnitude thresholds, wave scale multiplier, eruption start time, eruption point on the map, colours per element, live preview of the page in miniature — all driven from a single console with a "Save Changes" button that pushes to the live page.

Quake Monitor Admin interface — content fields, display rules, eruption fields, colours, map placement preview with volcano marker, live preview of the exhibition page, debug JSON panel showing the eruption point structure with both lat/lon and normalised image coordinates
Fig. 08 — The admin. Content, display rules, eruption metadata and colour palette on the left; map placement and live preview on the right. The debug panel exposes the projection contract: every anchor point carries both (lat, lon) and (imgNormX, imgNormY) — the calibration is the bridge between them.

05

How AI built the calibration spine

The exhibition page itself is deterministic. AI is not in the loop at runtime — there is no LLM looking at quakes and deciding what to draw. AI's job here was further upstream: build the tooling that made the projection trustworthy, calibrate the page for the physical screen at the venue, and keep the operations console useful.

01

Image XY Picker — calibration tool

AI built the click-to-coordinates tool that maps any point on the 4K Iceland image into both image-space (x, y) and geographic-space (lat, lon), with a copyable point list. Build-time only. Without this, the calibration was a manual spreadsheet.

02

Projection QA

AI ran the existing point mapping against real seismic data, surfaced the misalignment visible in the "before" image — multiple quakes plotted offshore — and refined the lat/lon → x/y transformation until points clustered correctly on the volcanic regions that actually produced them. Build-time only. The before / after pair is the audit trail.

03

Remote-photo QA

The installer photographed the calibration pages on the actual panel. AI read the photos, compared them against expectation, and confirmed the page rendered cleanly through the chain — source image, browser engine, signal, panel — without anyone from the dev team being in the room. Build-time / commissioning.

04

Single-photo calibration pages

AI helped design the calibration pages — fit-test grid, scale-analysis pattern — so that a single phone photo from the venue is enough to verify them. The installer doesn't need to interpret anything, the developer doesn't need to be there. Build-time / commissioning.

05

Admin interface

AI helped build the admin: content and typography fields, display-rule sliders, eruption metadata, colour palette and live preview, all writing through to a saved configuration the exhibition page reads from. Build-time only. The admin keeps the page operable by the people who run the exhibition, not just by the engineer who built it.

06

What this proves

This is the kind of build that gets dismissed as "just a page" until you have to put it on an 85-inch screen in a public exhibition you've never visited. The interesting work is everywhere except the rendering — in the projection, in the QA loop that runs from installer photos, and in the admin that lets someone other than the developer change a colour without a code deploy.