Håkon

Selected work

01—04
012025 —

Toobmap

live

An interactive map that follows along with travel videos on YouTube.

Follow the places in a video without pausing to look them up. The web app is live; the browser extension is still in development.

A short demo following a video through western England. No audio. Screenshots and story →
How I built it: Toobmap

Toobmap reads video metadata and captions to identify places and match them to the video timeline. The web app and browser extension share the same location pipeline. The extension adds a map to YouTube’s sidebar.

  • I replaced rule-based place extraction after finding too many exceptions across videos
  • Coordinates from metadata appear first. An LLM refines the locations in the background
  • Captions connect locations to timestamps, with chapter markers as a fallback

Next.js · Svelte 5 · TypeScript · MapLibre · LLM pipeline

022026

Every building Norway’s oil fund owns, on one map.

Explore 1,389 properties across 245 cities, from city clusters down to individual buildings. Built from NBIM’s public 2025 dataset.

How I built it: NBIM Map

The map uses NBIM’s annual CSV of real estate holdings. The main challenge was turning inconsistent addresses into accurate coordinates. I added a geocoding cache, checks for misplaced results, and a manual correction pass.

  • 1,389 properties · 245 cities · 15 countries (2025 dataset)
  • Basemap falls back through three providers mid-session if a tile request fails
  • Open source, MIT, built entirely from public NBIM data

Next.js 16 · React 19 · TypeScript · MapLibre GL · Playwright

032026

Runs your heavy jobs when Norwegian electricity is cheapest.

Give a backup or other heavy job a deadline, and the scheduler picks when to run it using electricity prices. Unfinished and on hold for now.

How I built it: spotwatt

Backups, video conversions, and training runs can often wait until electricity is cheaper. You set a deadline, such as 07:00, and the scheduler uses Nord Pool prices to decide when to start.

  • Rechecks every 60 seconds as new prices become available
  • Scheduling decisions are tested independently of the clock and database
  • Cost estimates include grid tariffs, electricity tax, and strømstøtte
  • The repository documents the limits of the expected savings in docs/CRITIQUE.md

Rust · axum · SQLite · htmx

042025

Drop in a MIDI file, get the key.

Find the likely key using a MIDI file or live MIDI input.

How I built it: MIDI Scale Finder

The detector weights notes by emphasis and duration instead of counting each note equally. This helps when a passage includes notes outside the main key.

TypeScript · Web MIDI API

Build notes

All writing ↗

Building a Map for YouTube Videos

How I built Toobmap, a project that syncs travel videos with interactive maps using metadata, captions, and AI-assisted location extraction.