I ported THOUSANDS of apps to Windows 95

977,869
0
Published 2024-04-11
▶VOTE for my NEXT PROJECT: www.patreon.com/posts/march-2024-poll-101363953
▶dotnet9x on GitHub: github.com/itsmattkc/dotnet9x

▶FOLLOW on Twitter: twitter.com/itsmattkc
▶FOLLOW on Twitch: twitch.tv/mattkclive
▶FOLLOW on Instagram: instagram.com/itsmattkc
▶SUPPORT on Patreon: patreon.com/mattkc

▶GUEST STARRING
YoshiToMario - twitter.com/yoshitomario
f4mi - youtube.com/f4micom
cs188 - youtube.com/cs188
skhali - www.instagram.com/skhaliplays
leecata - www.instagram.com/leecata_

▶MUSIC
00:16 - Mega Man 8 - Stage Select
01:13 - DDRKirby(ISQ) - Lost My Way
02:41 - Grieg - In the Hall of the Mountain King (recorded by Kevin MacLeod)
04:56 - Sonic X-treme - Pharoah Den
06:39 - Jake Chudnow - Moon Men (Instrumental)
07:25 - Mega Man 8 - Frost Man
10:03 - DDRKirby(ISQ) - Celestial Journey
16:20 - Francesco Biondi - Shopping Frenzy
19:14 - Susan Boyle - I Dreamed a Dream
19:36 - Sonic X-treme - Space Queens
21:27 - Mega Man 8 - Opening Stage
23:23 - Monsters Inc Scream Team Training - Install Music
24:36 - Kalachnikov - Mental delivrance
25:24 - DDRKirby(ISQ) - The Ecstasy of Life
27:23 - Kevin MacLeod - SCP-x5x
29:16 - Graff - rain eater
31:05 - Kevin MacLeod - SCP-x6x
31:59 - LHS - BRD Keygen #4
34:16 - Falcon - spineless
35:01 - Kevin MacLeod - SCP-x2x
35:18 - Kevin MacLeod - Quinn's Song: A New Man
36:20 - Maktone - class cracktro#15
38:58 - Kevin MacLeod - Cool Vibes
40:17 - Kevin MacLeod - Mystery Sax
42:38 - BetaMaster - QuickTime Pro 7.0kg
44:39 - CORE - mr spock's cryo-bed
46:12 - BLiZZARD - Contraduct Design
47:41 - Kevin MacLeod - Promising Relationship
50:53 - xyce - jet stream

▶SPECIAL THANKS
The Frida Cinema, Santa Ana
Matt and Montana
Dad

▶CHAPTERS
0:00 Intro
9:26 Act 1 - Famous Last Words
16:11 Intermission - Windows Unicode
19:14 Act 2 - Les MSI-érables
27:23 Act 3 - An Unhandled Exception Occurred
48:03 Finale - Resolution

All Comments (21)
  • @cs188
    This is a phenomenal piece of cinematography you've produced here. It doesn't even look low-budget! (well, except for my 2 second cameo)
  • @StephenOwen
    Oh my god, the bit of you on stage at the comedy club is killing me. I was laughing so hard my wife asked me to let her in on the joke. I ensured her it was very deep programmer humor and she wouldn't like it, but she insisted. I explained for about five minutes until she stopped me and said 'oh wait, you were right, this isn't actually funny at all.'
  • @slurp50s
    I write NET 2.0 projects all the time. You'd be shocked the private companies, cities, government, and other projects that all still run on dinosaur technology. Though, the depressing part is so little people utilize NET 2.0 and they continue making their ever expanding code/framework in the old framework that will never translate to the new one. It's such a pain to force clients to move to NET 2.0 because I've got to tell them, "Your code won't last forever. Use Net 2.0 because then you can continue coding but the library will translate to newer projects". Because in the NET world, there was an apocalyptic event that split the NET environment. Anyone who was on the 4.7 (or now 4.8) NET framework got completely dropped by Microsoft for the newer NET core framework. The newer one is millions of times better, but it screwed everyone on the old framework. So I've basically been employed for a long time simply helping project after project after project get off of 4.7 and onto the newer core. That's my developer rant. Your welcome. You're weird if you read this. But if you did. Remember. USE NET 2.0 IF YOU ARE STUCK ON THE OLD FRAMEWORK! Please!
  • @notenoughmonkeys
    Fun fact, the installer has more registry keys than there are seconds in this video. Can't believe the amount of effort that went into this whole thing! Utterly incredible.
  • @bootie
    As a .net dev I really, really enjoyed seeing you get it working on an operating system it was never meant to run on! I haven't enjoyed a video as much as I did this one in a long time - well done Matt!!!
  • @DarkWinst
    As someone who has been working at Microsoft for more than 30 years, and started around Windows 3.1, what you have accomplished has me completely amazed. Impeccable work, dedication, and drive for trying to push the envelope on what is possible. Your approach to troubleshooting was amazing, and your reasons behind it were amazing. It was a mountain in front of you that you felt needed to be climbed. Great job, this is fantastic!
  • @tanzytechgem490
    i’m a game developer, and the workaround for printing the unhandled exception to the gui made me CRY laughing. genius.
  • @evanbarnes9984
    Dude the fact that you did this project is insane on its own, but you also just MADE A FILM NOIR IN THE MIDDLE OF THIS VIDEO? So nuts dude, amazing work
  • @informitas0117
    Program: eldritch screeching Matt: "40" Program: purring
  • @tomwhit1982
    I worked at a tape manufacturer not long ago that has all the lab testing equipment still on 95. Youll be making some very happy people out there.
  • @frodzie
    I used to work in IT in the meat industry, we had multiple machines in factories across the world that still ran on 95 or 98 and had zero upgrade paths. When one went down if the spare didn't work (or just didn't exist) we would frantically scramble to bring up a VM backup of the machine and fight for ages to get it to talk with the old hardware. I can think of many situations where having this solution would have been useful. You sir, are a genius!
  • @VNLX
    I checked ndphlpr.vxd file with a disassembler and it's really just a simple wrapper to get and set the thread context. Presumably on Windows 9x they could not use GetThreadContext and SetThreadContext because of some quirk. On newer versions they do not load that driver (obviously) and use GetThreadContext and SetThreadContext directly. Judging by paths in the .NET dlls (such as "f:\rtm\ndp\clr\src\debug\ee\debugger.cpp") ndp is just an internal codename or abbreviation for .NET. EDIT: I looked at the Win9x kernel and I think I understand why this is needed. In Win9x SetThreadContext changes the context immediately regardless of whether it's the current thread or another thread, while on newer versions an APC is used when changing the context of another thread. Presumably .NET needs the latter and it implements it through ndphlpr.vxd, also using an APC.
  • @riaz8783
    A wise man once said DEVELOPERS DEVELOPERS DEVELOPERS DEVELOPERS
  • @davidark9054
    I have to say, I am very surprised to not only see such a technical feat of backporting, but a good noir parody film. I've made movies with people, it's a lot of work. But you're also debugging. You are an inspiration!
  • @sorayaimperial
    Sometimes it actually might matter more than we think. When I was doing my thesis in chemistry less than 10 years ago, we had this chromatograph that needed to be connected to a computer with win 95. Mostly because of the port used to connect the machine to the PC, but also the software wouldn't properly run on more modern versions. While a bit older than two other models we owned, the fact was that this was the best chromatograph we owned - not as versatile or flexible, but it was the one less prone to weird malfunctions and was very reliable (while the more modern one, I spent more time "debugging" - ergo, moving screws and valves around - than actually working) and cheap to run thousands of analysis. This meant that my working process was: - Run stuff on 95 and save to a floppy disk. I could only save 2 or 3 runs (my thesis involved thousands) per floppy due to file size. - Get the floppy on another computer with XP, because it had both floppy disk and support USB. This PC does not support either the modern software I needed to run analysis on, neither the old software from the other PC. It also didn't have internet, presumably, because the USB was connected to a PCI port instead of network card. Realise that most modern usbs aren't recognised by the PC for some odd reason, needed to find a 1Gb drive to be able to make it work. Save to usb. - Take the USB across the hall to a modern computer running (at the time) Win 8.1 and finally shove the files into my analysis software and upload them to the cloud. - Repeat this 10x a day. Everyday. For two years. While I'm not sure backporting would've solved anything here (but probably we would've been able to transfer that port into a more modern computer if we had been able to run the software), this just goes to show that there is still a lot of specialised equipment still to this day running on win95 and good will (because I very much doubt they bought a 20k equipment - 20k is considered economical by this equipment standards - to replace a fully functioning old one).
  • @E5rael
    I have to admit, I started the video just listening to it in the background, but as the story progressed, I became more and more invested in your struggle, until I stopped my chores altogether and was completely engrossed, gripping the arm of my couch, bating my breath to see whether you'd break the code or not (even if the title spoiled the end result). But at the end, seeing the programs run flawlessly, your hard work having been paid off, made a rush of endorfins flow through me and I was audibly cheering for your victory. I guess it just tells something about your narrative/editing skills, that even when knowing the ending, you were still able to capture my full attention. Windows 95 was part of my childhood, and whenever I see the chunky UI, I'm filled with nostalgia. I'm happy to see people still caring enough for this obsolete piece of software, to be spending hours and upon hours of their time to make something like this. As a token of my appreciation, here's a little something for your trouble, King! 🏆
  • @seritools
    As the author of Rust9x (Rust language/standard lib ported to 9x/NT), glad to see other weirdos do similar things <3
  • @Avenger99
    This is the perfect intersection of retro nostalgia, technical prowess, insane dedication and artistic vision. Probably one of my favorite YouTube videos of all time. I will show this around at the following chaos computer club meetings.
  • @billkeithchannel
    Back in the late 80's I tried learning assembly by just using the C128 monitor and not an actual compiler program. You stepping through the program line by line brought nightmare flashbacks.