Skip to content

01Index

Everything worth showing, in the order I would show it.

This is a curated list, not a mirror of my GitHub account. Each entry says what the thing is, what I actually built, and the one decision that made it interesting to work on.

01Live

Sagas of Blood & Fire

IcelandHistoryMap

An interactive map of Iceland's historical battles and violent conflicts.

Iceland's conflicts are thoroughly documented and poorly presented: long prose, no geography, and no easy way to see that two events happened in the same valley two centuries apart.

Built A map you move through rather than a page you scroll. Conflicts sit where they actually happened, and the detail opens up only when you ask for it.

Notable It is built for someone with five minutes, not a semester. The editorial constraint, friendly and fast history for the impatient, decided the interface: the map answers 'where and roughly when' immediately, and everything else stays folded away.

Surface
Single full-bleed map
Rendering
Leaflet tiles + custom markers
Audience
Curious, not academic
Domain
map.gunnthor.is
  • React
  • TypeScript
  • Vite
  • Leaflet
02Live

Landlíf

Landsbyggðin lifi

The website for an Icelandic nonprofit working to strengthen rural communities.

Landsbyggðin lifi is an association for the building up and strengthening of rural Iceland. It needed a public home the people running it could keep current themselves, rather than one that quietly goes stale the moment the developer moves on.

Built An Icelandic-language site covering who they are and what they do, with news, photo galleries from events, and a way to get in touch. News and images are edited through a CMS, so the organisation publishes on its own schedule.

Notable It was built to be handed over. Content lives in Sanity so volunteers can post without touching code, and the repository now sits under the organisation's own GitHub account rather than mine. Success here looks like the site staying useful with no involvement from me at all.

Built for
A nonprofit association
Language
Icelandic
Content
Edited in Sanity
Domain
landlif.is
  • Next.js
  • TypeScript
  • Sanity
  • Vercel
03Live

Nafnaval

Every name in the Icelandic name register, broken into the parts it is built from.

Icelandic names are compounds. Þórbjörg is Þór plus björg. That structure is the interesting part, and nothing online let you follow a single element from one name to the next.

Built A static site covering the whole mannanafnaskrá: meaning, declension, categories, and how many people carry each name. Every element gets its own page, so you can start at a name and end up somewhere unexpected.

Notable Meaning resolves through a strict precedence chain: hand-written cited entries first, then a lexicon of roughly 215 Old Norse elements sourced to public-domain dictionaries, and only then AI-drafted text, which stays quarantined behind an óstaðfest badge and is never merged into the cited data. The model fills gaps; it does not get to launder itself into a source.

Scale
~6,000 prerendered pages
Lexicon
~215 Old Norse elements
Sources
island.is · Þjóðskrá · BÍN
Client JS
One filtering island
Domain
nafn.gunnthor.is
  • Astro
  • TypeScript
  • Static site generation
04Live

SpinPage

A theatrical spinning wheel and random picker.

Random pickers are usually joyless form controls. The drama is the point: a decision feels fairer when you watch it land.

Built A canvas wheel with weighted motion, sound, and lists that persist between visits, so the same set of names is there tomorrow.

Notable No framework and no build step. Vanilla JavaScript, Canvas and Web Audio, which keeps it a single page that loads instantly and will still run unchanged in ten years.

Dependencies
None
Build step
None
Persistence
Local, per browser
Domain
ruglad.com
  • Vanilla JavaScript
  • Canvas
  • Web Audio
05Live

Vindur

Wind over Reykjavík

Live wind over the Reykjavík capital region, drawn as particles and scored against real observations.

A 2 km forecast field animated as particles moving through it, with 19 Veðurstofan weather stations laid on top. The animation is not the point. Seeing at a glance where the forecast and the actual measurements disagree is the point.

Built A keyless, dependency-free map. The model grid comes from Open-Meteo's DMI Harmonie run, the station readings come straight from Veðurstofan, and a small Node server exists mainly because the observation feed sends no CORS header. A scrubber runs from 24 hours back to 48 hours ahead.

Notable It grades itself. An accuracy tab compares every station against the model interpolated to that station's exact coordinates, reporting bias, MAE and RMSE, including the rounds where the model is wrong. There is also a rule worth stating: scrub away from now and the station markers switch to model values and say so, because a stale reading should never be dressed up as a forecast.

Model
DMI Harmonie, ~2 km
Observations
19 Veðurstofan stations
Window
24 h back, 48 h ahead
Dependencies
None
  • Vanilla JavaScript
  • Leaflet
  • Canvas
  • Node
06Live

MemeGuessr

A daily GeoGuessr-style game about when memes went viral.

Everyone recognises the meme. Almost nobody can place the year. That gap between instant recognition and total vagueness is the whole game.

Built One puzzle a day: see the meme, guess the moment it broke, get scored on how close you were, and share the result without spoiling it.

Notable It moves the guessing axis from space to time. The scoring has to reward being roughly right, because meme virality is a slope rather than a date, so the interesting design work is in how generously wrong answers are treated.

Format
One round per day
Loop
Guess → score → share
Axis
Time, not place
Domain
memeguessr.com
  • Next.js
  • TypeScript

Looking for the rest?

Older experiments, half-finished ideas and coursework all live on GitHub. Nothing there is curated, which is rather the point.

Browse the full archive