Episode #479 from 7:00
Yeah. All right. You dropped out of high school. Yeah. Not the smartest move.
People
Topics
Introduction
0:00
The following is a conversation with Dave Plummer, programmer and an old-school Microsoft software engineer who helped work on Windows 95, NT, and XP, building a lot of incredible tools, some of which have been continuously used by hundreds of millions of people, like the famed Windows Task Manager. Yes, the Windows Task Manager, and the zip/unzip compression support in Windows. He also ported the code for Space Cadet Pinball, also known as 3D Pinball, to Windows. Today, he's loved by many programmers and engineers for his amazing YouTube channel called Dave's Garage. You should definitely go check it out. Also, he wrote a book on autism, and about his life story, called Secrets of the Autistic Millionaire, where he gives really interesting insights about how to navigate relationships, career, and day-to-day life with autism. All this taken together, this was a super fun conversation about the history and future of programming, computing, technology, and just building cool stuff in the proverbial garage. This is the Lex Fridman Podcast. To support it, please check out our sponsors in the description, and now, dear friends, here's Dave Plummer.
First computer
1:22
Tell me about your first computer. Do you remember? I do. I didn't own my first computer for a long time, but the first computer I ever used was a TRS-80 Model 1, Level 1, 4K machine, and I rode my bike in fifth or sixth grade, so I was about 11, to the local RadioShack. They had the standard component stereo systems, everything else RadioShack had, but they had a stack of boxes that was labeled "computer." So I was asking the people who worked there about it, and they said they just got it and they hadn't set it up yet. I was rather precocious and I figured, "Well, I'll set it up for you," and they said, "Okay. Have a shot."
Dropping out of high-school
7:00
Joining Microsoft
14:41
Let's go to that time. It's such an interesting time with Bill Gates and Microsoft. Why do you think Microsoft was dominating the software and the personal computing space at that time and, and really for many, many, many years after? At the time, it was the single most potent assemblage of smart people that I've ever been a part of. And I've been in academia and I've been in industry to a certain extent, and you know, when you're working at a regular computer company, the one guy who actually knows what he's doing, his smarter friend? He probably works at Microsoft. So when you get there, you're the big cheese from your small town, you think you know a lot, and all of a sudden, you're just in an environment where, like, "Uh-oh, I'm just not going to speak because I don't want to look stupid."
MS-DOS
16:53
So at that time, MS-DOS, no graphical interface. Can you just speak to what the heck MS-DOS is? It's largely a command launcher. So you type in a name of a command, it looks it up to see if that's in the current directory or on a special path of folders, and it loads it into memory and executes it if it's there. And that's 90% of what MS-DOS does. Now, it has environment variables and some complexity and a small scripting language built in, but it is basically just an operating system shell that allows you to use the resources of the computer, like the hard drive or the CPU, and it doesn't allow you to multitask. There's no graphical interface. Now, Microsoft did a- add a text-based graphical interface for things like an editor and QuickBASIC in DOS 5.0, I believe, and there was a DOS shell, which was sort of a graphical file manager in MS-DOS 4.0.
Windows 95
20:05
So that was, like, a cool optimization you got to be a part of. So what about Windows? There was a parallel development of Windows 95, right, at that time. Did you get a chance to interact with those folks? I actually worked on Windows 95 for about three or four months. I was on the COM/OLE team doing the presentation cache, which is when you insert a, say, a Word or an Excel spreadsheet or chart into a Word document. You don't want Excel to have to be loaded to render it every time, so there's a presentation cache of enhanced metafiles and I was working on that. So that shipped in Windows 95, but I moved to the Shell team about six months after getting to Microsoft, and so I worked on NT from there forward.
The man behind Windows
26:52
You said that Dave Cutler's the man, the mind behind Windows. Can you explain? So Dave Cutler is the architect of the kernel. So he is Linus in the Linux world. It's Dave C. in the Windows world.
Debugging
31:48
Yeah. So yeah, I mean you mentioned MIPS and RISC. How deeply did you have to understand the lowest level? Sort of the lowest level of the software and even the hardware with the stuff you were building. Like what are the layers of the abstractions you had to understand to be successful with all the stuff you're doing with NT and before that with... Well, about half your day is going to be spent debugging, and most of the time is going to be spent in call stacks that are in pure assembly language because there's no source level debugging. So it's not like we're in Visual Studio, and you hit a breakpoint, and it pops up, and there's the source code. You can go look at the source code, but you're looking at the raw assembly dump from the machine at all times.
Task Manager
37:05
You mentioned Task Manager. Obviously, we have to talk about this, the legendary program that you created, the Windows Task Manager. Tell me every detail of how you built it. What is Windows Task Manager? So Windows Task Manager is a way to go in and find out which apps on your system are using the computer, using the hardware, using the CPU, using the memory, and which ones might be using too much or locked up or going crazy. And it gives you the ability to terminate and kill those ones. So it's an inspection and a fixing tool.
3D Pinball: Space Cadet
42:14
Yeah, I thought that would be true for Clippy, but Clippy will make it back one day. All right, what are some other pieces of software you created at the time that are legendary? So you were part of Space Cadet Pinball, at least porting. Yeah, so they came into my office and said, "Hey, what are you doing?" And I told them what I was doing and they said, "Well, how do you want to spend your next three months?" And I said, "I have no idea." And they said, "Do you want to port Pinball?" And I'd seen Space Cadet Pinball as a game standalone for the Win95 platform and it had a couple different tables and it was a cool game so I was kind of excited. What they wanted was some visual splash for NT to show that NT can do, for then, high-speed graphics or at least responsive graphics.
Start menu and taskbar
47:13
Yeah, one of the challenges with Windows, and it's been a frustration point for me, but I understand from a design perspective it's very difficult, is so many different kinds of people use Windows. But it's been frustrating how over time Windows has more and more leaned into the direction of not the power user, I should say, which is why Linux has always been really wonderful. But from an activation perspective or from any kind of configuration, it's been a source of a lot of frustration. Yeah, one of my more popular episodes of late has been why you can't move the Windows taskbar. And I had no idea, but the outrage is palpable amongst people that you—
Blue Screen of Death
58:12
Tell me the story of the infamous blue screen of death. What it is is when Windows has no other option, when the kernel gets into a state where something illegal has happened, so let's say a device driver is trying to write to a piece of memory it doesn't own or is trying to free a piece of memory twice, something that just cannot happen, and the kernel has no other option, it will shut the machine down to save your work. And... Well, not save, but prevent further damage, and it puts up a blue screen and it prints out the stack information, depending how your settings are. Sometimes it's just a sad face. In the current Windows.
Best programmers
1:00:21
In terms of beautiful code, there's two that stand out for me. One is the kernel in general. When you get down into the Windows kernel- ...in the actual NT APIs and stuff, it's very well written, and it's written to a standard that you don't see on the user side, or at least is uncommon on the user side. On the user side, probably the coolest code I remember seeing was a guy named Bob Day, who wrote a named pipe implementation to eliminate the use of shared memory. So Windows 95 had a big shared segment amongst all the shell processes where it would store stuff that was common to all the shells. We didn't want to do that. Shared memory is a bad idea on NT at an industrial level, so he came up with a way to do it with named pipes, and I remember doing a code review on it, and it was very impressive to walk through the code.
Scariest time of Dave's life
1:08:22
Let me ask you about the whole stretch of time that we kind of skipped over. You built a lot of software over the years after Microsoft, on the side while at Microsoft and afterwards, a lot of successful pieces of software. One of your companies was Software Online, and it got into trouble for nagging users too much, I guess- Yep.
Best Windows version
1:15:50
Ridiculous question, but what do you think are the top three Windows operating systems? The different versions? I'm a fan of Windows 2000 server. That's
Slot machines
1:17:40
You said you play slot machines, and given that you love hardware and software, you're the perfect person to ask, how do slot machines work? Well, I'm happy to ruin them for you.
Autism and ADHD
1:21:23
And you can run code on this? You've written a couple books on autism. Being autistic yourself, I was wondering if you could tell me about, like, fundamental differences about the mind of a person with autism versus a, let's say, a neurotypical individual. Well, the fundamental theory of thought for autism is called monotropism. And basically what that means is that my brain does one thing and does it very intensely, and then when it's done I can move on and do something else. But I'm not a multitasker. I'm a serial single-tasker by any stretch. Autism usually brings with it sensory sensitivities and repetitive behaviors, behavioral issues that compound it. And if they rise to the level where an individual can't moderate or accommodate them in their life, it becomes a disorder. And that's probably one to two percent of the population.
Fastest programming language
1:40:43
You built a machine recently with one terabyte of RAM. How did that happen and why? We have a project called GitHub Primes. If you just search for GitHub Primes, you'll find it, and it is...
Future of programming
1:44:48
That's true. But, you know, with compiled languages like C++, that's always a good feeling. You write a bunch of code, and you compile it all, it compiles without warnings, without errors. It's a cool feeling. What do you think is the future of programming? So now, I don't know how much you've got to really experience the impact of LLMs with code generation. Have you used Cursor much, Cursor VSCode with code generation? Yeah, I've done a ton of it for the Python side because I'm not great with Python, and I'm kind of new to it. So I found it very helpful because I've learned a lot from watching the code that it generates if I don't know how to do something. Because if I were to write Python from scratch, it's going to be about four times as long as what the AI can crank out because Python can be pretty terse if you're good at it.