AI/LLM and geospatial/GPU software engineer. Rust and TypeScript. I build production LLM systems, GPU map rendering, and the cloud infrastructure that runs them. Remote, based in Waco, TX.
Not the Doom guy. Different guy.
Currently: production LLM tooling (the boring reliability parts), a weather + energy data platform, and a lot of Martin.
MapLibre voting member since August 2026. Counts below are merged PRs and link to the receipts.
- maplibre/martin - 42 since July 2026: tile caching, PMTiles on S3 and Lambda, font aliases, a Rust harness for the e2e tests, and a self-hosted basemap tutorial.
- maplibre/maplibre-gl-js - 19: rebuilt the benchmark suite on Vitest bench, then render-path work (integer vertex attributes, terrain elevation sampling, a CPU raycast replacing framebuffer picking).
- specta-rs/specta - 14 toward 2.0-stable: enum rendering fixes, zod 4 output, the OpenAPI exporter, a bigint remapper.
- biomejs/biome - 13: Tailwind v4 class sorting in
useSortedClasses(variants, container queries, the!suffix). - maplibre/maplibre-agent-skills - 10: eval-gated releases and an upstream release watch.
AI / LLM
- promptward - an LLM gateway that catches prompt injection and data exfiltration, validates structured output, and meters cost. Wire-compatible with the OpenAI and Anthropic SDKs. The eval harness proves the detection rate. Live.
- llm-extract-evals - schema-validated LLM data extraction with a confidence-gated evaluation harness: per-field accuracy, failure taxonomy, deterministic offline replay.
Geospatial / GPU
- stormdeck - live weather radar, alerts, and wind on a deck.gl map. Vector tiles served from AWS Lambda on the free tier.
- geo-desktop-bench - benchmarks for the fastest geospatial desktop stack: deck.gl and MapLibre on WebGL2, Tauri vs Electron, DuckDB and PMTiles. Report and demos.
- deck-wind-layer - a deck.gl v9 wind-particle layer: GPU advection, comet trails, constant on-screen density at any zoom.
- glslint - a GLSL checker and language server that understands deck.gl/luma.gl shader modules (Rust).
Rust / systems
- tauri-plugin-tracing - logging for Tauri through the
tracingcrate. 28k downloads on crates.io. - tauri-typed-ipc - trait-based, type-safe Tauri IPC built on specta. Sync by default, async opt-in.
- typed-geojson - strongly-typed GeoJSON for Rust (
Feature<G, P>/FeatureCollection), specta-compatible. - accept-payments - a payments and invoicing API in Rust/Axum on the AWS Lambda Rust runtime.
Benchmarks
- warefeats - benchmarks for developer tools with the runs attached: Redis vs Valkey vs Dragonfly, Martin vs Tegola vs BBOX, ESLint vs Biome, Varnish vs NGINX. Every result names the rig, pins the versions, and publishes every pass.
Shipped, in the App Store (both since July 2026)
- lux - DMX stage lighting for iOS and macOS. Rust, Tauri, and an Enttec or sACN/Art-Net node, auto-detected.
- vegify.app - plant-based nutrition tracking.
Before this: primary author of a safety-critical aviation flight-planning desktop app, lone architect of a real-time analytics platform.
Rust, TypeScript, React, Tauri, Node, Python | deck.gl, luma.gl, MapLibre, WebGL, PMTiles | Axum, Tokio, PostgreSQL | AWS (Lambda, CDK), Terraform, GitHub Actions | LLM production: extraction, evaluation, structured output, injection defense
johncarmack.com | linkedin.com/in/johncarmack1984
Open to staff, principal, and lead roles, and to contract work. Remote. If you're hiring for maps, LLM reliability, or Rust on AWS, that's the good stuff.



