
Software Engineering Daily Running Doom in TypeScript with Dimitri Mitropoulos
32 snips
Nov 25, 2025 Dimitri Mitropoulos, a developer at Vercel and founder of Michigan TypeScript, shares fascinating insights on his audacious project of running Doom in TypeScript. He delves into the technical challenges of representing Doom within three trillion lines of types, utilizing TypeScript's literal types for frame computation. Dimitri also discusses the practicalities of advanced TypeScript, advocating for safer coding practices like exact optional property types. Additionally, he reveals his musical side in recording Doom's soundtrack, blending creativity with programming.
AI Snips
Chapters
Books
Transcript
Episode notes
Types Can Transform Data Beyond Validation
- TypeScript literal and mapped types let you transform values at the type level like string casing or complex transforms.
- Dimitri used those capabilities to make a type that outputs a Doom frame from Doom source encoded in types.
Doom-Completeness Beats Turing Labels
- Turing-completeness is often meaningless in practice without feasible resource bounds.
- Dimitri argues 'Doom Complete' (can it run a frame in a human lifetime) is a more practical metric.
Always Use Strict Mode
- Turn on TypeScript strict mode; without it you lose important guarantees and many benefits of TypeScript.
- Treat non-strict TypeScript as a compatibility shim, not full TypeScript.





