Technologies

The stack listed on the Resume is the what. This page is the why: the principles that decide what makes it onto a project, and the references that shaped those principles.

Approach → choices

Choices are pragmatic — what serves the data and the decision, not what is fashionable. A handful of principles do most of the work:

  • Open standards over vendor lock-in. OGC, INSPIRE, GeoParquet, MapLibre over proprietary equivalents. Migrations and handovers are cheap when the format is portable; expensive when it is not.
  • Columnar and cloud-native by default. Parquet for archive, DuckDB for in-process query, Iceberg/DuckLake for tabular catalogs at scale.
  • Reproducible infrastructure. Builds are deterministic from source — parquet generators in Python, sources catalogued as code, deployment as object-bucket sync.
  • Cost-transparent serving. Static content where possible. The portfolio site itself for example has no runtime backend; the bucket is the deployment target.

Architecture

A representative (yet simplified) ingest-to-serve pipeline that recurs across client engagements: Airflow orchestrating ephemeral container jobs, parquet as the staging format across layers, PostGIS as the serving store, with object storage as the spine. I've built every layer end-to-end, from ingest through to data analysis and customer engagement.

Rendering diagram…

This site's own architecture

A different shape entirely — no Airflow, no PostGIS, no API. The data layer is a folder of parquet files; DuckDB executes every SQL query in every page at build time; Evidence emits a static SvelteKit site; a CRON job re-runs the build daily and rsyncs the output into an Object Storage bucket. Walk-through on How this site is built.

Rendering diagram…

Bookmarks and influences

A curated set of references behind the choices above — open data registries, extraction and serving tooling, AI plumbing, and a couple of well-built sample sites worth looking at.

Data sources

  • Source Cooperative Public-interest data registry: large open geospatial datasets shared via cloud-native formats and STAC.

Data extraction tools

  • GeoParquet Specification for cloud-native, columnar storage of vector geospatial data on top of Apache Parquet.
  • QuackOSM DuckDB-powered CLI / Python library that turns OSM PBF extracts into GeoParquet with SQL-style filters.
  • osm-geoparquet Scripts and notes for staging OpenStreetMap data into GeoParquet, optimised for analytical queries.

Data serving

  • DuckDB · Quack overview DuckDB's geospatial story — in-process analytical SQL over Parquet, GeoParquet, and remote stores.
  • TiPg OGC Features and Tiles API server backed by PostGIS — a lightweight FastAPI alternative to GeoServer.

AI tools

  • GSD-2 Geospatial Software Designer — agentic workflows for spatial engineering, second iteration.
  • Skills.lc Catalogue of Claude Code skills and agent patterns — a starting point for assembling reusable AI workflows.

Python dev tools

  • usethis-python Opinionated bootstrapper for Python projects: tooling, layout, configs — declarative, idempotent.

Cool samples

  • OpenGridWorks · power plants Interactive map of US power infrastructure with toggleable layers for transmission, substations and right-of-way.
  • isochrone.ch Public-transport reachability isochrones for Switzerland — clean SBB-data-driven travel-time visualisation.