Projects

Built to observe the world

Cameras, maps, radio receivers, astronomy and precise time—small systems built from hardware, open data and software that I run myself.

Remote camera · Svolvær, Lofoten

HDR through the polar night

A Raspberry Pi High Quality Camera installed at a cabin in Svolvær is driven by custom software that processes its images with OpenCV. The HDR (high dynamic range imaging) pipeline keeps useful detail across bright snow and town lights, deep mountain shadows and the night sky, producing pictures that work through both the short winter days and long Arctic nights.

The preview is from an aurora sequence recorded on 10-11th of January 2026.

  • Raspberry Pi
  • HQ Camera
  • OpenCV
  • HDR
Green aurora over mountains and illuminated shoreline in SvolværWatch on YouTube
Aurora over Svolvær, captured by the HDR camera system.

Live camera · Oslofjord

A long view towards Mefjordbåen

A second Raspberry Pi and HQ Camera watch the Mefjordbåen light in the Oslofjord, south of Moss and Slagentangen. The Vallø peninsula outside Tønsberg fills the middle distance.

The live feed is delivered as HTTP Live Streaming.

  • Raspberry Pi
  • HQ Camera
  • HLS
Daylight view across the Oslofjord towards the Vallø peninsulaLive view

Live view across the Oslofjord towards Vallø.

Live radio data · Oslofjord

AIS from shore to screen

This live map combines vessel positions from Kystverket with signals received locally. The receiver uses an RTL-SDR and rtl-ais; my API turns the decoded reports into frequently refreshed GeoJSON for the browser.

The map also shows the receiver and camera fields of view alongside the vessels. The live application loads here immediately and polls fresh vessel data in its own MapLibre renderer.

  • AIS
  • RTL-SDR
  • rtl-ais
  • GeoJSON
  • MapLibre GL JS
Live AIS data from Kystverket and the local receiver.

Self-hosted cartography · Whole planet

From planet.osm.pbf to an interactive map

The pipeline starts with the official planet.osm.pbf dump from OpenStreetMap. tilemaker converts it into vector tiles following the lean Shortbread schema. The result is packaged as one PMTiles archive and rendered in the browser with MapLibre GL JS.

The vector data and map fonts are served from my own infrastructure.

  • OpenStreetMap
  • tilemaker
  • Shortbread
  • PMTiles
  • MapLibre GL JS
Tønsberg, Norway.

Backend service · Python

One API for time, sky, satellites and ships

My 22pF API is a home for various hobby projects: astronomy calculations, satellite and Starlink observations, AIS vessel data, geocoding and magnetic declination. It is built with FastAPI; Skyfield and Astropy handle astronomical and orbital work, while pyais decodes AIS messages.

The interactive OpenAPI documentation is both a reference and a practical test bench for the service.

  • Python
  • FastAPI
  • Skyfield
  • Astropy
  • pyais
FastAPI documentation showing health and astronomy endpointsAPI v3.3.3
Live OpenAPI documentation for the 22pF backend.

Precision time · HP Z3805A

A laboratory reference disciplined by GPS

My HP Z3805A is a GPS-disciplined oscillator connected to an antenna on the roof. It continually steers a stable oven-controlled crystal oscillator against GPS time, combining clean short-term behaviour with a long-term reference to produce a precise 10 MHz frequency reference and 1 PPS timing output for instruments and computers.

My monitor page presents the instrument’s on-board diagnostics screen, including satellite tracking, GPS lock, oscillator health, holdover estimates and the current 1 PPS time interval. It is available only while the GPSDO is switched on.

  • HP Z3805A
  • GPS
  • OCXO
  • 10 MHz
  • 1 PPS
Green terminal display showing the HP GPSDO locked to GPSOn-board diagnostics
The Z3805A diagnostics display, when online.