Zach Miller
Tools & Open Source

Geospatial Tools

Utilities and systems built around coordinates, imagery, and maps.

Tide — a live 3D globe with wildlife photos, earthquake data, and a real-time USGS event panel

Tide

A real-time geospatial streaming engine — the whole planet, live

A live globe streaming ships (AIS), aircraft (ADS-B), earthquakes (USGS), wildfires (NASA EONET), and wildlife photographs worldwide in real time. Six Rust crates built from scratch — hand-written R-tree spatial index, H3 hexagonal level-of-detail, crash-safe write-ahead log — under a custom raw-WebGL2 renderer that composites a live photo atlas in a single draw call.

100K+ entities at 60 fps~720 ns R-tree insertp99 6.3 ms fan-out · 250 clients × 25K events/s
Rust · tokio · TypeScript · WebGL2 · GLSLView source ↗
Garyville Coordinate Transformer — Site, State Plane, and Lat/Lon conversion

Coordinate Transformer

Three coordinate systems, one hand-rolled solver

Converts between a plant's local site grid, Louisiana State Plane, and WGS84 — powered by a least-squares affine solver fit to 16 ground-control points, with per-point residual reporting for surveying-grade transparency. One HTML file, zero libraries.

0.86 ft mean fit accuracy16 control points0 dependencies
Vanilla JS · custom least-squares
360° Pano CSV Generator — select site, process panoramas, export UTM positions

Cintoo 360° CSV Generator

From drone panoramas to a digital twin

Extracts GPS from 360° panoramas and projects WGS84 → UTM from first principles — ellipsoid math and meridional arc, no proj4 — to position imagery inside a Cintoo digital twin. Reads and writes straight to the photo folder from the browser. In company-wide use.

Vanilla JS · custom UTM projection · File System Access API
Photo to KMZ — bundle geotagged photos into a Google Earth file

Photo → KMZ

A folder of photos becomes a Google Earth flight path

Reads every geotagged JPEG in a folder and bundles them into a single .kmz — one pin per photo, full image embedded in each pin — using a hand-written EXIF/TIFF parser and a hand-written ZIP writer. No libraries, no server, no upload.

Vanilla JS · hand-written EXIF & ZIP

Fotmob Scraper

The data layer behind Hunch

Scrapes football data for ~1,400 World Cup players by exploiting Next.js build-ID JSON endpoints — rate-limited, SQLite-backed, and built on the Python standard library alone.

Python · stdlib only · SQLiteView source ↗