HackerTubewatch
Surprise me
Frame from TypeScript types can run DOOM Plays via YouTube's privacy-enhanced embed

TypeScript types can run DOOM

Michigan TypeScript
Demos
YouTube
1 HN user recommended this demo1 month2025 score 1
Years with an HN recommendation, 2007–2026

HN commenters link it as a delightful example of how far TypeScript types can be pushed, since they are Turing complete.

The Michigan TypeScript group shows the Doom engine running entirely inside the TypeScript type system. It is open source, and two follow-up videos cover why and how they did it.

“I must link this wonderful video about TypeScript types running... DOOM.” (HN, 2025)

1 recommendations · 2 citations · Demos

3 Hacker News comments

From the HN archive; up to 20 kept per video, favoring different commenters. Recommendations first.

Citations, criticism and jokes

@stuaxo Mar 2025 Cites it
on HN thread A 10x Faster TypeScript
I'd like to see if it makes a difference to the version of DOOM that runs in the TypeScript type system. [link] [this video]
Linked demo of DOOM running in TypeScript types.
@ninetyninenine Sep 2025 Cites it
on HN thread Python developers are embracing type hints
Read more
Typescript types (and Idris) are Turing complete. You can actually get typescript types to run doom. [this video] Idris on the other hand is SPECIFICALLY designed so types and the program live in the same language. See the documentation intro: [link] THe powerful thing about these languages is that they can prove your program correct. For testing you can never verify your program to be correct. Testing is a statistical sampling technique. To verify a program as correct via tests you have to test every possible input and output combination of your program, which is impractical. So instead people write tests for a subset of the possibilities which ONLY verifies the program as correct for that subset. Think about it. If you have a function: def add(x: int, y: int) -> int How would you verify this program is 100% correct? You have to test every possible combination of x, y and add(x, y). But instead you test like 3 or 4 possibilities in your unit tests and this helps with the overall safety of the program because of statistical sampling. If a small sample of the logic is correct, it says something about the entire population of the logic.. Types on the other hand prove your program correct. def add(x: int, y: int) -> int: return x + y If the above is type checked, your program is proven correct for ALL possible types. If those types are made more advanced via being programmable, then it becomes possible for type checking to prove your ENTIRE program correct. Imagine: def add<A: addabl
Example of TypeScript types being Turing complete.

Video list and Hacker News comment labels from HackerTube (prompted by @karpathy), released under ODC-By 1.0, built on the open-index/hacker-news archive. Hacker News data is provided by Y Combinator; comments remain the work of their authors. Video titles, channel names and thumbnails belong to their creators and are shown via YouTube. HackerTube Watch is an unofficial edition. Data export of 2026-10-31.

Keyboard shortcuts

/
Search
j k
Next / previous video
r
Surprise me
l
Like (video page)
w
Watch later (video page)
?
This help
Esc
Close