Artwork

Content provided by Erik Onarheim and Kamran Ayub. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by Erik Onarheim and Kamran Ayub or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://ppacc.player.fm/legal.
Player FM - Podcast App
Go offline with the Player FM app!

DOOM.ts | Dimitri Mitropoulos | Ep 13

1:24:58
 
Share
 

Manage episode 477356992 series 3642378
Content provided by Erik Onarheim and Kamran Ayub. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by Erik Onarheim and Kamran Ayub or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://ppacc.player.fm/legal.

This week on the pod, we talk to Dimitri Mitropoulos about building DOOM in the TypeScript type system. We walk through all the nitty gritty and explore this truly amazing engineering feat! We touch on things that Dimitri learned and discovered along the way, and how you might be surprised what you can accomplish by trying! In the news, Zod 4 Beta drops with awesome new features.

Interview

00:00 Intro
00:37 SquiggleConf 2025
01:33 Personal News
05:34 Dimitri's Background and Michigan TypeScript
10:18 JSON Parser in TypeScript Types
10:55 Where do you start with DOOM in Types?
11:51 "DOOM" Complete
16:09 How do you run DOOM in TS?
20:15 Debugging an Emulator in TS Types
22:14 How does DOOM work?
23:54 Using Web Assembly

26:17 Understanding WebAssembly and TypeScript Integration
28:49 The Concept of Abstraction in Programming
31:03 Challenges in Implementing WebAssembly from the Spec
33:16 Ambiguities in Specifications and Their Impact
35:11 Debugging Techniques and Error Handling
37:06 Innovative Use of Overflow in Game Development
40:46 Insights Gained from TypeScript During the Project
43:49 The Complexity of TypeScript Types
49:18 Time Travel Debugging and Memory Management
51:20 The Most Challenging Aspects of the Project
55:16 Reactions to DOOM
01:00:28 The Dawn of TypeScript Go
01:10:33 Lessons Learned and Future Directions
01:17:45 Outro

Dimitri's Links

News

01:19:06 News for the Week of April 7th

01:24:29 Community Posts

01:27:54 Secret of the Handbook

  • https://www.pipe0.com/blog/never-in-typescript
  • https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types

01:29:36 Cool Stuff

01:30:28 Debugging and Performance Optimization Techniques
01:34:31 Post-roll
Excalibur Games

Sponsored by Excalibur.js
Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.

Music
Seahorse Dreams by Kubbi (Spotify)

Creators & Guests

  continue reading

20 episodes

Artwork
iconShare
 
Manage episode 477356992 series 3642378
Content provided by Erik Onarheim and Kamran Ayub. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by Erik Onarheim and Kamran Ayub or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://ppacc.player.fm/legal.

This week on the pod, we talk to Dimitri Mitropoulos about building DOOM in the TypeScript type system. We walk through all the nitty gritty and explore this truly amazing engineering feat! We touch on things that Dimitri learned and discovered along the way, and how you might be surprised what you can accomplish by trying! In the news, Zod 4 Beta drops with awesome new features.

Interview

00:00 Intro
00:37 SquiggleConf 2025
01:33 Personal News
05:34 Dimitri's Background and Michigan TypeScript
10:18 JSON Parser in TypeScript Types
10:55 Where do you start with DOOM in Types?
11:51 "DOOM" Complete
16:09 How do you run DOOM in TS?
20:15 Debugging an Emulator in TS Types
22:14 How does DOOM work?
23:54 Using Web Assembly

26:17 Understanding WebAssembly and TypeScript Integration
28:49 The Concept of Abstraction in Programming
31:03 Challenges in Implementing WebAssembly from the Spec
33:16 Ambiguities in Specifications and Their Impact
35:11 Debugging Techniques and Error Handling
37:06 Innovative Use of Overflow in Game Development
40:46 Insights Gained from TypeScript During the Project
43:49 The Complexity of TypeScript Types
49:18 Time Travel Debugging and Memory Management
51:20 The Most Challenging Aspects of the Project
55:16 Reactions to DOOM
01:00:28 The Dawn of TypeScript Go
01:10:33 Lessons Learned and Future Directions
01:17:45 Outro

Dimitri's Links

News

01:19:06 News for the Week of April 7th

01:24:29 Community Posts

01:27:54 Secret of the Handbook

  • https://www.pipe0.com/blog/never-in-typescript
  • https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types

01:29:36 Cool Stuff

01:30:28 Debugging and Performance Optimization Techniques
01:34:31 Post-roll
Excalibur Games

Sponsored by Excalibur.js
Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.

Music
Seahorse Dreams by Kubbi (Spotify)

Creators & Guests

  continue reading

20 episodes

All episodes

×
 
Loading …

Welcome to Player FM!

Player FM is scanning the web for high-quality podcasts for you to enjoy right now. It's the best podcast app and works on Android, iPhone, and the web. Signup to sync subscriptions across devices.

 

Quick Reference Guide

Listen to this show while you explore
Play