Hi. I'm John Carmack.

I'm a software engineer focused on production LLM/AI and geospatial/GPU systems. Rust and TypeScript, deck.gl and luma.gl, and the cloud infrastructure that runs them. Lately it's MapLibre: I'm a voting member, and most of my PRs land in the Martin tile server and MapLibre GL JS. Before that: primary author of a safety-critical aviation desktop application, lone architect of a real-time analytics platform.

Not the Doom guy. Different guy.

John Carmack, software engineer

Skills

Languages

RustRustTypeScriptTypeScriptJavaScriptJavaScriptPythonPython

GPU & geospatial

deck.gldeck.glWebGLWebGLMapLibreMapLibreD3.jsD3.js

Frontend & apps

ReactReactNext.jsNext.jsViteViteTailwind CSSTailwind CSSNode.jsNode.jsTauriTauri

Data

PostgreSQLPostgreSQLSnowflakeSnowflake

Cloud & DevOps

AWSAWSTerraformTerraformKubernetesKubernetesGitHub ActionsGitHub Actions

Projects

LLM / AI

promptward

promptward

RustRustTypeScriptTypeScriptReactReactViteVite
An LLM gateway that blocks prompt injection and proves the detection rate.

Web

sidework

sidework

A Claude Code skill that gives each task its own git worktree beside the checkout, not inside it.

Command Line Interface (CLI)CLI

Geospatial & GPU

deck-wind-layer

deck-wind-layer

TypeScriptTypeScriptdeck.gldeck.glWebGLWebGLluma.glluma.glViteVite
A deck.gl v9 wind-particle layer, advected on the GPU.

Web

glslint

glslint

RustRustTypeScriptTypeScriptdeck.gldeck.glluma.glluma.gl
A GLSL checker for the deck.gl and luma.gl shaders stock tools can't parse.

Command Line Interface (CLI)CLILibrary

geo-desktop-bench

geo-desktop-bench

RustRustTypeScriptTypeScriptdeck.gldeck.glMapLibreMapLibreWebGLWebGLluma.glluma.glTauriTauri
Finding the fastest geospatial desktop stack.

Web

typed-geojson

typed-geojson

RustRustTypeScriptTypeScript
Strongly-typed GeoJSON for Rust.

Library

Frontend

tradecn/ui

tradecn/ui

TypeScriptTypeScriptReactReactTailwind CSSTailwind
Trading-terminal components for shadcn/ui: grids that take a feed, prices in 32nds, order tickets.

WebLibrary

Apps

Lux

Lux

RustRustAxumAxumTypeScriptTypeScriptReactReactTailwind CSSTailwindTauriTauriTerraformTerraform
A DMX lighting controller: multi-fixture engine, sACN streaming, cloud sync.

macOSmacOSiOSiOS

Download on the App Store
vegify.app

vegify.app

RustRustAxumAxumTypeScriptTypeScriptReactReactTailwind CSSTailwindViteViteTauriTauri
Micronutrition tracking & recipe sharing for plant-based cooking.

WebiOSiOS

Download on the App Store
Message to PDF

Message to PDF

RustRustTauriTauriTypeScriptTypeScriptReactReactTailwind CSSTailwindAWSAWSTerraformTerraform
Export an iMessage or SMS conversation to a PDF that looks like Messages, all on your Mac.

macOSmacOS

Infrastructure & tooling

Manifest

Manifest

RustRustAxumAxumTypeScriptTypeScriptReactReactTailwind CSSTailwindViteViteAWSAWSAWS CDKCDK
Self-hosted AWS cost & inventory dashboard.

Web

accept-payments

accept-payments

RustRustAxumAxumStripeStripeTypeScriptTypeScriptReactReactAWSAWS
A Rust payments & invoicing API on AWS Lambda.

Web

tauri-typed-ipc

tauri-typed-ipc

RustRustTauriTauriTypeScriptTypeScriptViteVite
Type-safe Tauri IPC from a single Rust trait.

Library

Deep Freeze

Deep Freeze

RustRustAWSAWSTerraformTerraform
Migrate from Dropbox Business to S3 Deep Archive.

Command Line Interface (CLI)CLI

Open source

Merged into other people's codebases. Each title links to the pull requests on GitHub.

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.
Rebuilt the benchmark suite from scratch, resolving a two-year-old open issue, and landed all three Phase 1 graphics modernization milestones: integer vertex attributes, bitwise unpacking, and texelFetch for elevation. Most recently, custom projections for non-Mercator tile grids.
Eval-gated releases for the skills that help AI coding assistants write MapLibre code, plus an upstream release watch.
Added AddressSanitizer and LeakSanitizer CI, and fixed the ambient cache to respect the configured maximum size.
Merged work toward 2.0: the OpenAPI paths layer, OAS 3.1 by default, and a bigint remapper the maintainer now uses in his own serde_json tests.
Sharpening the useSortedClasses lint rule for Tailwind class order, including how same-utility values sort.