Now with a sea floor
Vancouver Island reprinted a metre wide: real bathymetry merged into the terrain, six elevation colours, and 46 tiles cut by a single Rust binary.
Read the write-up
I build map software for governments and companies that have to get the geography right. Based on Vancouver Island, since 1998.
Central Vancouver Island from over the Strait of Georgia, looking south-west. Rendered with terrain2image from a custom merge of 1 m LiDAR along the coast, the provincial elevation model and CHS NONNA bathymetry. Late-August morning sun. Vertical exaggeration 1.5 times.
Four kinds of work. Each one has something live you can open.
Interactive maps that mix public web services with your own data and stay fast at scale.
Open the web mapCross-platform apps on the modern web, like Skywatch, a 3D viewshed tool that runs entirely in the browser.
Open SkywatchGraphs, heatmaps, diagrams and flow charts. All interactive, all on the web.
Open the Pottymouth demoUnsurveyed ground. Playing with new tech is how the useful ideas get found.
Open the CodePen sketchFrom provincial GIS to browser-native terrain, without leaving the island.
Starts in provincial GIS, the long way round to the web.
Begins fourteen years of New Zealand fisheries and field-data platforms for Lat37.
A real-time variable-speed-sign API and corporate spatial web for BC Transportation.
BC Road Value Assessment for the Ministry of Forests, as sole developer. Still running.
Telecom planning across six African nations, and the bcgov open-source years.
Skywatch, a WebGL viewshed engine, and a metre-wide Vancouver Island with its sea floor.
Commit counts come from public bcgov repositories. Stars come from GitHub, fetched 26 October 2026.
| Repository | What it does | Language | Stars |
|---|---|---|---|
| maplibre-transition | Animated transitions plugin for MapLibre | TypeScript | 20 |
| polymorph | Morphs one SVG path into another, from a 2015 Field Note | LiveScript | 18 |
| gobble | Code from a Linux Journal article on watching processes remotely | Perl | 6 |
| maptiler-js | Works out which map tiles cover a given extent | Python | 5 |
| geojson2czml | Converts GeoJSON to CZML for Cesium | LiveScript | 4 |
Long write-ups on spatial tooling, mapping and the occasional 3D-printed mountain range. Since 2011.
Vancouver Island reprinted a metre wide: real bathymetry merged into the terrain, six elevation colours, and 46 tiles cut by a single Rust binary.
Read the write-upOne Rust core compiled to both a CLI and WebAssembly, painting what is visible across terrain in real time.
From a digital elevation model to a multi-tile, two-colour print with QGIS, custom Python and a Bambu P1S.