Skip to main content
Syntax

969: This guy is nuts (TypeScript Doom)

55 min episode · 2 min read
·
Dimitri Metropolis

Episode

55 min

Read time

2 min

Topics

Software Development, Science & Discovery

AI-Generated Summary

Key Takeaways

  • TypeScript Type System Performance: TypeScript types can create matrix multiplications generating hundreds of thousands of union members, causing 100+ second compile times. A five-line fix removed 100 seconds from CI by eliminating accidental type explosions from utility type usage.
  • TypeSlayer Diagnostic Tool: Built in Tauri with Rust backend, TypeSlayer processes multi-gigabyte trace files to expose hidden TypeScript complexity errors that developers silence with TS-ignore comments, revealing performance bottlenecks that slow CI and editor responsiveness without fixing underlying issues.
  • Packaging Native Binaries via NPM: Publish platform-specific binaries as separate NPM packages (like @typeslayer/linux-x64, @typeslayer/darwin-arm64) with a 30-line post-install script detecting user platform. This delivers 9MB executables instead of 200MB+ Node bundles, matching ESBuild's distribution strategy.
  • WebAssembly Runtime in Types: Building Doom required creating a complete WebAssembly runtime purely in TypeScript types, processing 177 terabytes of type data. The project proves practical Turing completeness beyond mathematical theory, demonstrating types can handle physics engines, texture mapping, and sprite systems.

What It Covers

Dimitri Metropolis explains how he built Doom running entirely in TypeScript's type system, taking 11.5 days to compile, and introduces TypeSlayer, a diagnostic tool for identifying TypeScript performance bottlenecks in large codebases.

Key Questions Answered

  • TypeScript Type System Performance: TypeScript types can create matrix multiplications generating hundreds of thousands of union members, causing 100+ second compile times. A five-line fix removed 100 seconds from CI by eliminating accidental type explosions from utility type usage.
  • TypeSlayer Diagnostic Tool: Built in Tauri with Rust backend, TypeSlayer processes multi-gigabyte trace files to expose hidden TypeScript complexity errors that developers silence with TS-ignore comments, revealing performance bottlenecks that slow CI and editor responsiveness without fixing underlying issues.
  • Packaging Native Binaries via NPM: Publish platform-specific binaries as separate NPM packages (like @typeslayer/linux-x64, @typeslayer/darwin-arm64) with a 30-line post-install script detecting user platform. This delivers 9MB executables instead of 200MB+ Node bundles, matching ESBuild's distribution strategy.
  • WebAssembly Runtime in Types: Building Doom required creating a complete WebAssembly runtime purely in TypeScript types, processing 177 terabytes of type data. The project proves practical Turing completeness beyond mathematical theory, demonstrating types can handle physics engines, texture mapping, and sprite systems.

Notable Moment

Metropolis discovered JavaScript 1.0 in Netscape Navigator 2.0 lacked arrays, undefined, exceptions, switch statements, and first-class functions by booting Windows 95 in a VM. The language considered foundational to modern web development started with almost nothing functional.

Know someone who'd find this useful?

Episode Transcript

Welcome to Syntax. Today, we have a really good one for you. We have Dimitri Metropolis here. He is the mastermind behind Doom and TypeScript along with TypeSlayer and a bunch of other it just wizardry. Just straight up wizardry. So we're gonna be getting into all kinds of TypeScript topics, but even getting into local meetups and, just a lot of cool stuff. Dimitri is incredible. So Dimitri, do you wanna give us a little, rundown of who you are and what you do? Yeah. I'm a TypeScript developer, whether I like to be or not. I've tried so many times over the years to, you know, go in other directions, but it's so near and dear to my heart. I've been doing this since, like, the Angular one point o days. I used to be die hard on that. Multidisciplinary is is the thing that I like to do. So I like trying new things that I've never experienced before. That's we'll get into it. But the doom and test script types project came out of that. Like, so many of the things that were necessary for that, I had no idea about before I started. And, I live in Michigan. Yeah. Love the cold weather. Hell, yeah. Yeah. Yeah. Are you you from Michigan originally? I sure am. Yeah. I went to Massachusetts for grad school. So well, undergrad. So I have four degrees in things that are not computer science. Crazy. Yeah. So I was like, definitely like to learn, but, you know Yeah. That's then I came back. I'm from Brighton, Michigan originally. Oh, cool. So I grew up in that area. My wife's from Canton. So we Yes. Very Michigan people. My parents are still over there. Love to get to Ann Arbor anytime we can. So, doom in TypeScript. For people who may have not seen this, can you explain what the hell that means? This is literally, to preface this, this is absolutely nuts that you did this, and anyone listening should, like, buckle up. So go ahead. I wake up sometimes in the morning, and I think to myself, like, it's been a year since that was complete more. And I sometimes think wake up, and I think, I wonder if it's possible. And that's probably the best way to explain it. It's a thing that you would think something like that about. You just, like, it's I had this nagging thought. I wonder if it's possible. And actually, almost I mean, basically, the entire time I thought it wasn't possible. So what's the what? The what is Doom is a game, you know. It shows pixels on your screen. You type you push keys on your keyboard and things happen inside the game engine. Okay? Like, abstractly, that's what it is. And TypeScript is, you know, people have to separate type the type system and the runtime language we call JavaScript. So, like, when I say TypeScript, I'm talking about …

Get the full transcript (11,573 words) + summary by email — free

One-time email with the complete transcript and AI summary of this episode. No account needed.

One email, no spam. We’ll also show you what SignalCast does.

Browse all Syntax transcripts →

You just read a 3-minute summary of a 52-minute episode.

Get Syntax summarized like this every Monday — plus up to 2 more podcasts, free.

Pick Your Podcasts — Free

Keep Reading

Books, tools, and gear mentioned in this episode

SignalCast may earn commission on purchases via these links.

Tools

  • TypeSlayerRecommendedBy guest
    Dimitri Metropolis explains how he built Doom running entirely in TypeScript's type system, taking 11.5 days to compile, and introduces TypeSlayer, a diagnostic tool for identifying TypeScript performance bottlenecks in large codebases.
  • SPONSORS: Sentry (https://sentry.io/syntax)
  • This delivers 9MB executables instead of 200MB+ Node bundles, matching ESBuild's distribution strategy.
  • Built in Tauri with Rust backend, TypeSlayer processes multi-gigabyte trace files to expose hidden TypeScript complexity errors.

More from Syntax

We summarize every new episode. Want them in your inbox?

Similar Episodes

Related episodes from other podcasts

Explore Related Topics

This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.

Read this week's Software Engineering Podcast Insights — cross-podcast analysis updated weekly.

You're clearly into Syntax.

Every Monday, we deliver AI summaries of the latest episodes from Syntax and 192+ other podcasts. Free for one show.

Start My Monday Digest

No credit card · Unsubscribe anytime