1. Home
  2. Tools

Built for the field

Software I wrote because a job on site needed it. Each one started as a specific problem: a data gap no one could see, two XRF guns that didn’t agree, a report that quietly carried last year’s numbers.

  1. T-01

    Soil Sampling Planning Tool

    An interactive map for planning soil sampling at a mercury-mine Superfund site — combining current and historical data to surface data gaps and place new sample points, right in the browser.

    The problem Field teams needed a fast way to see where data already existed, spot the gaps, and plan new sample locations across a large investigation area — without standing up GIS software.

    JavaScript · Leaflet.js · GeoJSON · HTML

  2. T-02

    XRF Data App

    A browser app that reconciles handheld-XRF field readings against a master tracker — linking thousands of readings to samples for browsing, QC, and export.

    The problem Two XRF guns produced raw CSV exports that had to be matched to a master spreadsheet by serial number and reading number — tedious, slow, and error-prone by hand.

    JavaScript · Python · openpyxl · CSV · HTML

  3. T-03

    Soil Contamination Visualizer

    A self-contained figure tool that loads GeoJSON soil data and renders contamination maps and figures, filtered live by analyte, sampling round, and threshold.

    The problem Producing consistent contamination figures from sampling data was slow and manual — the team needed quick, filterable visuals they could regenerate as data changed.

    JavaScript · GeoJSON · HTML

  4. T-04

    Boring Data Explorer

    A geospatial explorer for subsurface boring records — a clustered map with filtering, side-by-side comparison, saved views, and export, built as an installable PWA.

    The problem Reviewing subsurface boring data meant digging through static files; the team needed an interactive, shareable way to explore and compare borings.

    JavaScript · GeoJSON · Leaflet · PWA

  5. T-05

    Cyclic Report QC Tool

    A Python utility that diffs a new regulatory report against the prior cycle paragraph-by-paragraph and color-codes changes, so stale carryover gets caught before submittal.

    The problem Recurring compliance reports silently carry stale, copy-pasted values from the previous cycle — a quality risk that’s invisible on a clean read.

    Python · Document diffing · QA/QC

  6. T-06

    This Portfolio

    Designed and built this site end to end: a static site with a hand-written WebGL terrain of California, and a browser-based Studio I use to publish from the field.

    The problem I wanted one place to present project work and writing that I could keep current myself, from a laptop or a phone on site, without it looking like a template.

    Astro · TypeScript · WebGL2 · React (Studio) · Cloudflare