08 Projects
Project index
Everything worth showing, in the order I would show it. This is a curated list, not a mirror of my GitHub account. Projects with case notes have their own page; the rest open up in place.
Sagas of Blood & Fire
An interactive map of Iceland's historical battles and violent conflicts.
History map
Live
React, TypeScript, Vite, Leaflet
Iceland Live
A real-time map of earthquakes, volcanic systems and official warnings around Iceland.
Live map
Live
Next.js, TypeScript, MapLibre, Tailwind CSS
Vindur
Live wind over the Reykjavík capital region, drawn as particles and scored against real observations.
Weather map
Live
JavaScript, Leaflet, Canvas, Node
Fasteign
A map-first explorer of actual property sales in the Reykjavík capital region.
Data explorer
In progress, not publicly launched
Next.js, TypeScript, MapLibre, Recharts
Landlíf
The website for an Icelandic nonprofit working to strengthen rural communities.
More about Landlíf
The idea
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.
What I 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.
The interesting part
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.
Nonprofit website
Live
Next.js, TypeScript, Sanity, Vercel
SpinPage
A theatrical spinning wheel and random picker.
More about SpinPage
The idea
Random pickers are usually joyless form controls. The drama is the point: a decision feels fairer when you watch it land.
What I built
A canvas wheel with theatrical timing, sound, grab-and-flick spinning, and lists that persist between visits, so the same set of names is there tomorrow.
The interesting part
The theatre never touches the odds. Every spin draws its winner before the wheel moves, and the stunts only change the route it takes to get there. Flick it by hand and you set the speed, never the result. All of it lives in one index.html with no framework and no build step.
Toy
Live
JavaScript, Canvas, Web Audio
MemeGuessr
A daily game about guessing when memes went viral.
More about MemeGuessr
The idea
Everyone recognises the meme. Almost nobody can place the year. That gap between instant recognition and total vagueness is the whole game.
What I built
Five rounds a game: see the meme, drag a timeline to the month you think it broke, and score by how close you were. A daily mode gives everyone the same memes, and results share as a spoiler-free grid with their own preview card.
The interesting part
It moves the guessing axis from space to time. Virality is a slope rather than a date, so scoring has to reward being roughly right: points fall off with a half-life of about 18 months instead of dropping to zero for a near miss.
Game
Live
Next.js, TypeScript, Tailwind CSS
Looking for the rest?
My other public repositories are older coursework and small experiments. They stay on GitHub, uncurated.