Skip to content
View johncarmack1984's full-sized avatar

Highlights

  • Pro

Organizations

@vegify

Block or report johncarmack1984

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
johncarmack1984/README.md

John Carmack

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: a lot of Martin (mostly the 2.0 release) and custom projections in MapLibre GL JS.

Open source

MapLibre voting member since August 2026. Counts below are merged PRs and link to the receipts.

  • maplibre/martin - 120 since July 2026: tile caching, PMTiles on S3 and Lambda, tile grids beyond Web Mercator, a Rust harness for the e2e tests, and the 2.0 cleanup and migration guide.
  • maplibre/maplibre-gl-js - 40: rebuilt the benchmark suite on Vitest bench, then render-path work (integer vertex attributes, terrain elevation sampling, a CPU raycast replacing framebuffer picking) and custom projections for non-Mercator tile grids.
  • maplibre/maplibre-agent-skills - 19: eval-gated releases and an upstream release watch.
  • biomejs/biome - 16: Tailwind v4 class sorting in useSortedClasses (variants, container queries, the ! suffix).
  • specta-rs/specta - 14 toward 2.0-stable: enum rendering fixes, zod 4 output, the OpenAPI exporter, a bigint remapper.
  • maplibre/maplibre-tile-spec - 11: the mlt terminal UI (background scanning, a decoded-tile cache, layer summaries, tessellation drawing).

Featured work

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.
  • sidework - a Claude Code skill that runs each task in a git worktree beside the checkout, because one nested inside it can pick up the checkout's Cargo config, just recipes, and node_modules. Evals included.

Geospatial / GPU

  • 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 tracing crate. 32k 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.

Frontend

  • tradecn/ui - trading-terminal components for shadcn/ui: grids that take a feed, prices in 32nds, scoped hotkeys, order tickets. shadcn add copies the source into your repo. Docs and demos.

Benchmarks

  • warefeats - benchmarks for developer tools with the runs attached: Redis vs Valkey vs Dragonfly, Martin vs Tegola vs BBOX, MapLibre vs Mapbox, Tauri vs Electron, ESLint vs Biome, Varnish vs NGINX. Every result names the rig, pins the versions, and publishes every pass.

Shipped (all since July 2026)

  • lux - DMX stage lighting, on the App Store for iOS and macOS. Rust, Tauri, and an Enttec or sACN/Art-Net node, auto-detected.
  • vegify.app - plant-based nutrition tracking, on the App Store.
  • Message to PDF - exports an iMessage or SMS conversation to a PDF that looks like Messages, all on your Mac. GPL-3.0 on GitHub, with a signed build for sale.

Before this: primary author of a safety-critical aviation flight-planning desktop app, lone architect of a real-time analytics platform.

Stack

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

Reach me

johncarmack.com | linkedin.com/in/johncarmack1984

Pinned Loading

  1. lux lux Public

    RGBAW DMX lighting controller — drives an Enttec Open DMX USB or sACN/Art-Net network node (auto-detected). Built with Rust, Tauri, and shadcn/ui. On the App Store for iOS and macOS.

    Rust 3

  2. llm-extract-evals llm-extract-evals Public

    Schema-validated LLM extraction eval harness (Anthropic Claude): failure taxonomy (correct/missing/wrong/hallucinated), per-field accuracy, deterministic offline replay, cost/latency accounting, an…

    TypeScript 1

  3. specta-rs/specta specta-rs/specta Public

    Easily export your Rust types to other languages

    Rust 641 71

  4. maplibre/maplibre-gl-js maplibre/maplibre-gl-js Public

    MapLibre GL JS - Interactive vector tile maps in the browser

    TypeScript 11.8k 1.3k

  5. maplibre/maplibre-agent-skills maplibre/maplibre-agent-skills Public

    Community-maintained agent skills for MapLibre GL JS — helping AI coding assistants write better mapping code

    JavaScript 150 10

  6. maplibre/martin maplibre/martin Public

    Blazing fast and lightweight PostGIS, MBtiles and PMtiles tile server, tile generation, and mbtiles tooling.

    Rust 4k 401