JavaScript Jabber

Running Doom in TypeScript’s Type System with Dimitri Mitropoulos - JSJ 684

JavaScript Jabber

Show Notes

What if I told you someone managed to run Doom inside TypeScript’s type system? Sounds insane, right? That’s exactly what our guest Dimitri Mitropoulos did—and in this episode, we dive deep into the how, the why, and the mind-bending implications of this ambitious project. From type-level programming to the philosophical limits of Turing completeness, this is an episode that pushes the boundaries of what you thought was possible in JavaScript.

We talk about how the TypeScript type system evolved to become Turing-complete, how Dimitri pulled off this seemingly impossible feat, and why “Doom-complete” might just be the new gold standard for computational capability. Along the way, we touch on functional programming, generics, recursion, and even some Lambda Calculus. It’s part computer science theory, part coding madness, and 100% geeky goodness.

Episode Highlights [3:05] – Dimitri explains how a simple thought experiment turned into a year-and-a-half-long obsession [8:40] – The origins and significance of Turing completeness in type systems [14:15] – Why running Doom in TypeScript is more about proving limits than just showing off [19:55] – What it means to run programs inside the type system vs. TypeScript code itself [27:10] – ASCII art as output, functional recursion for game state, and hover-over frames in your editor [35:30] – How ignorance, determination, and obsession fueled the completion of the project [45:20] – Personal insights: balancing family, burnout, and passion while chasing an impossible dream

Links & Resources Dimitri Mitropoulos Michigan TypeScript YouTube Channel – Dimitri's channel featuring the project Type Challenges by Anthony Fu – Advanced TypeScript exercises SquiggleConf – The TypeScript-focused conference Dimitri co-founded Josh Goldberg – TypeScript expert and co-organizer of SquiggleConf

Become a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.

More from JavaScript Jabber

Feb 25, 2026

This week on JavaScript Jabber, we’re joined (again!) by Val Karpov — the maintainer of Mongoose — to talk about what’s new in Mongoose 9, how async stack traces are changing the debugging game, and why AI is quietly reshaping the way we build developer tools.

Feb 10, 2026

In this episode of JavaScript Jabber, I sat down with Matteo Collina—chair of the Node.js project and founder of Platformatic—for a deep, no-fluff conversation about Node.js performance in the real world. We dug into what actually happens when you run Node at scale, especially with server-side rendering, Kubernetes, and modern frameworks like Next.js.

Jan 30, 2026

It’s great to be back behind the mic! In this episode of JavaScript Jabber, I’m joined by Dan Shapir and our guest Jack Harrington from Netlify and TanStack for a wide-ranging, high-energy conversation that covers everything from modern frontend architecture to AI tooling—and a few entertaining detours along the way.

Jan 8, 2026

In this episode of JavaScript Jabber, I sat down with Shruti Kapoor, independent content creator and longtime React educator, to dig into what’s actually new — and worth getting excited about — in React 19.2. While it may sound like a “minor” release on paper, this update delivers some genuinely powerful improvements that can change how we build and reason about React apps.

Dec 24, 2025

AI is writing more of our code than ever before—but should we actually trust it? In this episode of JavaScript Jabber, I sat down with Itamar Friedman from Qodo (formerly Quoto) to dig into one of the biggest questions developers are wrestling with right now: What happens when AI is generating code, reviewing code, and shaping how we ship software?

See all episodes →