Dave Plummer: Programming, Autism, and Old-School Microsoft Stories | Lex Fridman Podcast #479
HsLgZzgpz9Y • 2025-08-29
Transcript preview
Open
Kind: captions Language: en The following is a conversation with Dave Plameumber, 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 and he ported the code for space cadet pinball aka 3D pinball to Windows today. He's loved by many programmers and engineers for his amazing YouTube channel called Dave's Garage that you should definitely go check 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 Freedman podcast. To support it, please check out our sponsors in the description. And now, dear friends, here's Dave Plameumber. 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 TRS80 model one level one 4K machine. And I rode my bike in fifth or sixth grade, so I was about 11 to the local Radio Shack. And you know, they had a standard component, stereo systems, and everything else Radio Shack had, but they had a stack of boxes that was labeled computer. And so I was asking the people that worked there about it. They So they just got it and they hadn't set it up yet. And so I was rather precocious and I figured, well, I'll set it up for you. And they said, "Okay, have a shot." Did you know what you were doing? >> Absolutely not. I mean, it's no worse than a component stereo. The only thing is that Tandy and their infinite wisdom use the same five pin connector for power, video, and I think cassette. So they're all identical, and if you plug them in wrong, you'd blow it up. So I read the label and uh got it working and wound up playing with it and not knowing anything about computers. So I'm typing English commands into it and you know print 2 plus2 works perfectly yet more simple English that you enter into a basic level one interpreter is not going to get you very far. >> So you're trying to talk to it in English. >> Yeah. Didn't know any better. And I still have an old full scap that I wrote in sixth grade of a of a program that's kind of logically correct, but has no chance of working on any interpreter that existed at the time. So it took me a while to figure out what was actually going on with them. But I rode my bike down there every Thursday and Saturday and they had graciously let me use the machines. When was this? >> 7980. >> Okay. What was the state-of-the-art of computing back then? So what are we talking about? >> Well, the big three had come out. There was a the TRS80 model 1. There was the PET 2001 and the Apple 2 came out roughly simultaneously. >> Apple 2. Would you say that's the greatest computer ever built? >> Probably in retrospect. Well, I would probably give that to the Commodore 64. >> Yeah, you and I agree on this. That was my first computer probably many years after it was released. But yeah, Commodore 64 is incredible. But yes, Apple 2 had a huge impact on the history of personal computers, >> right? It's hard to gauge the long-term impact, but I think the 64 itself probably influenced more people. So, that's my reason for picking that one. >> You think so? >> The sales are certainly higher. >> So, Commodore 64 sold a lot. >> Yeah. I mean, the numbers are hard to believe. It depends which numbers you believe, but even the medium estimates are pretty high. >> All right, cool. So, you eventually graduated to the Commodore 64. Uh, like tell me about that machine. What did you do on the the Commodore 64? Well, the first thing I did was overheat the floppy drive on it, which was unfortunate because it wasn't a warranty machine. We had my parents didn't have a lot of money, so we bought it from Computer House as opposed to one of the major retailers, which meant when it died, it had to go back to Germany or something to be fixed. So, I was left with no floppy and so I had a cassette deck, which was the best you could do at the time. And so, I was writing small things and I had a machine language monitor that you could load from cassette. Didn't have an assembler built in, but had a disassembler. So, you could enter the op codes in 6502 in hex. And if you were careful about planning, you'd be able to write some basic programs. So that's kind of how I learned. And uh the first thing I ever wrote on it was a clone of Galaga. Now, it's a bad clone of Galaga, but it has the major enemies that attack over time. And it's all written in handcoded machine language, and you can't relocate 6502. So if you need to add code in the middle, you need to manually sort of jump to somewhere else, do your work, jump back to where you were. It's just hideous spaghetti code. But it all worked eventually. and I went to make a backup of it to preserve it for future scholars or whatever the hell I was doing. And uh I copied my blank floppy onto my data floppy. So that was my first experience with data management. And so I don't have a copy of my first program anymore. >> What was that feeling like? Do you remember of of uh just doing something um if I may say so like stupid, you know, which is a part of the programming experience. >> Yeah. There was a huge amount of guilt cuz right you destroy several weeks of work and you know it was because you rushed or you did something stupid or you made a >> unwise choice. >> What can you tell me about the programming involved in that? >> So it's literally machine language. >> So machine so it's not even not assembly yet because there was no assembler built in. So I should have wrote an assembler written an assembler as my first task but I wasn't that clever. So >> how hard is that to do? >> Trivial and it's just one of those things that sticks. I think you do it so many times. You know, if I give you a C issue, there are certain syntactic issues in C that you're never going to forget and get wrong. >> Yeah. >> And it's just one of those like >> what are then the limitations of programming in machine code as a programmer? >> The biggest issue is you have to write completely sequentially because at least in that variant 6502, you can't add things later. You can only add things on the end. So it's like programming a tape in a way. >> What was the most complicated thing you've built with machine language? uh that game would be I mean in assembly language I've done a fair bit of complicated stuff but in actual machine language I think that game would be the only thing I've actually >> I literally built a game >> not a great game but it worked. >> Okay. All right. And then you erased it. >> I did. >> All right. When did you first fall in love with programming? When you figured out like this is a this is something special. >> I think there was two stages for me. I always knew immediately that I was fascinated with these machines. from the TRS80 Model 1. It's all I wanted to do is ride my bike back there and have more time with it. And I did that, you know, to wear out my welcome as much as I could. And the other revelation came, I think, about second or third year university when I realized I love programming, but I have no idea what I'm going to do. Am I going to make the 12 flash on a VCR somewhere, or am I going to go work on an operating system? I have absolutely no idea what I'm going to do postgraduation, but I love what I do. And so, I think that was a lot of consolation. And it's like it doesn't really matter what I'm doing at this point cuz I kind of love doing it. So >> So you'll figure it out. >> Yeah. >> As long as you're following this kind of feeling that's >> I knew I was in the right area finally. Yeah. >> All right. You dropped out of high school. >> Yeah. Not the smartest move. >> Okay. But you ended up going back to school and being very successful at school and just in general successful as a programmer, as a developer, as a creator of software. Uh how were you able to find your way? Can you tell that journey of dropping out and then finding your way back? >> There's no moment when I dropped out. You just go less and less and less until you realize it's going to be embarrassing if I show up cuz I haven't been there in a long time. And then pretty soon you're just not going. And that's how you drop out of high school. So if you find yourself on that path, stop doing that. Um, but that's precisely what I did. And so now I'm not at school and I have to get a job. So I'm working at 7-Eleven and a paint warehouse and stuff like that. And 7-Eleven is actually kind of an interesting job because it's a job I think they keep rotating for people that are smart enough to do the night shift with all the accounting and the administration and stuff they make the night shift do but that have reasons personally that they need to work at 7-Eleven. Um, and I was one of those people cuz I had no high school diploma. >> What are some memorable moments from that time at 7-Eleven? Uh, maybe what do you uh appreciate about the difficulty of that job? Probably the worst moment for me. I mean, I got held up at knife point and stuff and that's all entertaining, but the worst the most this the suckiest part for me was doing the gas dips where you've got a long it's like a 15 or 20 foot wooden stick and it's measured in gradients of inches and feet and you drop it into the gasoline tanks and then you bring it up and you measure where the gasoline sits because there's no electronic sensor. >> Mhm. >> So, I'm doing that and the first time I do it, I drop the pole and I regrab it. Well, that's about a thousand splinters of wood into your hands and it's 40 below out and that really sucked. >> Oh, wow. >> Um, I realized I don't want to do this for my whole life. I knew that. So, >> okay. So, you stand there frozen with splinters in your hand. >> And at some point I have a revelation about my life that next time I'm going to do it differently. And then how ludicrous that is hits me about 3 seconds later, right? And I think that was really the moment for me where I realized that I've got to do something different. And so even though I was 21, I went and I talked to the uh principal of my local high school and I was like, "Can you let me back in?" And he said, "No, you're too old and we don't have room." It was his main reason. And I said, "Well, between now and then, somebody's going to drop out, so you'll have room. So let's assume you have room. Can I come back?" And he was gracious and let me come back. And so I did the three or four classes that I needed. >> Yeah. You know, just if you can linger on that, the slow dropping out, that's a weird thing that you can do with your brain. You realize to yourself that you don't have to do the thing that everybody else is doing. And that's a dangerous realization because like you kind of have to to be part of society to do certain things, >> right? >> And if you realize like you don't have to do what everybody else is doing, uh you can either have an incredible life or a really difficult life. Well, the problem with that process is you're making a much smaller decision. I'm just not going to go to class today. Yeah. >> And that's all you're deciding. But you do that enough times, you're making a much bigger decision, >> and that's the problem. >> So, it's better to make if you want to live life in a non-standard way, it's better to make the big decision explicitly and then you can stop going. >> Yeah. >> Don't allow yourself to make the the >> It'll be made for you eventually. >> Okay. you well you got back and you eventually went to college and were very successful as a student and you weren't that good of a student before. >> No, I was a terrible student in high school and even my first semester of college I still wasn't taking it quite serious because I got mercy passed in geometry 90 which is like the makeup class for the geometry 12th grade class that I didn't have and that scared me because I realized by 1% or the grace of the prof professor that let me through I just about ended my entire university career here. So fortunately those marks don't count on your transcript cuz they're remedial classes and so I got kind of a fresh start the next semester and did it for real and I did it for me and that made all the difference. >> What can you speak to maybe by way of advice on how to be successful as a student? >> Well ideally there's some aspect of school that you do enjoy whether it's arts, whether it's computer science, whether it's shop class, whatever. So go for those classes and just put up with and do the hard stuff because it's way easier than having to do it later. And that's easy to say when you're 50some. It's harder to say when you're 15 something. But >> yeah, >> it makes a lot of sense. >> All right. What's the story of you joining Microsoft? How do we get to there from 7-Eleven to Microsoft? >> Yeah, it's a big jump. So, I had uh gone back to school and I think it was in my third year of university. I was working for the phone company for the summer as a summer job and I'm doing conversions of their Ubet to TCP IP and modern networking which really amounts to swapping cards but then figuring out why their config. This doesn't allow Lotus to run anymore cuz it's got 10K less than it used to. And it's just a horrible time to be working in computers, but I was doing it. And at lunch, I'm sitting in the food court with the old and the board. And I'm reading a book that I had bought called uh Microsoft or Bill Gates in the making of Microsoft Hard Drive, I think is the title. And it's a great book. It's just sort of a matterof fact history of how Microsoft came to be, what it's like, how it operates, what the people are like there. And I'm reading this book and I become really entranced by it and fascinated because it sounds like exactly the place that I want to be, but I'm in Saskatchewan. So, what am I going to do about it? And what I wound up doing was I had put myself through school with a program called Hyperache, which is a file system cache for the AmIGGA because didn't have any out of the box. And it had done reasonably well. And so I went through my registration cards because in those days you had a 4x6 card that people had to fill out with their name and their address and if they had an email, their email and they send it in, they get notifications of updates and so on when it's shareware. And I went through the whole stack looking for anybody with a Microsoft email address and I found maybe three or four people and I just cold emailed them and said, "Hey, I'm a operating system student in Saskatchewan looking for an opportunity." I don't remember exactly what I said, but one guy, Alistister, Alistister Banks, he wrote back and he said, "I know somebody that I can put you in contact with." And he put me in contact, I think, with a guy named Ben Slifka who did a phone interview who eventually want to hire me to work in MS DOS for the summer. So, that's how I got there. >> You put yourself through school by tell me about Hyperache. You build a piece of software. It's the weight loss program for hard drives. >> That was sufficiently useful to a large number of people that would somehow give you money. >> Yeah, it made decent money. I mean, I sold a couple thousand copies, 20 bucks a copy or 40 bucks a copy. >> What program? What language was it written in? >> C. >> So, there was some assembler. The actual really tight code to do the real work of transferring data to and from the cache was 68,000 assembly. Everything else was C. >> Okay. This is uh like file system IO >> device block IO. So any block that gets serviceed from the drive would go through my cache first and it was an Nway associative cache and so it would try to match the geometry of the drive and do prefetch based on you trying to read a whole track at one time that kind of thing. >> What what was it like trying to get your software out there at that time? Like where how were you able to find customers? >> Yeah, it's interesting. I think I started on Usenet and some of the AmIGGA forums posted here's my trial version try it out for 30 days see what you like and eventually got picked up by a few retailers and I remember I was with my now wife in her car and she had a cell phone cuz her dad was very concerned about her safety and so this is late '8s and she's got you know the antenna on the roof and the big box in the trunk the whole deal but we got a call from one of the uh software retailers that wanted to buy 50 copies at 20 bucks which to me is a thousand bucks which in 1989 or whatever year it was was a big deal and so eventually a number of companies just bought inventory. >> 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 that 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 uhoh I'm just not going to speak cuz I don't want to look stupid. >> Mhm. >> Okay. Uh what are what about Bill Gates himself? What are some qualities of Bill Gates that you think contribute to the success of Microsoft? >> I think he was relentless in the pursuit of his one dream which was his old slogan of a computer in every home and a computer in every desk. It was his special interest and he was a smart guy, super determined and he hired people that were as smart or smarter than him to help him execute it and he built an almost unstoppable machine of intellect to go forth and make let's say very simple products. MS DOS is not a complicated product by any stretch but it's exactly what the market needed at that time. >> Yeah. I mean, Emma's DOSs changed the game and uh that's actually the team you joined, the MS DOS team and I think you joined before Windows 95 was released. >> Uh so tell me about the story of MS DOSs. It's uh success of MS DOSS was probably pivotal to the success of Microsoft. >> Yeah. Before DOSS, they were largely a language company. So they had made basic for a lot of computers and they had a 4R compiler and a Pascal compiler, that kind of thing. But their deal to have MS DOS included with every version or every instance of the PC effectively set them as a standard that they were able to leverage for decades going forward and to a certain extent they locked into that and on the other hand they were smart to have done it. So because they didn't charge IBM a lot of money for it but making it a standard really played out to their advantage over time. >> Uh 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 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 uh 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 add a textbased graphical interface for things like an editor and quick basic in DOS 5, I believe, and it was a DOS shell, which was sort of a graphical file manager in MS DOS 4. So, they experimented with it, but it's largely a command prompt. >> Did does it have ability to communicate with uh external devices, so drivers and all that kind of stuff? Like how expansive of an operating system was MS DOS? Well, it was limited by the original x86 instruction set which limited it to 640k and then there were various band-aids on top of that to do high mem and then extended memory beyond that and uh a lot of hoops have to be jumped through to make anything work without consuming base RAM. >> Yeah. I mean you so you programmed on MS DOS. What what's it like? What are some interesting details there? Like you said there's the memory constraints of 640 uh kilobytes. >> Yeah. Now 640k is the maximum that's ever going to be available. So it's not what's available to you as an operating system developer because whatever you use is what the user won't get. So if you use 10K needlessly, you're going to every machine in the world now has 10K less. So it's kind of a big responsibility. >> Is that a true quote from Bill Gates where he said >> nobody will ever need more than 640K. Yeah, I know it's not him. >> Okay. >> It's been attributed to him but not real. >> Uh okay. Okay. So, I mean, what are some interesting aspects of you that you were able to do as an intern and when you joined on MS DOS and beyond? >> One of the first things I did was to take Smart Drive, the disc cache, cuz I had familiarity with disc caches and to add CDROM caching to it cuz I was new. CDROMs were just just coming out. Microsoft Bookshelf is one of the few products you could run for it. And as you can imagine, caching a CD speeds it up by dozens of times if you're smart about it. So, it it was a big performance win and a nice thing to work on. Um, a bigger part of that was moving a bunch of smart drive and eventually the double space compression engine up into what's known as high memory. >> And without rat holeing on the technical aspect of it on the x86, there's something I believe called the A20 line. And I probably have this backwards or I got a 50-50 shot at it, but if you've got the A20 line asserted, then your memory pointers wrap at the 1 megabyte mark. >> Mhm. >> And if not, they don't. So you continue going up in memory. So you can rewrite memory above by combining your segment and offset registers to a number bigger than 1 megabyte and you get an extra 64k and you put your code in there and then you just put stubs to jump to it from low memory and so you can get another 64k out of the machine that way. And we did that for a couple of the products and that's I had no idea what highm was cuz I was an Omega programmer and I had never written any x86 code before I got there. So >> So that was like a cool optimization that you got to be a part of. >> Yeah. >> So what about Windows? There was a parallel development of Windows 95 right at that time. Did you get 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 comm 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 metaphiles. And I was working on that. So that shipped in Windows 95, but I moved to the shell team about 6 months after getting to Microsoft. And so I worked on NT from there forward. >> Okay. And what's 95? What's NT? >> Uh Windows 95 is an evolution of the original 16-bit Windows 3.1, which was the very first popular version of Windows. And it adds 32-bit support and VXD drivers and a bunch of new technology and an entirely new user interface. And it's something that at the time was revolutionary. People lined up at night to uh wait in line to buy the thing. Can you just take us back to that time and describe why 95 was such a big leap from 3.1? So, Apple already had a graphical interface. Uh, Windows 3.1 had a graphical interface. Why was Windows 95 such a gigantic leap? >> I don't want to make it as basic as the start menu, but I think it's a big part of it. I know when I first saw it, >> I couldn't quantify what about it was different and awesome, but I realized that I wanted to be a part of it. And that's why I started writing a shell extension which became uh zip folders at some point. But >> I was just fascinated by the new shell and that's why I end up working on the team that brought that shell over to the NT and what's Windows today. >> Would you say that's the greatest operating system ever? What's the most impactful operating system ever? >> Windows 95 would be number two for me. I think OS 360 is going to be number one. >> Okay, interesting. >> Did you take a machine and write a Cobalt program for it in 1962? jump in your time machine, go to Pikipsy and boot up an IBM Z17 mainframe and run it today. And they've been doing it for however many years that is. And it's all in the business side. So we as consumers don't have much access to it, but I think it was probably as influential in the commercial side as Windows 95 was in the home side. And then probably Linux would be number three for me. I put Linux as bigger than Unix, which doesn't work because you can't have one without the other. But the impact of Unix BSD and so forth is largely in the academic space. It's by programmers for programmers. So yeah, Linux created I mean it was the embodiment of the open-source spirit at its largest scale. All right. So it almost created a community and it it it created a spirit of programming that uh propagates to this day. That's true. That's true. Like scale matters. Yeah. And it penetration on the server side of things now is I don't know if it's equivalent to what system 360 achieved but it's almost ubiquitous. So >> yeah the world I this is the quiet secret of the universe as it runs on Linux. Okay. So uh tell tell me about the days uh your work days. What were they like back then back uh back in the MS DOS Windows 95 days? Take me through a productive day. Well, your day starts coming in and you got to download the address book, which is Microsoft has between 10 and 15,000 employees at this point and we're all on MS Mail. We're just getting off of the PDP11 called Miss Piggy, which ran Whizmail. And uh we're running MS Mail, but MS Mail has a fixed address book that every user must download every morning. And when there's 10,000 people downloading 10,000 people, it gets pretty messy. And I think we're on 10 megabit networking at the time. So your first hour is downloading the address book which was always frustrating but you'd use that time to look at the crashes that would have happened overnight from a process we called stress which is N&T all the machines that are unused run tests all night long and they try to crash themselves and if they manage to crash themselves it will drop into a debugger with a serial cable to another machine and you can connect to that other machine and remotely debug the crashed machine. So you come in and they will have triaged bugs. You know there was a crash in the start menu so we'll assign that to Dave. And so you come in and that's your first thing is to connect because you got to get that machine back to the guy that owns it and unlock the machine. So that's your first hour of your day is basically triage for bugs that have come up from stress overnight. And then at that point it's probably back to coding which unfortunately 80% of the time is fixing bugs. Especially in my career it was porting code and fixing bugs. I wasn't writing a lot of new code. There were exceptions. cuz I wrote a lot of new code on the side to get it out of my system >> from a day dayto-day grind of always fixing bugs in other people's code which is amazing learning experience. >> So you did a lot of the at Microsoft you did a lot of the porting of uh what is it Windows 95 code to NT. >> Yeah we took the entire Windows 95 user interface and we ported it to NT which mean meant making it unicode for one thing. So everything that was 8 bits is now 16 bits. pointers. It's It's quite a mess when you switch the code over as you can imagine. >> Can you give us insights in what is involved in porting? >> It's like breaking into somebody's house and going through all their stuff and seeing the stuff in their drawers that they didn't want you to see. >> Yeah. >> You find all the good stuff, the pretty pictures hanging on the wall, and you find some disturbing stuff in the nightstand. Uh I saw code that was like 200 some characters wide with you know profanity and swears in it and it eventually got all cleaned up over the years by the time I left but it was not always the most professional code in the world >> right cuz every single piece of code you have to go through >> line by line so you see it all. >> Yeah. Yeah. I mean that's the that's the story of programmers. You think you write a piece of code and you think it'll never it'll never be seen by anybody. And sometimes often times that code is going to be seen by a very large number of people >> that come after you including you 5 years later you yourself looking at your own code. Okay. So uh tell me about Windows NT that was a giant league too. >> It was it was basically a clean sheet design. So they went and they got Dave Cutler from Digital Equipment who had done operating systems for them. VMS and RSX11 he had done. And so he came over after I believe it was Prism and Micah were some projects at Deck West that got cancelled and so you had a whole team of guys with their project is canceled and basically they took a whole bunch of them and came to Microsoft and I don't know the specific deal but they all showed up. So you had Dave Cutler and Mark Lakowski and all these really smart guys from Deck and they did basically a clean sheet but they also had OS2 as a starting point but OS2 is of course written in assembly language and NT is going to be written in C. So to what extent they were able to leverage any of that I don't actually know but at least they had a system to start with. >> You said that Dave Coulter is the man the mind behind Windows. Can you uh can you explain? >> So Dave Culler is the architect of the kernel. So he is Lionus in the Linux world. It's Dave C in the Windows world. >> Dave C. Okay. And uh it's not that there weren't other people that contributed, of course, huge pieces to it, but uh I think he's the driving force behind it and always largely has been. And he's still I think he's 85 now. He still codes every day. He's a Microsoft fellow. He's far as I know still goes into work. So, >> uh can you speak to the genius of that guy? Like what's what's interesting about his mind having having worked with him, having interacted with Dave Culler? >> Well, the dude's wicked smart, but he's also like a farmer. He's like the guy that will follow you around and make sure that stuff gets done and gets done right to make sure that you're not checking any crap into his operating system and he won't tolerate it. And he's a real taskmaster in that regard. But I think it really paid off because it was a very big paradigm shift for Microsoft developers to be subjected to the >> Dave Cutler digital equipment style of leadership. uh what did you learn from that about um successful software teams where there's large number of people collaborating cuz Microsoft had a lot of brilliant engineers back then and like you said D cutler they had to uh they had to create completely new systems many of which we still use today what have you learned about great software engineering teams from that time >> tools are everything I think for one I mean people are everything we'll give that as a granted but the tool set is a huge factor. If we would have had git it would have been immensely easier. We were using diff and you know manual deltas to do the porting and stuff. So being able to fork a branch of source code would be a luxury that is new to me. So >> at the time it would have been really handy. >> What were some memorable conversations from that time when you walked over next door? >> Uh well one I was not present for was somebody was complaining. A new hire came into the team and was working on what I believe was called Cairo. And Cairo was going to be the next future operating system was going to be beautiful and have a whole new user interface newer than Windows 95. And it never materialized. But while they were working on it, one of the guys was working on Cairo was kind of flaming on the open anti-dev alias, which is thousands of people, how shitty the anti boot experience was. And the response that came back was an epic flame that I wish I would have saved. And I won't name the guy who wrote it. He knows who he is. But uh it was a work of art of angry flame mail. Kind of like the ones you see line of send every now and then about colonel stuff. So it's a very similar sentiment. >> Were there like kind of intellectual debates like there's some some heated stuff engineers? >> Yeah, it got contentious. So you've got intellects competing and eventually the technical merits for some people are secondary and it's about besting the other person in that argument and it's no longer productive at that point half the time. But there was a fair bit of that. >> Yeah, I've I've seen those kind of debates in uh like programming language design communities like Guido Van Rossom, the leaders of those communities, it can wear them down cuz people get you almost like forget the mission you're on and start being very nitpicky about the details. I mean, engineering minds get together and you just go to war over the stupidest like syntax subtlety, >> right? was I shouldn't say stupid but it's a small syntax subtlety for that's for programming language and I'm sure there's internal battles about specific kernel components. >> Yeah, I mean there was one that I lost that still bugs me to this day I think and uh >> I still think I was well when we were doing the shell we were porting everything from ancient unic code. So every character that was 8 bits now becomes 16 bits. Now, the problem is I'm on a MYIPS box because I'm porting it to risk and you can't have unaligned addresses. But if you take two ID lists, which are basically path components, you take the one for C colon backslash, take the one for Windows, take the one for system 32, and you add them together. But if you've got an odd number of characters, now you're at an odd address in this thing. And it takes me an immense amount of work to turn on exception handlers, to do unaligned bite access, to pull the string out and copy it manually. It's just a it's literally like a hundred to a thousand times the amount of work to read a string out of this ID list on a MIP's machine because it's unaligned. So I'm having the argument that even though it's late in the Windows 95, they've already shipped one beta that we should now just guarantee that ID lists are always an even number of bytes or do some hack to just make sure this never happens. So the code that references them on other hardware can just blaze through it. And it became a shouting match and sort of a personal match. And I lost that one. And I still think that I know today that that code running on Windows is thousands of times slower than it has to be and it nobody cares because it's plenty fast but it could be a lot faster. >> Yeah. So uh yeah I mean you mentioned MIPS and risk 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 MSTOS >> well about half your day is going to be spent debugging and h and most of that time is going to be spent in call stacks that are in pure assembly language cuz there's No source level debugging. >> Mhm. >> So it's not like we're in Visual Studio and you hit a break point 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. >> Even if you're programming in C, the debugging is in assembly. >> Yeah, 100%. >> Oh man. >> So it's a little cumbersome. >> Better yet, we're doing four instruction sets because we're doing Intel, uh, MIPS, Alpha, and Power PC. So depending on which machine it crashes on, you've got an entirely different instruction set that registers. So you get reasonably adapted debugging all four, but uh I had more experience in my so myip stuff would come my way. >> That's a real endurance event. I mean can you speak to that the the torture there's debugging especially that kind of debugging without the without the tooling associated with it? I mean that's you know programming kids these days uh programming isn't all about creating beautiful things right it's uh also about fixing things >> yeah I would say that 20% of my professional life has been creating and 80% has been debugging and fixing >> and I mean I got a bit of reputation as somebody who could fix stuff and so stuff like that would flow to me and so I would spend more time doing that I wasn't renowned as a creative UI genius where I'm flowering ing all these new ideas. So, I got to fix ugly stuff. But you get really good at that. So, I don't mind it until it's one of those things where you've been chasing it for so long that you don't know what to do next and you can't understand why it doesn't work or how it ever worked or whatever situation you happen to be in. And uh you know, after a day of it, it can get pretty trying. >> Yeah, debugging can be real torture. This could be really really difficult. There's a psychological component I think of perseverance. I think the ones that, you know, take you a day, they resolve one of two ways. Either it's like, oh, extra semicolon, and then you finally see it, or it's some horrible manifestation of crossthreaded department nonsense that was really hard. But it can go both ways. >> Um, I had a bug, it wasn't my bug actually, but it was a manifestation of a bug in task manager where every now and then it would say greater than 100% total CPU usage. And this looks pretty silly for a task manager. So, I had tried to resolve it for a long time. And I'd talk to the colonel guys about my issue and they were unsympathetic, let's say, because the kernel guys are a special breed and they weren't interested in my userland problems. It's probably some issue in my code, right? And they're probably right, but it wasn't in this case and I was sure of it. And so I kept adding asserts all through the code to make sure that the that the preparatory steps of adding the stuff together were never more than 100 and that the final sum was never more than 100. And finally, it never asserted. But occasionally we would get this bug where people would still see it. And so I finally put my phone number in the assert. And I was like, if you see this message, call Davepl at 425836, my phone number. Um, and finally, we did get a catch in the actual stress debugger that I was talking about earlier where it happened to somebody with a debugger connected. We were able to go through and it was actually a kernel accounting issue and it wasn't a task manager issue. So they just fixed it in the kernel once I was able to prove that it was in fact the kernel issue. And uh you'd think we would then remove my phone number, but we just commented it out. So it's shipped and it's in all the damn source code leaks for NT that are out there. So that's how I find Task Manager code is I search for my phone number on Google and it will reverse find the empty source code. >> Can you speak to the search thing? By the way, I saw I think you tweeted or you said somewhere that if you want to take your search really seriously, you add your your home phone number in there. It's true. It's true. >> A little facicious because it's probably not the smartest thing, but you will find out. But I mean, assert by itself is already a serious thing because it stops at all execution. I mean, this is one of the reasons I really really love asserts cuz they they stop everything and force you to take care of the problem. Yeah, I'm a little religious about my asserts, too. I don't assert things that I hope aren't true. I assert things that I know cannot be true. And I think that's really the intent of an assertion, so I'm overstating the obvious. But when it does occur, it's a bug, plain and simple. It's not a warning. It's kind of fascinating how often it can really help you figure out the problem because if you put asserts everywhere, you can get very quickly to the source of the problem. >> Yeah, I tend to it's not something I want to suggest you go back and add later. It's something you should do organically as you build your code. So for each function, if you've got assumptions like I know that this pointer is never null, well assert that. If you know this count is always less than twice the bite width, assert that. And don't be afraid because if it asserts it's doing you a favor. I think some people are afraid. You know, it's like when you turn out of an intersection and you think maybe there's somebody coming and you don't look left. >> Yeah. >> Or maybe I don't want to do that. But um it's like that people don't assert because they're afraid they're going to fire. Well, no, you want to know. >> 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 what is 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. >> Yeah. It lists all the processes. I mean, it's a legendary piece of software. It's crazy. I mean, you just take it for granted. It's like the start menu, right? Yeah. >> It's like genius. Well, I had the great fortune of working on a lot of things that people are familiar with and task manager was one of those side projects that I started as something that I wanted for myself and eventually came in house. So I started writing it at home and I got kind of the basics up and running and I was using I think it's HQ current perform or HQ performance in the registry to get the stats because I didn't have access to the internal APIs because I was working from home and I don't call those if I'm working from home >> and uh when I brought it in house then I was able to call things like antiquery system information or antiquery process information and get the real answers very quickly which enabled it to become a very fast and responsive app. So people have come to rely on it because I wrote it to be as reliable as possible. I wasn't worried about the features. There was a basic set of functionality that I wanted in there and I got everything I wanted, but I wanted it to be really robust and so that and small and the original was like 87K. >> Okay. Can you speak to what it takes to build a piece of software like that that doesn't freeze? >> Uh, you don't assume much, right? If you're going to call the shell to run an app, well, that could be a network path that's on a TCP IP share that takes 90 seconds to time out. So anytime you do any kind of AP API call like that that could take time you're gonna wind up doing it on a separate thread and so the app becomes a little bit more complex because everything is multi-threaded. >> Okay. So what programming language were you working in? >> C. >> So this was for Windows NT. >> Yes. >> Okay. >> So this shipped initially in NT4. >> Okay. So what are some interesting details about this program because you have to get as simple as possible but also as robust as possible. Now, what are some interesting optimizations for example, you had to implement? >> There's a couple things I a little hardcore now. I'm surprised I did. Like I didn't want to link to the C runtimes at all. So, I made sure never to call a runtime call and I didn't link to them and that saved me whatever the C runtime is 96K or something. So, you know, it almost double the size of the app if you just touched any C call. So, I was careful not to do that. But then I was actually writing in C++ which is C with objects more than anything. But uh in order to get it to work, I had to go through and call all the object constructors manually from the dispatch table and stuff because you don't have the run times to do it for you. So you're working with a compiler that doesn't have its runtime. And I don't want to rat hole on the technical issues, but it's a lot of extra work to get it to work, but when you do, it's incredibly small and tight. >> That's about the size of the program. Um what are some interesting aspects of tracking down like every every process and how much CPU usage >> in that process? cooler things that I saw is I don't want to say I invented Hamming code, but I kind of invented Hamming code without knowing Hamming code existed. So every column and every row in task manager has a bit on whether it's become dirty or not. And then I can look basically the same way Hamming code looks on your X and Y columns to find out which rows have changed. Go through and find out which ones actually need to be repainted. So task manager is super efficient and it works in concert with the list view control which provides that functionality to go through and repaint as little as an individual cell that changes from frame to frame. So it can paint very fast. It can resize very smoothly and resizing was probably my biggest uh personal goal with that app. So you can size it to any size and it still works. And even if you have 32 CPUs, which wasn't possible in the day, it will draw, I think, only eight graphs and then it wraps. But, uh, it still works today. So, kind of proud of that. >> It's just incredible. Um, you've gotten a chance to sort of observe the evolution of Task Manager. In some ways, it really hasn't changed much. Maybe there's some prettier aspects to it that fit into the whatever version of Windows it's in, but it's really basically the same thing. the functionality is very same. Um the reporting is more because they've added GPU and thermals and things like that which is really nice to have and we didn't have that ability in the day. So >> I mean what can you say? Do you know about like was there any refactoring done or is it basically the same code? >> Uh as far as I know the original code's still mostly all there. So there are layers of drawing code and dark mode code and whatever else XML schema code that goes on top of that that makes it 4 megabytes instead of 87K. But that's the world we live in. Yeah, it's one of those pieces of software you create and it just stay once it's there. This is really like the start menu and then I'm sure if you remove it, people will just lose their mind. >> Yeah, it might be locked in for a while on that one. It might be good. >> Yeah, I thought that would be true for Clippy, but uh Clippy will make it back one day. All right. What What are some um 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 said, I told them what to do. And they said, "Well, how do you want to spend your next 3 months?" I said, "I have no idea." And he said, "Do you want to port pinball?" And I had I'd seen Space at Pinball as a game standalone for the Win 95 platform. And it had a couple different tables. And it was a cool game. So, I was kind of excited. And what they wanted was some visual splash for NT to show that NT can do for then high-speed graphics and or at least responsive graphics. And so I took a shot and unfortunately a lot of the code was in assembly and I was on the so I had to rewrite the code in C so I could then port it to all the different platforms and at the heart of the game is a huge state engine and it's like a giant switch statement with if I remember like 50 entries in it. >> Yeah. >> And
Resume
Categories