by notfed on 2/26/25, 10:06 PM
> "It was a brutal year long journey of 18 hour days" [to run doom in TypeScript types]
This is some serious dedication for what at first blush may sound to many to be a completely unserious, or even useless, achievement. But I say to those people: a DOOM proof is just as worthy of praise as any other academic mathematical proof, and has the advantage of being verifiable by laymen.
Congrats on this amazing achievement.
by flanbiscuit on 2/26/25, 11:10 PM
"But I'm not one of those fancy 10x developers. Instead of a master of craftsmanship, I'm more a master of close-enough-manship"
I definitely relate to this comment.
and he also says "It was a brutal year long journey of 18 hour days"
I think people are looking for those unicorn 10x devs that are like Good Will Hunting for code, but forget that there are those devs that might not get things right away but never stop until they figure things out. You'll probably find a lot more of those than the unicorns
by dfabulich on 2/26/25, 5:28 PM
A WASM runtime in TypeScript types is impressive in its own right, but I think I can dimly see how it could work with a lot of effort.
https://github.com/MichiganTypeScript/typescript-types-only-...What I don't understand is how this thing does keyboard input.
At 3:42, the video simply says, "And, yes, there's a way to do keyboard input," without elaborating on how. What sorcery is that? There must be something outside the type system translating keyboard input into TypeScript types…??
by sangeeth96 on 2/26/25, 4:15 PM
Blew my mind! Dimitri talks about it in the video but I love the mention of how this project came to be[0]:
> This engine was built to service a project that aimed to demonstrate why Doom can't run in TypeScript types. Well. The funny thing is.. It can.
[0]: https://github.com/MichiganTypeScript/typescript-types-only-...
by acemarke on 2/26/25, 4:36 PM
I got to watch Dimitri posting internal updates about his progress on this, and it has been utterly mindblowing. This is genuinely one of the most amazing things I've ever seen done with code. Absolutely legendary feat! (And also an incredible amount of persistence.)
by dgunay on 2/26/25, 10:27 PM
I am at the same time both amazed and utterly unsurprised that this was possible, given all the hullaballoo about TypeScript's type system being Turing complete. Having the grit to actually go through with it though? Bravo.
by Rzor on 2/26/25, 3:39 PM
If there's one top story HN deserves today, it has to be this. Absolutely insane and incredibly inspirational.
by aylmao on 2/26/25, 5:50 PM
At this point the easiest way to know if a system is Turing complete is to check if someone has ported DOOM to it haha
Very impressive!
by vardump on 2/26/25, 6:01 PM
Doom compiled to just 177 TB (terabytes) of TypeScript types. Amazing on many levels.
by sys13 on 2/26/25, 5:34 PM
Not only is Dimitri an amazing engineer - he's also great at building community and event/video production. Michigan Typescript meetups and videos have a level of polish that goes over and above
by kamilafsar on 2/26/25, 4:40 PM
by bilekas on 2/26/25, 5:22 PM
This shouldn’t be possible.. Typescript devs have lost their collective minds and I’m totally here for it.
Edit : TS not front end
by joshuakgoldberg on 2/26/25, 3:30 PM
Nothing will ever top this for typescript types. This is the pinnacle. An entire virtual machine and system memory with garbage collector in types.
Turing Completeness is one level, but being able to run Doom is the real test of whether a programming environment is complete and robust. Absolutely stunning to see TypeScript's type system get there.
by g4zj on 2/26/25, 8:03 PM
Can someone help direct me toward an understanding of what it means for something to be "run in/by TypeScript types"?
A short explanation or link to a resource would really be helpful. :)
by syrusakbary on 2/26/25, 8:23 PM
Hats off to the creator big way.
Really amazing stuff, and impressive dedication. To the author: if you would like to work on challenges of similar caliber, ping me (I'm Syrus, from Wasmer)
by stevage on 2/26/25, 11:14 PM
Wow.
I still don't quite understand what it means to run Doom in the type system. I can sort of get how you might trick it into doing some calculations and generating some ASCII art. But how do you get tsc to access the audio system or load files etc?
by ajkjk on 2/26/25, 7:07 PM
I wonder if there are any small changes/improvements to TS that would make this orders-of-magnitude more efficient to run? It would be fun to go implement some random TS feature with the secret sneaky goal of making it run Wasm better.
by goodoldneon on 2/26/25, 3:19 PM
To be clear, it's running in TypeScript types only -- not JavaScript. Absolutely insane
by breatheoften on 2/27/25, 12:26 AM
I wonder if with 177TB you could implement DOOM in a regex ... (plz don't try unless you want to be on top page of hackernews in a year!)
by TechDebtDevin on 2/26/25, 6:39 PM
Your only miss is that you should be selling that "Types" Doom themed shirt.
by pmkary on 2/27/25, 4:43 AM
I had once built a type checker for a query language within the TypeScript type system, I thought I have reached the limits. Actually showed it to the TS team and they felt the same. This is like something my mind could never had even swallowed, let alone be able to ever build! Nice job!
by ramesh31 on 2/26/25, 5:01 PM
Brilliant. The TS type system is a true marvel of modern software engineering. Its a shame that it hasn't just been developed into a proper fully fledged runtime at this point. Something like Deno is the closest we'll get it seems.
by ejones on 2/26/25, 6:39 PM
Amazing work. I'm interested in the choice of WASM - presumably any target that can run DOOM could've been used? Of which there are innumerable choices I assume. Was it for symbolic reasons or genuinely the most useful target?
by 4gotunameagain on 2/26/25, 7:13 PM
Throughout the video and while appreciating this unbelievable feat I kept thinking "how could someone have the motivation necessary to tackle such an insurmountable undertaking" ?
And then he said it: "All I wanted was the specific reason DOOM can't run in a type system but every time I hit a roadblock I always came up with some ridiculous workaround. I clung to that belief that it couldn't work and that doubt fuelled me the whole time."
Beautiful. I wonder if I can trick myself to one time attempt the impossible.
by internetter on 2/26/25, 10:25 PM
Out of curiosity, could the learnings/toolings from this project have real improvements to more "practical" TypeScript?
by ourmandave on 2/26/25, 6:39 PM
Microsoft Solitaire is apparently the most installed program.
Doom must be the most ported.
by alex_suzuki on 2/26/25, 5:25 PM
Try to fit that in a context window! Absolutely amazing.
by qwertox on 2/26/25, 6:21 PM
Plus three months of recording/cutting/editing the video. Well done.
by koakuma-chan on 2/26/25, 6:16 PM
I wish tsc didn't take eternity to run though.
by kgeist on 2/26/25, 8:41 PM
The next challenge could be making TypeScript types run an LLM. I wonder how their performance would compare to that of Excel sheets.
by khazhoux on 2/27/25, 1:24 AM
It should have been obvious this was achievable once you realize that a monad is merely a monoid in the category of endofunctors!
by franky47 on 2/26/25, 8:54 PM
The subtle Devin Townsend references in the video were a super nice touch, Dimitri is literally a Power Nerd.
by nokeya on 2/26/25, 6:13 PM
Bad Apple time!
by Kuraj on 2/26/25, 5:05 PM
What the FUCK
by dang on 2/26/25, 5:20 PM
by breadwinner on 2/26/25, 11:42 PM
I hope the TypeScript team at Microsoft sees this and goes: "What have we done! We have created a monster... we need to tame and simplify this beast. Or at the very least stop adding more features."
by user2093 on 2/26/25, 5:16 PM
About time some good news!
by nicetryguy on 2/26/25, 5:30 PM
Incredibly good video editing, unbridled insantiy, cheers!
by big_paps on 2/27/25, 6:41 AM
This is top bloat and reminds me of the fever-dreams as a child with walls and walls of senseless work… impressive but also sad somehow.
by bobsmooth on 2/26/25, 9:38 PM
As someone that's unfamiliar with typescript, can someone explain exactly what was accomplished here?
by AdieuToLogic on 2/27/25, 1:49 AM
A Turing complete[0] language can do just about anything any other Turing complete[0] language can do, even if the language used is a language's own type system.
Mad respect for the author. This is a non-trivial achievement indeed.
Bravo!
0 - https://en.wikipedia.org/wiki/Turing_completeness
by cod1r on 2/26/25, 6:58 PM
i envy dimitri's ambition and capabilities. i want to be able to dedicate that much effort and more into something I'm passionate about. mostly personal discipline/skill issues but MAJOR props to dimitri and this awesome project.
by johnniedegen on 3/6/25, 1:50 PM
it's cool you can use it as engine for your own doom-like games in ts
by replete on 2/27/25, 7:56 AM
What are the minimum system requirements in order to run this at 30fps?
by wildpeaks on 2/27/25, 12:19 PM
I'm crying of laughter, it's magnificent
by AndreasMoeller on 2/26/25, 8:34 PM
This was the best thing I saw all day
by vid on 2/27/25, 3:39 PM
The big question is, would the author lose interest if they were working on something mission critical?
by pulkitsh1234 on 2/27/25, 5:52 AM
Apparently, this guy tried to apply to BigTech to get a job but was rejected.
> "I was looking for a job during working on this and absolutely got some disappointing rejections, and one was because of my lack of skillset on things like this in a big tech company's interview. I literally failed the technical screening. Oh well."
I mean... I don't have words...how f*cked up is the interview process ??
by undebuggable on 2/26/25, 6:38 PM
Honestly every time I worked on TypeScript codebase and the type definition "any" started popping out more and more often, I felt I'm starring into the abyss.
by mohas on 2/27/25, 7:08 PM
Stop this madness!
by thebeardisred on 2/27/25, 11:25 AM
"Man demonstrates Turing completeness of TypeScript in the most extreme manner possible."
by porsager on 2/26/25, 9:01 PM
by juhanakristian on 2/27/25, 3:22 PM
This is amazing!
by lerp-io on 2/27/25, 12:54 AM
idk why ppl do this to themselves, likes?
by einpoklum on 2/26/25, 11:22 PM
I'm sorry to rain on this parade, but I fail to see the merit of spending so much effort - and writing so much code, generating so much data, working 18hr days etc. - to render Doom in TypeScript type-checker.
I mean, there all sorts of feats and achievements one could choose as one's goal, which would also be impressive, but would be more useful to users and/or software developers, than this. I'm just thinking of all of those times I wanted to suggest a software tool to someone and went "ungh, if there was only some FOSS which did that" - and there wasn't, or at least, it wasn't assebled from pieces into something usable. Then I think about spending a person-year on this and I get frustrated.
Sorry, but those are my 2 cents.
by xnavra50 on 2/27/25, 8:37 PM
Insane.
by whoisthisguy on 2/26/25, 7:17 PM
mad respect! you are a legend.
by danbruder on 2/26/25, 11:53 PM
it is so beautiful
by Zamicol on 2/27/25, 12:12 AM
The big lesson from 1936 Turing:
Anything can run DOOM...
...as long as it's Turing complete.
by steezeburger on 2/27/25, 1:08 AM
Is the background music the music from Batman Beyond? lol
by AlienRobot on 2/27/25, 3:24 AM
Yeah of course it can it's just j...
Jesus christ.
by harha_ on 2/27/25, 3:48 AM
These typescript fanatics never fail to make me feel disgusted by what they've done...
by zeroq on 2/26/25, 6:58 PM
From YT comment section:
>> @TimMattison
>> If this guy goes for a big tech interview they're still going to ask him how to invert a binary tree
> @MichiganTypeScript
> So actually in the "why" video, you're going to hear about exactly that! I was looking for a job during working on this and absolutely got some disappointing rejections, and one was because of my lack of skillset on things like this in a big tech company's interview. I literally failed the technical screening. Oh well.
by ravenstine on 2/26/25, 6:48 PM
One of the top comments in the video:
> If this guy goes for a big tech interview they're still going to ask him how to invert a binary tree
The industry's hiring process is so messed up that this is completely believable.
"We've decided to prioritize other candidates, as you are strong in the fundamentals but lack the kind of experience in Vue that we're looking for."
by R3Y-P2U-jz3PVKd on 2/26/25, 6:18 PM
I hope he learned something useful while doing it and it seems like he did, because, although regarding all the comments here I'll likely be alone in my assessment, I just see a massive waste of time & effort? He described it as "a brutal year-long journey of 18 hour days" and he didn't bootstrap a company, he wrote Doom in Typescript types...?! The "epic" doom music underlying his story just makes it seem even more comical to me.
Maybe it's just me, don't want to crash the party. Carry on
by theThree on 2/26/25, 9:42 PM
Can anyone explain to me what is "TypeScript types“?
by vivzkestrel on 2/26/25, 5:39 PM
imagine how amazing it would be if every major browser tomorrow suddenly dropped support for JS entirely and said that they only run typescript now. It will be a hard but absolutely mind blowing transition
by Ericson2314 on 2/26/25, 6:38 PM
Not to be a grouch, but I feel like this could be way more optimized
by sim04ful on 2/26/25, 6:12 PM
I know the following comment is discouraged from hackernews but these are extenuating circumstances:
Yoooo WTAF
by ulrischa on 2/26/25, 6:18 PM
Typescript is for me one of the most overengineered programming languages. Why did JS not follow the way python and php did? Integrate types in the main language but make it optional.
by layer8 on 2/26/25, 6:47 PM
I wonder if there will come a time when the HN audience will stop being amazed that some system is Turing complete, or that any Turing-complete system can run Doom (barring resource constraints). Maybe I’ve just seen it too often. The fact that TypeScript’s type system is Turing-complete was shown back in 2017 [0], and then of course you can run Doom on it.
[0] https://github.com/microsoft/TypeScript/issues/14833