Field Notes
From the bench
Long-form write-ups on spatial tooling, web mapping, data visualization, and the occasional 3D-printed mountain range.
Skywatch: real-time 3D viewshed analysis in the browser
An R&D project computing what's visible across terrain as a live 3D mesh — one Rust core compiled to both a CLI and WebAssembly, rendered with Three.js.
3D Printing Vancouver Island
A GIS-to-physical-model journey: turning a digital elevation model into a multi-tile, two-colour 3D print with QGIS, custom Python, and a Bambu P1S.
Morphing Between SVG Shapes
Smoothly animating from one SVG shape to another comes down to a single rule — both paths need the same number of nodes.
Animating a Geographic Boundary into a Circle
A D3 + SVG technique for morphing a geographic boundary into a circle and back again — building both paths from the same set of nodes.
Creating a Terrain Wetness Index from a DEM
Deriving a topographic wetness index from a digital elevation model in GRASS by combining mean-elevation variance with aspect variance.
Calculating Topographic Exposure with GRASS
Modelling topographic exposure (TOPEX) from a DEM with GRASS, r.mapcalc neighbourhood operations, and a little trigonometry.