Spatial Derive
A walking instrument that makes the phone already in your pocket a way to record the street's sensory texture, the layer satellites and administrative data leave out, by deepening attention rather than optimising a route.
- Period
- 2023–present
- Role
- Founder and artist-technologist
- Scale
- Body, street and city
- Context
- Artistic practice, Research, Product

Open the full artefact in a new tabInterface study for publishing a drift as route, fragments, affect and citation.
Source: working Derive repository. This demonstrates the publication grammar, not a verified walk.Inspect full plate (opens in a new tab)Founder and artist-technologist
- Deployed mobile-first PWA at spatialderive.city, built from roughly 132 React components, 103 library modules and 34 sensor, media and narrator hooks.
- Local-first persistence in IndexedDB with 11 export formats: GeoJSON, CSV, a data dictionary, RISO zine, fold-imposed PDF, countermap, poster, social, print, animation and full bundle.
- A documented decision trail of 22 ADRs plus a drafted DPIA for Article 9 physiological data, with aggregate-release thresholds (k of at least 20, epsilon of 1, H3 resolution 8) written into the design rather than bolted on.
- Test coverage of 87 unit test files and 13 Playwright end-to-end specs across the application.
Spatial Derive is the umbrella practice; the public Derive app is one evolving prototype within it, not a finished or peer-reviewed research claim. The DPIA is a draft pending UK data-protection-lawyer review before any production physiological-data launch, and several research metrics are partially instrumented rather than validated.
Satellite imagery and administrative datasets describe a city from above and at scale, but they omit the micro-scale, embodied texture of a street as a body actually moves through it, and the dominant map tools we do carry are built to optimise for the fastest route rather than attention. The task was to build a walking instrument that uses the phone already in a walker's pocket to record that omitted sensory layer and to deepen situated attention, without collapsing into another navigation product, and while treating location, captured media and consent with real care.
My contribution
I designed and built Spatial Derive as a practice and its public prototype, Derive: a mobile-first, local-first PWA (Next.js 16, React 19, TypeScript, Zustand, Dexie over IndexedDB) where the walk itself is the interface. I wired a location-aware narrator that observes and questions rather than instructs, routed by tier across Claude for hero narration, cheaper Gemma and Llama for bulk, and on-device transformers for offline, alongside a generative Tone.js soundscape and a Meyda and FFT acoustic classifier mapped toward the ISO 12913-2 soundscape axes, plus a drift-analysis layer computing GPS entropy, sinuosity, pause clusters and step cadence from raw sensor streams. I authored the privacy architecture myself: three separate, unbundled consent acts, a hash-chained consent ledger, and a Data Protection Impact Assessment for Article 9 UK GDPR physiological data captured through a bring-your-own-wearable ladder, with raw R-R intervals discarded on-device and any aggregate release gated at k of at least 20, epsilon of 1 and H3 resolution 8. I also built the counter-cartographic outputs that let a drift leave the screen as a printed object: eleven export formats spanning GeoJSON, CSV, a data dictionary, RISO-style zines, fold-imposed PDFs and printable countermaps.
Decisions and constraints
Decisions I made
- Made walking the primary interface and shaped the narrator to observe and question rather than optimise a route, so the tool deepens attention instead of removing it.
- Went local-first by default, deriving sensitive signals on-device so raw data stays on the phone, and treated consent friction as a feature: three separate unbundled acts (GPS, physiological, per-drift research contribution), no pre-ticked boxes, no dark patterns.
- Routed AI by tier (Claude for hero narration, Gemma and Llama for bulk, on-device transformers for offline) to keep a costly capability affordable and still functional with no signal.
- Grounded every metric in an existing research tradition (Lynch, Gehl, Hillier, Lefebvre, the Russell circumplex, ISO 12913-2) and kept the app legible as a research instrument, recording each non-trivial choice as one of 22 ADRs rather than presenting it as a finished claim.
Operating constraint
Everything has to run on a phone in public space, stay legible while walking, and treat location, captured fragments and opt-in physiological signals lawfully and locally, with raw sensitive data never leaving the device by default.
Claim boundary: Spatial Derive is the umbrella practice; the public Derive app is one evolving prototype within it, not a finished or peer-reviewed research claim. The DPIA is a draft pending UK data-protection-lawyer review before any production physiological-data launch, and several research metrics are partially instrumented rather than validated.
Evidence
- Deployed mobile-first PWA at spatialderive.city, built from roughly 132 React components, 103 library modules and 34 sensor, media and narrator hooks.
- Local-first persistence in IndexedDB with 11 export formats: GeoJSON, CSV, a data dictionary, RISO zine, fold-imposed PDF, countermap, poster, social, print, animation and full bundle.
- A documented decision trail of 22 ADRs plus a drafted DPIA for Article 9 physiological data, with aggregate-release thresholds (k of at least 20, epsilon of 1, H3 resolution 8) written into the design rather than bolted on.
- Test coverage of 87 unit test files and 13 Playwright end-to-end specs across the application.