Transcription Chat with AI FAQs Transcription Summary 23328 Words, 121629 Characters
English Follow along with audio Add speaker labels Report an issueThe 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-on-zip compression support in Windows.
And he ported the code for Space Cadet Pinball, a.k.a. 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.
And now, a quick few-second mention of each sponsor.
Check them out in the description or at lexfriedman.com slash sponsors.
It's the best way to support this podcast.
We've got Uplift Desk, which is an incredible company that has been my go-to for a long time.
I've been a big fan of Uplift Desk.
Here's Dave Plummer.
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 radio shack and you know they had
the standard component stereo systems and everything else the 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 and they said they just got it and they hadn't set it up yet and so i was rather
precocious and i figured 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 the
tandy and their infinite wisdom use the same five pin din connector for power video and i think
cassettes so they're all identical 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 two plus two works perfectly yet
more simple in english that you enter into a basic level one interpreter is not gonna 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 program that's kind of a logical
correct but has no chance of working on any interpreter that existed at the time so
it took me a while to figure what was actually going on with them but i rode my bike down there
every thursday and saturday and they had gracious to let me use the machines when was this 79 80
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 trs 80 model one 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 and i think that's the reason why i'm
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 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
computer that 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 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 hand-coded machine language and you can't relocate 6502 so
if you need to do that you can do it on a computer and you can do it on a computer and you can do it
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 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 because 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 assembly
not assembly yet because there's no assembler built in so i should have read an assembler
written an assembler is my first task but i wasn't that clever so how hard is that to do
trivial and it's one of those things that sticks i think you do it's so hard to do it's so hard to
do it so many times you know if i give you a c issue there are certain syntactic issues and see
that you're never going to forget and get wrong yeah and it's just one of those like what are the
limitations of programming and 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 an assembly language i've
actually 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 trs-80 model one 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 post-graduation but i love what i do and so i think that was a lot of consolation it's like it
doesn't really matter what i'm doing at this point because i kind of love doing it so so you'll figure
it out yeah as long as you're following this kind of feeling 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 gonna be embarrassing if i show up because 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 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 because 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
stuff and that's all entertaining but the worst the most the suckiest part for me was doing the
gas dips 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 so i'm doing that
first time i do it i drop the pole and i re-drab 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 three seconds later right and i think that
was really the moment for me to be like oh my god i'm going to do this for my whole life i'm going to
be like oh my god i'm going to do this for my whole life 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's 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
weird thing that you can do with your brain you realize to yourself 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
hiding 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 it'll be made for you eventually okay 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
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 one percent
or the grace of the professor that let me through i just about ended my entire university career
here so fortunately those marks don't count in a transcript because they're remedial classes
and so i got kind of a fresh start the next semester and did it for real 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 art 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 50 something 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 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 ub net to tcpip and modern
networking which really amounts to swapping cars but then figuring out why their config.sys doesn't
allow lotus to run anymore because it's got 10k less than it used to and it's just a horrible time
to be working on 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 and
the making of microsoft hard drive i think is the title and it's a great book it's just sort of a
matter-of-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 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 hyper
cache which is a file system cache for the amiga because you 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
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 alistair alistair 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 slivka who did a phone interview who eventually went to pirate me to work
in ms dos for the summer so that's how i got there you put yourself to school by
telling about hypercache 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 at 20 bucks a copy or 40
bucks a copy what program what language was it written in c
so there were some assemblers the actual really tight code to do the real work of transferring
data to and from the cache with 68 000 assembly everything else was c okay this is uh like file
system io device block io so any block that gets service from the drive would go through my cache
first and it was an n-way associative cache and so it would try to match the geometry of the drive
and do pre-fetch based on you're trying to read a whole track at one time that kind of thing
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 amiga 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 she had a cell phone because her dad was very concerned about her safety so
this is late 80s 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
20 bucks which to me is a thousand bucks which in 1989 or whatever year it is 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 oh i'm just not going to speak because i don't look stupid
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
old slogan of a computer in every home and a computer on every desk there was a 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 ms dos 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 dos it's uh success of ms dos is probably pivotal to the success of microsoft
yeah before dos they were largely a language company so they had made basic for a lot of
computers and they had a fortran 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 a certain
extent they lucked into that and on another hand they were smart to have done it so because they
didn't charge at 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
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 add a text-based
graphical interface for things like an editor and quick basic
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
on 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's it like what are some interesting
details there like you said there's the memory constraints of 640 uh kilobytes yeah 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 minute of your life you're going to be able to do that so it's not going to be
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 640 yeah yeah no it's not him
okay it's been attributed to him but not real uh 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 disk cache because i had familiarity with disk
caches and to add cd-rom caching to it because i was new cd-roms were just just coming out
bookshelf
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 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 holing on the technical
aspect of it on the x86 there's something i believe called the a20 line 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 one megabyte mark 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 one 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 high mem was because i
was an amiga programmer and i'd 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 com la 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
that's when i was working on the 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 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. 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 zip folders at some point. But
I was just fascinated by the new shell. And that's why I wound 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. If you take a machine and write a cool ball program for it in 1962,
jump in your time machine, go to Poughkeepsie 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 on 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 created a spirit
of programming that propagates to this day. That's true. That's true. Like scale matters.
Yeah. And it's penetration on the server side of things now is,
I don't know if it's equivalent to what System360 achieved, but it's almost ubiquitous.
Yeah. The world, I mean, this is the quiet secret of the universe is it runs on Linux.
Okay. So tell me about the days, your work days. What were they like back then?
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 PDP-11 called Miss Piggy, which ran Whiz Mail. And we're running MS Mail. But MS Mail has
a fixed address book that every user can use. And it's a fixed address book that every user can use.
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 NNT. 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 crash.
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 triaged 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.
Exceptions. I wrote a lot of new code on the side to get it out of my system from a day to 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 what is it? Windows 95 code
to NT?
Yeah, we took the entire Windows 95 user interface and we ported it to NT, which meant making it
Unicode for one thing. So everything that was 8 bits is now 16 bits. So pointers, 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.
I saw code that was like 200 some characters wide with, you know, profanity and swears in it.
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, because 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 story of programmers. You think you write a piece of code and you think
you'll never be seen by anybody. And oftentimes that code is going to be seen by a very large
number of people that come after you, including you five years later. You yourself looking at your
own code. Okay. So tell me about Windows NT.
That was a giant leap 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 DEC West that got canceled.
And so you had a whole team of guys where their project just canceled. And basically they took a
whole bunch of them and came to Microsoft. And I don't know the specificity of the deal, but they
all showed up. So you had Dave Cutler and Mark LaCroix. And so you had Dave Cutler and Mark LaCroix.
Mark LaCroix and all these really smart guys from DEC. And they did basically a clean sheet,
but they also had OS2 as a starting point. But OS2 was 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 Cutler is 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,
it's Dave C in the Windows world. And it's not that there weren't other people that contributed,
of course, huge pieces to it, but 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, as far as I know, still goes into work. Can you speak to the genius of that guy? Like
what's interesting about his mind, having worked with him, having interacted with Dave Cutler?
Well, the dude's wicked smart, but he's also like a farmer. He's like the guy,
we'll 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.
What did you learn from that about successful software teams where there's a large number of
people collaborating? Because Microsoft had a lot of brilliant engineers back then. And like you
said, Dave Cutler, 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. 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
didn't have manual deltas to do the sporting 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?
Well, what 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 when
it was 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 NT dev alias, which is thousands of people,
how shitty the NT boot experience was. And the response that came back was an epic flame that
I wish I would have saved that I won't name the guy who wrote it. He knows who he is. But
it was a work of art of angry flame mail, kind of like the ones you see Linus send every now and
then about kernel stuff. So it's a very similar sentiment.
Were there like kind of,
intellectual debates, like there's some, some heated stuff.
It was years.
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 seen those kinds of debates in, like programming language design communities,
like Guido van Rossum, the leaders of those communities, you can wear them down.
Because 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.
I shouldn't say stupid, but it's a small syntax subtlety. That's for programming language. 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.
Yeah.
What's that?
Well, when we were doing the shell, we were porting everything from ANSI to Unicode. So every character that was eight bits now becomes 16 bits. Now, the problem is I'm on a MIPS box, because I'm porting it to RISC. 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's not a good idea.
And it takes me an immense amount of work to turn on an exceptional
handlers to do unaligned byte access to pull the string out and copy it manually.
It's literally like 100 to 1,000 times the amount of work to read a string out of this
ID list on a MIPS machine because it's unaligned.
So I'm having the argument that even though it's late and 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 our hard work 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 nobody cares because it's plenty fast, but it could be
a lot faster.
Yeah.
So, I mean, you mentioned MIPS and RISC.
How deeply did you have to understand the lowest level, the lowest level of the software
and even the hardware with the stuff you were building?
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 MS-DOS?
Well, about half your day is going to be spent debugging, and most of that 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.
So even if you're programming in C, the debugging is in assembly?
Yeah.
Assembly.
Yeah, 100%.
Oh, man.
So it's a little cumbersome.
Better yet, we're doing four instruction sets because we're doing Intel, MIPS, Alpha, and
PowerPC.
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 I had more experience in MIPS, so
MIPS stuff would come my way.
That's a real endurance event.
I mean, can you speak to that, the torture that is debugging, especially that kind of
tooling associated with it?
I mean, that's, you know, programming, kids these days, programming isn't all about creating
beautiful things, right?
It's also about fixing things.
Yeah, I would say that 20% of my professional life has been creating and 80% has been debugging
and fixing.
Yeah.
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 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, you know, after
a day of it, it can get pretty trying.
Yeah, debugging can be real torture.
It can 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 cross-threaded department nonsense that was really hard, but it can
go both ways.
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 kernel 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 user land 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 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 down.
I put my phone number in the assert, and I was like, if you see this message called
APL at 425836, my phone number, 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 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 NT source code.
Can you speak to the assert thing?
By the way, I saw, I think you tweeted or you said somewhere that if you want to take
your asserts really seriously, you add your home phone number in there.
It's true.
It's true.
A little facetious, 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.
This is one of the reasons I really, really love asserts.
Because 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 good results.
Very quickly to the source of the problem.
Yeah, 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.
As you're building.
So for each function, if you've got assumptions, like I know that this pointer is never null,
well, assert that.
If you know that this count is always less than twice the byte width, assert that.
And don't be afraid, because if it asserts, it's doing you a favor.
I think some people are afraid.
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 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 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 do that.
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.
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 HKEY Current Performer.
HKEY 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 when I brought it in-house, then I was able to call things like anti-query system
information or anti-query 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.
It was a basic set of functionality that I wanted in there and I got everything I wanted,
but I wanted it.
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?
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 API call like that, that could take time, you're going to 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?
What are 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 it as simple as possible, but also as robust as possible.
What are some interesting optimizations, for example, you had to implement?
There's a couple of things that are 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 was.
It was 96 K or something.
So, you know, it almost doubled 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 plus plus, which
is C with objects more than anything, but in order to get it to work, I had to go through
and call all the object instructors manually from the dispatch table and stuff, because
you don't have the runtimes 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.
What are some interesting aspects of tracking down like every, every process and how much
CPU usage is in that process?
One of the 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 in 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 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.
Yeah.
I think only eight graphs and then it wraps, but it still works today.
So I'm kind of proud of that.
It's incredible.
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.
The reporting is more because they've added GPU and thermals and things like that, which is really nice to have.
We didn't have that ability in the day.
I mean, what can you say?
Do you know about, like, was there any refactoring done?
Or is it basically the same code?
As far as I know, the original code is 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 four megabytes instead of 87K.
But that's the world we live in.
Yeah, it's one of those pieces of software you create and just once it's there, it's really like a 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 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 said, I told them what I was doing.
They said, well, how do you want to spend your next three months?
I said, I have no idea.
And they said, do you want to port Pinball?
And I had seen Space Cadet Pinball as a game standalone for the Win95 platform.
And it had a couple of 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 them 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 MIPS.
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.
It's like a giant switch statement with, if I remember, like 50 entries.
And it's got an Easter egg built in and decoding the state.
It's like running a neural network through this thing as you hit it with different states.
And I just put it aside and treated it as a black box.
And so my code runs on top of that and does the drawing and the sound and everything else.
But the original game is still running.
And somebody recently asked me, why is it slightly different?
The physics are slightly different from the Win95 version, but it should be the same code
because I'm trying very hard to preserve that.
But what it is,
is I had a bug where I will draw as many frames per second as I can,
which on a modern computer could be 5,000 frames a second for pinball
because it's a pretty basic game.
And so all your physics are interpolated 5,000 times per second
instead of 30 times a second or whatever you would have got in the old ones.
You're getting arguably better, at least different physics.
But they fixed that since, so.
Why is that game so awesome?
I think it's a great design.
I mean, I take no credit for that.
That's all totally the guys at Cinematronics.
But the original game is a great design.
It's very similar.
It's sort of Black Knight 2000, which I own as an actual physical pinball machine.
And the layout is actually very similar.
I don't know if it was inspired by it or not.
So it's a good game.
Yeah.
Sometimes I think about, like, Tetris,
about certain games with pretty primitive graphics
that captivate the excitement of a large number of people.
And maybe it's the excitement of a large number of people
that contributes to the awesomeness of the game.
So when many people together get excited and talk about it,
that sort of gets implanted into your head.
But that's one of the great games.
I mean, even like Solitaire and Minesweeper.
I mean, there's just a generation of people
that have gone to war in Minesweeper, right?
Well, those things were included in the OS,
not as games, but as educational tools to get you to use a mouse.
Oh, interesting.
So Solitaire is there to show you how to do drag and drop.
Yeah.
And Minesweeper is probably right-click.
I think you put a flag or something.
I'm not a Minesweeper guy, but. So each one of them teaches you something.
Minesweeper guy.
That's funny.
Yeah.
Wow, I didn't know that.
That's interesting.
And that's true.
But I don't know how many hours I've spent on these games.
And like millions of people
have spent millions of hours on these games.
I used to volunteer teaching computer science
at my kids' school, you know, for the third graders and stuff.
So it's more like logging in than computer science.
But the kids, of course, all their dads work at Microsoft.
So nobody's impressed by anything you do.
But one of the kids found out I worked on pinball.
And then they were like, whoa, you worked on pinball?
Because they all knew that in those days.
Now the kids are probably aged out.
They don't know it.
They don't know it anymore.
But for a brief period.
You're behind the Windows activation.
You say it like it's a bad thing.
Everything's a matter of perspective.
So tell the story of that.
What's Windows activation?
How did you get involved?
So they came to me late in the XP ship process.
I don't know if the beta had gone out.
I don't think the beta had gone out yet.
But they had intended to take the Office activation code
and then adapt it to Windows and add activation to Windows.
But whoever was responsible for doing it
had slipped it enough times that it wasn't going to happen.
And so I had kind of a reputation
for being able to fix things quickly.
So they came to me and said,
can you get this done in time for XP?
I don't know, but I'll try.
So with the help of the guys
that were doing the DRM stuff on the DRM side
and the research guys doing the math
for the product keys and everything else,
we cranked it out in time for XP.
And I don't know what actual impact is for revenue,
but I imagine it's substantial
when you start enforcing license keys.
I wonder what it is.
I don't know.
Because it's also annoying.
It is, especially if you have to phone activate.
And that was just the case that we had to carry with us
as an albatross around our neck,
where you've got to pass data up to the clearinghouse,
the backend systems that are going to approve your key.
You've got to tell it all your hardware parameters,
like how much memory and hard drive space
and the various things the hardware key is bound to,
as well as the product key.
And you've got encoded in letters and numbers
that somebody is willing to read in over a phone.
And if you think doing product activation,
it's painful over the phone,
could you imagine being the person that worked
on the other end of that line?
I mean, that's just got to be a mind-numbing job
to listen to product keys for eight hours a day.
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 like,
not the power user, I should say.
Which is why sort of 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.
I had no idea, but the outrage is palpable
amongst people that you just put it on the left or top
and you can't anymore,
and it is an affront to their existence.
And I understand it to a certain extent.
Well, it's one of the main reasons I really just,
like, there's a lot of aspects about Windows 11 I dislike,
one of which is like,
you can't customize things as much
about the position of the taskbar,
just basic customization.
Can we just configure stuff?
Because there's going to be a small contingent of power users
that are just going to enjoy the hell out of this operating system.
If you just give them that option,
it costs you nothing.
Just give them that freedom.
Well, it does cost, right?
Because the freedom to put the start menu on the left
or the top or the right,
it really increases the complexity of the code
that renders the start menu and lays out the tabs
and does all the things.
And now it's a much larger surface for bugs
and it's a much larger piece of code to maintain.
So you probably need more developers or another developer
or some portion of a developer's time.
So the question becomes,
at what point is it still worth it
to satisfy the niche needs of a small set of users?
And those decisions weren't mine to make,
but I can see it from both sides.
I think, just like the people who make movies
and insert very nuanced details
that only a small number of people will realize are there,
that's going to really pay off.
There's a kind of reputation that builds over time
that has a very powerful ripple effect
that I think it has so many benefits,
including for hiring great software engineers,
it's like you create this aura of a place
that puts love into every detail,
that really takes care of the power users,
that takes care of the developers.
I think Microsoft has more and more moved in that direction
with GitHub and acquiring GitHub
and just taking care of the developers.
But on the Windows interface side,
come on, some customization.
With VS Code, you can customize everything.
Why can't we customize the start menu?
Anyway, and the taskbar,
and really every aspect of the Windows interface.
Maybe you're right.
Maybe it increases the complexity of the code.
I suspect that's just not the case.
I bet it was.
I bet it was a scheduling decision
when they rewrote the start menu.
I think they rewrote it
because it's different than the old taskbar.
And somebody was tasked with,
you've got to deliver this set of functionality,
and if I cut out putting it on the left and the top
and the right and two rows of tabs
and all the other cool features,
I can deliver it four months sooner.
And I'm not saying that's the right decision,
but I'm guessing that might be the kind of thing
that motivates it.
And they're on such a different release schedule now.
It used to be,
you won't see much craftsmanship
unless somebody owns a component for a long time
and it settles to a point
that then you can work on and polish it, right?
But if it's always churning
and the UI is changing every release,
it's never going to get that level of polish.
Although I think,
UI's pretty nice, but. It is nice, but I just don't think it's a scheduling thing.
I think it's a craftsmanship thing.
Just like you with a task manager.
If there's a guy or a girl in there who take ownership of it,
who have passion, for them it's a thing that they take pride in
over a period of time.
They can, by themselves, in a short amount of time,
create something truly wonderful.
Right.
I think if you have large software engineering teams
with managers and scheduling of meetings and all this kind of stuff,
yeah, okay, then your argument applies.
But if you allow the flourishing of individuals that create cool shit
and their own side project, which Google is very good at.
They've tried that, right? Google, yeah.
Yeah, have fun with it.
Do some crazy stuff, and then we'll integrate it.
We'll try to integrate into the whole ecosystem.
I don't know.
Yeah, because to me, it's such a great joy from an individual developer
to create something like customization of the start menu of the taskbar
because you know that millions of people are going to use it, the taskbar.
And then you know that thousands, tens of thousands of developers
might be using it to customize even little subtle aspects of the taskbar.
You know how much joy you create, you give to people to customize,
to have something.
It's some kind of JSON thing where you customize something about the taskbar.
Okay, but how do you respond to the Steve Jobs aspect
of giving you customization implies that we couldn't figure out the right answer for you?
Or maybe there is no right answer, and all four answers are equally right.
I have no idea.
Right.
I think I've always, I'm glad Apple exists.
It's a beautiful thing.
That ideal of design is wonderful.
But I always thought that Windows creates the contrast.
Like the point of Windows is to be,
the operating system that works on all kinds of devices
that is supposed to be much more open.
And they've moved towards that direction more and more
with Windows subsystems for Linux.
It's just this whole developer-friendly ecosystem.
The interface should be in the spirit of that, I think.
Right.
But I do think that there could also be security vulnerabilities
that are created with that.
It's not just the complexity of the code,
because Windows is just under attack.
Yeah.
It's very difficult to keep it secure.
Anyway, taking that,
that tangent,
you also developed a zip file support for Windows,
creating Visual Zip,
like I mentioned,
zip folders that eventually evolved into zip folders.
Tell the story of that.
So that was a piece of software that I wrote at home again.
And what happened was I was out with my wife,
and I think it was a Sunday afternoon.
We're driving around.
This is 1993,
and we're living in our apartment.
And we're just seeing what the housing market is like out there.
And there's a guy,
he's got this beautiful three-bedroom house
and a Corvette convertible,
93 red,
torch red,
parked in the driveway.
And the house,
it's for sale,
and it's like 300K,
I think.
And there's no chance I'm coming up with 300K at that point,
or even the down payment on that.
So I took the flyer,
and I cut the picture of the house out,
and I taped it to my monitor.
And that was my incentive to just write something at night.
Because when I came home,
I was doing two things.
I was,
one,
expressing a creativity that I couldn't get out at work
when I was just fixing bugs.
And I was trying to make some extra money.
And so I wrote a shell extension.
Before I actually went to the shell team,
I started it,
and that's what led to my,
my interest in going to the shell team
based on a MSDN sample,
or MSJ at the time,
MSJ sample that I saw
on how to like bring up a folder.
Well,
once I had the very basic bring up a folder template,
adding zip file support to it
was just incremental all the way.
And I released it as a shareware product.
I think it was 1995 or 2995.
And I sold whatever,
a couple of hundreds or thousands of copies.
And one day I'm getting ready for work,
and I get a call,
and it's a lady.
And she says,
are you Dave Plummer?
And I said,
yeah.
And she said,
are you the guy that wrote,
VisualZip?
I said,
yeah.
And she said,
well,
this is Betsy from Microsoft,
and we'd like you to come by
and come in and talk about an acquisition of it.
I said,
okay,
what building are you in?
And she's like,
what do you mean?
I said,
well,
I'll come by.
And she said,
well,
no,
you've got to talk to travel,
and you've got to talk to legal,
and this all has to be set up.
And I'm like,
I don't get it.
We both work at the same place.
Why can't I just stop by?
I don't know if I said that literally.
But it was a few minutes of back and forth
where we both realized
that she didn't know I worked there.
Yeah.
That's funny.
They just cold called the author
and then found out that it was me.
Yeah.
That's funny.
So they made me an offer on it,
and it's the kind of thing
where if I don't accept the offer,
now my choices are
I can keep selling my own version
and quit Microsoft,
or I can stop selling my own version
and work for Microsoft.
Neither of those is great.
I mean,
I keep my job,
of course,
but I'd like to still have this income stream.
And the other option was accept their offer,
which is what I did.
So then I bought a used 93 Red Corvette.
And you got to continue building it internally.
I did.
So we took a lot of features out,
right,
to simplify it
because it had encryption
and it had a number of features
that were common in ZIP programs of the day,
but probably weren't appropriate for Windows.
And at the time,
encryption was like a munition.
So you couldn't just add encryption
willy-nilly to various parts
of the operating system.
So we took out some things like that.
Multi-volume support,
I think,
was taken out
just to simplify it.
Can you speak to ZIP in general,
just the history of ZIP
and, you know,
compression,
that whole thing?
It was really born out of the BBS era
when people were dialing in on modems
to download trialware and shareware
and other things from BBSs online.
And to compress them,
executables compressed about half their size.
Other stuff compresses much more.
But a guy named Phil Kass
came up with a command line program
for MS-DOS called PKZIP,
which was able to do compression of programs.
And he has a rather tragic arc,
but it became ubiquitous
in the entire PC industry
and pretty much everybody was using it.
So when Windows came out,
there was no way to open up a ZIP file,
but everybody had been creating them
for a decade.
And so that really drove the desire
to have the ZIP support
right into Windows.
Yeah, and that's another piece of software
that's just kind of with us to this day.
And it could be vastly improved,
but, you know,
it was written in a single-core day,
so it doesn't do anything multi-threaded.
And you've got a 96-core 7995,
well, it uses one of them
to unzip your file.
What other awesome things were you a part of at Microsoft?
What other pieces of software?
I worked on the initial prototypes of Windows Media Center.
So we did that in 96, I believe.
And we didn't have, at the time, any sources.
So we had like a CD of MPEG video files of Raging Rudolph
and I think the original South Park video, the Christmas one,
which is all wildly inappropriate in the workplace today,
but it's all the content we had until we got actually,
we had them put a satellite dish on the roof, a DSS,
whatever the 18-inch dish is,
because we couldn't get cable to the building.
And so we built up this thing that would eventually look a lot like Media Center
and it was distance viewing UI for Windows
so you could sit with a remote control on a desktop
and the current start menu is not great at 20 feet away.
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 it's 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, it'd prevent further damage.
And it puts up a blue screen
and it prints out the stack information,
depending on how your settings are,
sometimes it's just a sad face in the current Windows.
Yeah, I wonder what the first version of Windows
or the blue screen came to be.
So Windows 3 had a blue screen,
but it's completely unrelated to the blue screen in Windows NT.
And I talked to the guy that wrote the blue screen in Windows NT,
his name's John Vert.
And the reason he picked white on blue,
I had thought, I'd always heard,
because in the labs, you could walk through a lab
where we have 50 PCs all running stress,
oh, that one's got a blue screen, it's crashed.
It wasn't that simple, it was just the MIPS firmware
that he was building it on was blue on white.
And Visual Slick Edit that he was using as an editor
was also the same color scheme.
And so you could code, boot, crash,
and reboot all in the same color scheme.
Why do you think so many problems
with computers can be solved
by turning it off and turning it on back again?
I think there's two major things that happen with computers
as you run them over time.
One is memory gets used and not freed.
And so it accumulates on the heap
or in the swap file or wherever,
and things get sluggish.
And the other is code gets into a state
that the developers didn't anticipate
or didn't test very well.
And maybe that's a rare state,
but now that Notepad or Word
or Excel is in that state,
your system is goofy.
So if you just reboot the thing
or shut it down or restart it,
you're getting a fresh state
and there's no memory leaks.
So it covers a lot of sins, basically.
And the intricate ways
that several pieces of software
in a goofy state interact with each other
creates sort of a meta-goofy state
that just kind of,
just the entire system starts acting a little weird.
Yeah.
And it somehow fixes it.
What's some of the best and the worst code
you've seen?
What's some of the best code you've seen
during that time in Microsoft?
What's some beautiful code
and what's some ugly code
that pops to memory?
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
wrote a named pipeline
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 internet.
industrial level. So he came up with a way to do it with name pipes. And I remember doing the code
review on it. Then it was very impressive to walk through the code. It was one of those things was
like, oh, I don't think I could have done that if I was trying. Who's the greatest programmer
you've ever encountered? You know what? I don't think there is anyone. I've met a number of great
programmers, but I'll tell you one story that impressed me a lot was when I was brand new at
the company. I'd been there like six weeks and I'm working on this Ole presentation cache that
I'd mentioned earlier. And I'm on Windows 95 and I've got Excel inserted into Word and I'm in the
kernel debugger and something's going wrong in the scheduler. And I've been there, you know,
I've barely written any x86 code and I'm looking at the Windows scheduler trying to figure out why
my thing is deadlocked. And eventually I get stuck. So I'm kind of out of my element and I
send an email to the Windows 95 kernel team and say, can you send somebody by?
And so about 10 minutes later, this developer strolls in and they're just holding a null modem
cable, which is to connect my two machines together so they can debug them with.
In case I didn't have it, but it was already set up. And so they sit down and they're using
WinDebug, which is just a horrible debugger. It's just, it's accursed, but they're very,
very competent with it. And they are just blasting through the call stacks and they're
checking all these objects in the kernel and trying to find out who's waiting on what and
why things are deadlocked and what things are signaling and what's not. And it's just this
quick silver ballet of call stacks flying by. And I'm watching this and I'm pretty blown away
because I'm a good programmer, but this person is an amazing debugger.
I've never seen a performance like this. And about five minutes in, I just hear, oh, I see.
And then they disconnected and got up and left. And that was Laura Butler, who became a
distinguished engineer at Microsoft. I think she may still be, I'm not sure if she's retired or
not, but so she kind of set my template for, you know, what Microsoft developers were like when
they were debugging and what kernel developers were like, and even what female developers were
like, because I had such a small sample set, but it was a very high standard. So there's a few
things I love in life more than people who are ultra competent at anything really, but the lower
level, the better in the engineering space they're able to, for example, like run or maintain the
infrastructure, the computer infrastructure. So not the individual computer, but the computers
communicating together and working together. Those people are just magicians, right? It's
so inspiring to make. It's like watching a great carpenter or I love anything done really,
really well. Yeah. It's beautiful to see. It's beautiful to see that.
Humans are able to accomplish that even in civil engineering space. When I look at like bridges,
it's like the number of people that had to come together to build that. And now millions of people
use it every single day, but software, sometimes you don't get to see visually just the number of
people impacted by a thing. So imagine how many people are impacted by Linux and all the different
open sources, open source systems that make up Linux. It's incredible. And task managers and
things like that. So it's really, really cool to see how many people use it. And I think that's
a great example of a piece of software. Just how many people use that over the years and how many
times it's crazy. It's probably billions, billions of you. Yeah. Two billion a month or something.
Something like that. I've seen the metrics and it's crazy to you. It is what I love about it
though. And I'm sure you've had this experience where sometimes you design a piece of software
and it's complex and you get it working in your head and you get the plumbing working and you
know how it's going to run and flow. And then eventually you write the code and the code does
that thing that you had pictured in your head.
And now there are billions of copies of that thing that I had in my head running on millions
of people or billions of people's machines. And that in itself is really cool to me. It's not a
vanity thing so much as a, uh, I'm impressed by it, I guess. Uh, how's your programming
evolved over the years? I take a lot more care in complexity these days. So it used to be,
you would write code and just keep writing code, writing code. And then at some point I go back
and clean it up. Well, I write the other way. Now I try to write really clean initial skeletal
code and then flush it out because I have been involved in too many projects of my own and of
other people's makings where things get so messed up that they're just not fixable.
And so sometimes the work you put in upfront pays off, you know.
What programming languages have you used over the years? What's been your main go-tos?
For me, it's been C++ and assembly language.
And still to this day, C++ is really what you lean on?
Yeah, right now I'm a hundred percent Lua and Python, but that's just
side project I'm working on.
Can you speak to the Lua and the Python detour that you took? And, uh, what do you love about C++?
What I'm doing is I wanted to build an AI to play the game Tempest. That's the old Atari game
Tempest. And, uh, this is a game that I actually hold the world record on. And, uh.
Can you take me to this Atari game Tempest? Okay. Atari Tempest. What kind of game is this?
So it's a 3D vector game from 1980. And it's a very complex game. You've got full 360 degrees
of motion. You have 80 degrees of motion. You've got a lot of motion. You've got a lot of
speed shots on the screen. There's like 11 enemies. There's spikes. So it's a very complex
game. It's not like trying to, you know, do pong or something. Okay. And, uh, what I wound up doing
was first taking the ROMs out of the machine and reverse engineering the code. So I got a sense of
where all the code in Tempest lives and what it does, where the zero page variables are, where
things live. Yeah, there's one. So what, oh, wow. That's a very geometric. Okay. What, uh, can you
explain to me the gameplay? Yeah, that's me playing the game right there. This is literally you playing?
This is me. Dave is a high school realist.
The top center. Can you explain to me what I'm looking at? Well, it's a 3D geometric world. It's
basically 3D space invaders wrapped into a shape and the enemies descend from the center of the
tube towards the outside and they all have different behaviors. And wow. So long story
short, it's a fairly complicated game to play well. And I wanted to see if I could get an AI
to do it. And so once I had figured out where all the interesting parts of the game lived in memory,
I added them as parameters and built a LUA app to extract everything from the game's memory as it's
running and put them together as parameters, which sends us to the Python side over a socket. And then
the Python side does RL learning. I'm using a dueling deep Q and I believe two, uh, with two
head and tail and they chase each other and it can play up to about level 36 now, which is way
better than most humans, but that's level 96. So it's got a ways to go yet, but. And, uh, you're
the red thing shooting? Yes.
Okay. What are the options? You can just move clockwise or counterclockwise and then you can
shoot. Yeah. So you have a rotating knob, which is an optical spinner and you have a fire button
and a super zapper for emergencies, but, uh, that's it. Fire and rotate basically.
All right. Let's get back to your favorite C++. What do you love about C++? Why have you stayed
with it for all these years? Because it allows me to encapsulate my favorite C code in classes.
I'm not a big, well, you're really a C guy. Okay. I'm really a C guy. Although I write
two kinds of C++. I write really modern C++ 20 using no pointers, no string or no character
strings. Uh, so there are, you know, it's basically as safe as rust as far as I'm concerned,
or I write C with classes, which is standard C, but you know, with polymorphism and encapsulation
and that's most of what my code is. But, uh, I try to do both. Let me ask you about the whole
time that we kind of skipped over. Uh, you put a lot of software over the years after Microsoft on
the side while at Microsoft.
And afterwards, a lot of successful pieces of software. Uh, one of your companies was
software online and it got into trouble for nagging users too much, I guess, to upgrade.
That's what I saw. What was all that about? And, uh, what did you learn from that experience?
Well, that was other than like family health scares, you know, when kids are sick,
that was the scariest time of my life. And the period leading up to it was one
of the most invigorating and exciting because what had happened was while I was
at Microsoft, I had written all these shareware utilities and I was selling them on the side and
sold one to Microsoft as we talked about. And they started to do really well. And then I discovered
banner advertising online. And so I signed up with my credit card for a site. I think it was
called fast click. And you could say, I will pay this much for a banner ad impression. Here's my
banner. And it would rotate it in. And I didn't set a cap on it. I came back on Monday and I saw
I had spent like $10,000 in banner ads. I was like, Holy crap. How am I going to explain this
to my wife? This is a bug. It's a mistake.
It was my fault. And I looked at the sales and it had made like $38,000 worth of sales.
And I was like, Holy cow. So all I have to do is scale that at some point
and basically did that for the next several years. And the reason we got in trouble was
the AG came in and they had, well, I was blown away because they had like 12 court claims of
action and 10 of them were outrageous, which to me as a person with autism, I couldn't get past.
It's like, I know these 10 things are absolutely not true. Why are we even here?
I'm talking about them. And then all they care is the two things that might be true. And the two
things that might be true were that it was a 30 day trial version. And after your 30 days were up,
it would then, if you continue to run it and not buy it or uninstall it, it would remind you once
a day, not like every 10 minutes, but once a day, or every time you booted your computer at most
once a day. And the AG contended that was too often. It amounted to spam. And so we agreed
with them to limit it to once a week, I believe. And it had to be a button to just uninstall with
one click. So we did those kinds of things. And then we had to do a button to just uninstall with
the other one was in those days, when somebody bought a piece of software, even if they bought
it online and got a download, they fully expected there would be media showing up at their house.
So in the year 2001, which were 2001, 2003, we're talking about, if you bought software,
there was an expectation that a disc would show up. And so we made that the default
was to fulfill by disc and it was 395 or 495 extra. And it was very obvious,
but it was a checkbox and it was turned on to ship the disc to your house.
Because we found if we didn't do that, we got all these calls, people would wait, get an order,
two weeks later, call, where's my disc? And we luckily didn't order a disc.
Well, cancel it all. I don't want it because I'm not waiting.
for it and so we got a lot of returns and we didn't include the disk and so we decided to
include the disk but that is a a priori violation of negative affirmation billing in washington
state because you're giving them a default higher purchase price what about on the
software user relationship it's interesting like how often to annoy the user with the thing
right if you never mention anything they might never discover like something they actually want
right but if you mention it too much then they can get annoyed yeah and what you don't want is
you don't want them to have to do it or buy it or do something to get rid of it that's one of the
things that bothers me with um i think windows does that a little bit still to this day where
it bothers me by asking me certain questions
like do you want this like um it for example i really don't like to use my microsoft account
to log into windows right i think now it's like basically required i think there's just no way
around it but like they make it so difficult to not do that it's almost like they think they
could just trick me into it really does feel like i'm getting tricked into not doing what i want to
do
do right like is i have to like think okay i need to click skip and it'll do something are you sure
like i have to like use too much of my brain to do the thing i like you know as an interface you
know what i'm trying to do you're trying to trick me into not doing the thing i want to do and what
i hate about that is like it's probably effective sure for converting people but it's really
not good long term for taking care of the interest of the user yeah the one that really
throws me is the use recommended settings so i just did when it was upgraded went through the
steps and i'm going through this new dialogue or wizard and use recommended settings sounds
like the thing you should do but i'm pretty sure that resets you to using the edge browser and
all this other stuff so yeah recommended by them but not recommended for me and that's the
difficulty that's a really good example like what effect do you think that does in resetting
the default browser to edge do you think you're going to really earn the loyalty of a user if you
do that don't don't you think that they're actually what you're going to create you're
going to create some passive loyalty from some user base so on the metrics it might actually
look like you've increased the number of edge users but really it's that reputation hit you take
over time where it just forms where the edge is the thing that you can't quite
trust unfairly because i think edge is a really great browser but just this this unpleasant feeling
i don't know what that is and uh well you don't want your operations to be an adversary right
and sometimes that windows can feel adversarial like it doesn't have your best interests at heart
and that bugs me to a certain extent i mean we have this feeling i think we just have general
distrust when somebody is super nice to you and is basically selling something there's a certain
aura about that kind of interaction
and when an operating system is interacting you with you in that way it's like yeah i would much
rather pay 199 for windows pro per year or 20 bucks a month or whatever the fee schedule would
be and not be upsold any further and not have my data monetized and those kinds of things so
did you learn about finding the right balance from that yeah i mean i'm way more self-aware now
there's things i would do much differently particularly in terms of the advertising
i always figured there's a guy named david ogilvie and he did this
ad long ago for the volkswagen beetle where it had a picture of a beetle black and white and it just
said lemon and there was a block of text below it so it's clickbaity and then informational
and i always tried to follow that pattern but there's three ways to sell something i think
and you can use sex fear or greed and sex doesn't work really well for software fear works well for
antivirus and stuff but not so much for optimization and make your computer faster
utilities and so i always tried to cater to the greed aspect uh you know make your computer faster
get more ram available whatever the value proposition is but i realize now that i'm
looking at that with my knowledge and as an autistic person i now have an appreciation
that other people are going to look at it with their background knowledge and may conclude
something different so i might be scaring people where i was just trying to incentivize or get their
greed instinct going so i'd be more sensitive about that kind of thing today ridiculous question
but what do you think is uh the top three windows operating systems the different versions i'm a
fan of windows 2000 server that's wait what really yeah okay that's what i ran my business on i ran
my brother's business we set up multiple salons all vpn to one another and using the sql server and
i don't know if i've ever gotten to experience windows 2000 server so when was xp out 2001
what was before xp 2000 2000 was that good yeah i liked it i mean it doesn't have the visual flash
that came with xp but as a system and especially as a server operating system it was great for the
day but an xp was i would say probably from a completeness perspective an impact and how long
it lasted and it's probably the greatest windows from for consumers the operating system i would
think so it certainly got the longevity for it there's people who still run it i mean i'd still
run around stuff if you get security updates because it does 98 of what i need windows to do
but yeah that was incredible i mean nine so windows 95 i'll probably put windows xp as number one for
me and then windows 95 too what's your metric personal preference or industry impact or
industry impact stability just there's certain like just like with programming you have code smell
just like how well all the features were orchestrated together how there's a design
philosophy that permeated the whole thing and was consistent not too many features not dumbed down
too much right uh
but not over complicated how often it crashes the blue screen all those things i don't know if it's
a very apt description but i think of it as crisp so it's not a lot of rough edges it does what it
does it's snappy and yeah you said you play slot machines and uh given that you uh love hardware
and software you're the perfect person to ask uh how do slot machines work well i'm happy to ruin
them for you okay so it's ironic to me that i play slot machines because i know it's a losing
bet overall but there's a lot of things that i can do to make it work and i think it's a great
thing to do to make it work and i think it's a great thing to do to make it work and i think it's a great
a whole dopamine feast there bright lights and high contrast colors that i enjoy so i do play them
but what happens is internally there's basically a black box mechanism that does nothing more than
generate the next random number and what the outcome is in terms of probability and payout
and then the game says i gotta make up a movie to go along with that and maybe it's three bars or
whatever it is but there's no correlation it's not spinning the reels seeing where they land and
looking that up to see what you won it's completely the other direction it determines whether or not
or if you won and then maybe it's not the other direction it's completely the other direction it's
something up to fit that scenario that that indeed is ruining it for everybody a little bit
uh what kind of code runs them i don't really know i tried to get down and get inside access
to one and it was very hard they don't want to tell you a lot about them i'm sure it's not
that deep of a secret but yeah because they're all basic windows pcs but they're basic windows
pcs on top of a very secure enclave of some kinds that i don't know a lot about yeah it
it was a tech in vegas went around and he was burning his own roms for the slot machines
and with the back door in them and so when he serviced the machine he would just put his rom
in and he'd come back six months later and nice invoke the back door i love humans so much uh
anyway do you have other other favorite kinds of uh systems like that i like a lot of old hardware
i restore cars so i do a lot of 1960s muscle cars cars and trucks and uh old computers so i
restore pdp 11s has been my fascination and my special interest for the last year and i've been
six months or so and i've built a number of those yeah you uh i've seen like you're posting uh videos
about it the pdp 1183 uh what's that whole project so basically what it is is i had built a number of
pdp 11s and so over the years i had acquired all these parts and i decided well let me build the
best pdp 11 that i can and so it was kind of a quest to just like you try to max out a pc i try
to max out a pdp 11 so it's got four main parts and i've built a number of pdp 11s and i've built
megabytes of memory which would be massive in the day and yeah that's it there and it's got lots of
blinking lights and i had to rewrite the bsd kernel to make the lights work and what are we looking at
here what is what's so the very top is a pdp 1170 control panel which we can largely ignore
and then there's two chassis below that one has what are the different knobs sorry to ask dumb
questions here uh the knobs in uh control what view you get of the leds oh so normally you see
the data bus and you can see the address bus and you can pause the machine you can
edit the address on the bus and you can deposit stuff into memory with the switches
man the haptic plus the leds that's what you like imagine a computer to be that's so cool
that's so cool i mean these are what what are these is it du1 du2 yeah it's a weird floppy
drive it's a dual floppy drive with one stepper motor so both heads seek together like siamese
twins okay so what kind of stuff are you doing with this what are you trying to restore them
yeah so i restore them i restore them i restore them i restore them i restore them
yeah so i restore them i restore them i restore them and they actually run
and they actually run
and they actually run yeah oh the blinking lights are real yeah
yeah oh the blinking lights are real yeah
yeah oh the blinking lights are real yeah it's all real
it's all real
it's all real wow then i had to rebuild the kernel and all
wow then i had to rebuild the kernel and all
wow then i had to rebuild the kernel and all that so i had to
and the BSD kernel.
I'm pretty familiar with it now.
Because you can't just add a device driver, right?
You've got to rebuild the kernel
to add support for whatever device.
So you add a new disk controller,
it's time to build the kernel.
So you've got to go find the source
and find the code.
And you can run code on this?
Yeah.
You've written a couple of books on autism.
Being autistic yourself,
I was wondering if you could tell me
about fundamental differences
about the mind of a person with autism
versus, 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,
it 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
2% of the population.
What's the biggest benefit of life
with autism?
I can bring to bear
an incredible amount of focus
and dedication on a particular task.
And it has to be something I love.
It has to be something that's rewarding.
It has to be something
I can make progress on.
And there has to be all these things
that are true about it.
And it can be like a kid playing with trains.
I get that same feeling.
That said, you also said
that you struggle with ADHD.
Yeah, a fair bit.
So that's part of the component.
And maintaining the focus.
You are actually acquiring the focus
is the issue.
So I'm very easily distracted.
I fall asleep with noise-canceling headphones
or I can't fall asleep,
that kind of thing.
But once I get locked in,
I'm very hard to distract.
So it's kind of a paradox.
Oh, that's fascinating.
It's hard to get into that state.
Okay, what's the biggest challenge of life
with an autistic mind?
That I don't know what anybody else is thinking.
So I know what I would think
about this interaction
if I was in your position
and I was you.
Yeah.
And that's the,
that's the best I can do.
But I think most neurotypical people
have a sense of,
well, Lex probably feels this way or that way
because he's acting this way
and his reactions are this
and his facial expressions say this.
And that's all kind of lost on me.
So I run a little proxy NPC game
for everybody I deal with.
So I guess that makes social interaction
a little bit complicated.
It can be, yeah.
Telephone is especially hard
because I rely on a lot of other cues.
And when somebody is just on the phone
and I just have their voice,
there's so much that's implied
between people that I miss.
And so I'm much better on FaceTime
where if somebody makes a joke,
they might smile after.
We're on the phone.
I don't know if you're being sarcastic
or serious and that kind of thing.
So that's probably gotten you
into trouble over the years a bit.
Yeah.
There's lots of times with my wife too
where, well,
there's a certain literalism
that comes with autism.
And we spent years
where she would say something
and I'd say,
but that doesn't make sense.
You know what I mean.
No, I know what you said
and I'm not being just combative here.
I literally only know what you said
and I don't have that.
And I remember we've been
in meetings with people
and there's three or four people
in the meeting
and I'm the only autistic person.
I'll tell that they've got
this communication loop going on
and I feel like,
you gotta tell me what's going on
because I really don't know
what's being said here.
You told me related to this
that there was an early,
somewhat awkward encounter
with Bill Gates.
Can you share the story
of that interaction
and how autism comes into play here?
Yeah, my very first summer
at Microsoft
when I got the internship,
Bill had,
all the interns over,
I guess it was 20
or maybe 25 of us
that got hired that year
over to his house
for burgers and beers
and just chatting in the backyard.
And of course,
it's still Bill Gates
and he's a big enough deal
even then
that you're a little nervous.
And so my manager, Ben,
who was sort of my mentor
at the time,
took me over
to introduce me to Bill
because he knew him
and he's explaining,
this is Dave,
he's our intern from Canada
and in the space of four months
he's done this feature
and just copying smart driving,
listed off all the stuff
I was doing.
But I stopped
because I'm like,
well, actually,
it was three months.
I had to interrupt them
and they both kind of,
what?
And they looked at each other
and I realized
that was the wrong time
to correct the guy.
Yeah, so they bothered,
like little inaccuracies.
Oh, drive me crazy.
Yeah.
And then, of course,
you don't,
the impact that might have
on a casual social interaction,
it's not trivial.
It's trivial for you
to be aware of that.
Yeah, I'm much better
than I used to be
before I didn't know.
And I didn't know
how injecting a correction
meaninglessly into a conversation
could impact
and make the other person feel.
Now I got a better sense of it.
What advice would you have
for folks who have
an autistic mind
on how to flourish
in this world?
In terms of prosperity
and finances,
the biggest thing I can say is
sell what you can do
and not yourself.
Because if you go into
a job interview
and you try to wow them
with your personality,
and how amazing you are,
it may or may not go well.
But if you can go in
with your portfolio of work
and say, look,
here's my GitHub history
and here are the awesome
projects I contributed to
and here's the actual
algorithm I wrote
and this is what I do.
I think you get
a lot further with that.
So whether you're
playing the piano
or writing code.
That said,
so much of software engineering
on large teams
has a social component
to it, right?
It does.
And that was a liability for me.
How do you,
I mean,
what have you learned
about how to solve
that little puzzle?
I think the biggest
deficit for me
was when I started
to manage people.
Because now you're
concerned about
their hopes, dreams,
aspirations,
what motivates them.
They have entire lives
that are kind of
a mystery to me
because I assume
they want to be motivated
and led and encouraged
and compensated
exactly as I would.
And that's not always the case.
Some people need
a lot more affirmation.
Some people just want money.
Some people want to be
in the important meetings
and make decisions.
But I was largely
oblivious to that.
And so eventually
I had to learn
that everybody
that you're managing
has their own set
of incentives and priorities
and they're completely
different from what
I think they probably are.
So you could, I guess,
make things more explicit
and just communicate better
about, like,
ask them about
what their interests are.
And that's something
I started doing
is overtly asking
because it's hard for me
to nudge somebody there.
I'm not good with
that kind of social dance.
Yeah, part of the social dance
is there's a lot of stuff
that's unsaid.
You can kind of figure out.
You can read people.
But if that's, you know,
with autism,
it might be a little bit
difficult to do that.
And so you have to make
things more explicit.
Plus, like, sarcasm
and satire and humor
might be difficult.
Yeah.
I would love to be
a fly on the wall
some of your earlier
interactions with Microsoft.
I mean, some of the
greatest engineers
have a mind like this.
Yeah, I've had laptops
thrown at me and stuff
and I'm sure
it was my own fault.
You write about
the 10-second autism test.
Could you explain
how this works?
Yeah, now, of course,
anything that has two answers
has a high error rate.
So what's more important
to society as a whole
from the people?
Is it cooperation
or creativity?
And if you had to pick one,
which is the most important?
And most neurotypical people
will generally lean
towards cooperation,
whereas people on the spectrum
tend to lean towards creativity
as individual problem solvers.
Of course, there's some kind
of error rate there.
So if you want to
double your precision,
you can use the second test,
which is you ask,
there's a room with 10 chairs
and six people come in
and say,
sit down in those chairs.
How many chairs are left?
Now, some people
are going to say four,
but I'm going to say 10
because that's how many chairs
are still there.
Literally true.
And I'm not being a dick.
I'm not trying to be complicated,
but that is how my mind works.
And so when I see that question,
it's like,
it depends how you answer it.
So you're,
how literally you take things.
Yeah.
Everything is very literal for me.
I remember as a kid,
my grandfather was building
a planter holder
in the kitchen for my mom.
And he was using
these big angle brackets
that I thought were a little overkill.
And I said,
do you think that'll be big enough
to hold the plant?
And he says,
it'll be big enough
to hold a horse.
And I was only five,
but I was very confused about,
A, why you would bring a horse
into your kitchen,
why you would put a horse
up on a planter
and all of these things
that didn't make any sense to me.
When obviously it was
a figure of speech,
but for a lot of my life,
I took figures of speech
as literal, so.
You mentioned
emotional post-processing
as a strategy
you use to replace
social interactions.
So you can sort of
reverse engineer
to help you understand
the neurotypical world.
I think this is going to be useful
to a lot of people.
Like what,
what does that entail?
How does that help you?
So if I meet somebody,
particularly somebody new
and it's my first couple
of interactions with them,
it's like even meeting you today,
then I will go home later
and replay all of the moments
where I had choices to make.
And probably the most
uncomfortable ones first
to find out
what did I do wrong
in that moment?
What did I miss?
What was the other person thinking?
How can I improve
that kind of situation
next time?
And do I need to go fix it
or make a phone call?
That kind of thing in a bad,
you know, in an extreme case.
But,
and that's happened
a couple of times in my life.
Like I had a car restored
that my dad had bought
new in 69.
I still have it.
So we've had it 50 years
and about 20 years ago
I had it restored
and it was
like a three-year process
of craftsmen working
on this car
for thousands of hours.
And I go out to pick it up
and I'm inspecting the car
and I'm very impressed
with the work
and I'm saying,
oh, this is nice
and this is great
and everything else.
And then I fly home
and write the check
and the car gets delivered.
And then I realized
probably 10 years later
that I had a whole bunch
of craftsmen
that had worked on my car
for three years
and I probably should have
blown some smoke up their butts
about what a great job they did.
But I never did that
because it's not what I wanted
or needed in that moment.
And I was completely
oblivious to that.
So I sent an email
to the manager
or to the owner of the place
and I said,
I don't know if you remember this
but 10 years ago
I picked up my car
and I probably looked unimpressed
but I want you to know
that I was very impressed
with everything
and the quality
and everything else.
And he wrote back,
he's like,
I thought of that moment often.
so i'm like now i'm yeah there's subtle things about human interaction that mean a lot to people
and if you ask them straight up they might not be able to sort of articulate that but it means a lot
and when it's off when something is off it bothers them right but to to reverse engineer that to
figure that out for a person who might not sense those little subtleties of human interaction
it's tough that's a good point to jump in there too on empathy because there is some perception
in the community that people with autism lack empathy and i don't think that's the case at all
um i can only speak for myself i feel fairly empathetic but i think the problem is a
communication one and it works in both directions whereas i don't know how you're feeling so it's
hard for me to be empathetic with it until you communicate to me what it is you're experiencing
and then once i know once i have an understanding what's going on in your head i can feel incredibly
sorry for you
you
but other until then i'm going to assume you're going to handle it just like i would in your
position in my case with what i know now what advice would you give to people like on the other
side how they can help you be a better friend or better partner a better colleague like how they
should communicate with you to help they give more information yeah be really specific and don't
assume i'm going to pick up on clues and nuance and subtlety so if you're trying to nudge me into
particular behavior you're much better off say dave this is what you need to do
have i failed in any way today no not yet all right
what what what score would you give me a one to ten minus six
seven communication seven five floating point nice uh masking you got to tell me what that is
it's a significant experience for many on the spectrum what is masking and uh
uh tell me about any of the experiences you've had with masking so masking
is and it's probably not the right way to describe it but it's the act of acting normal
and that is how do i conduct myself in a social situation in a way that other neurotypical people
are going to or that other people that who are neurotypical are going to receive and accept it
the right way and everything you do in a social interaction from waving my hands to taking
facial expressions to tone of voice to posture it's a huge contrivance
and it's work yeah it comes natural to most people it's just what they do and cool people do it really
well but for somebody on the spectrum you've got to fake it all uh yeah acting normal there's a song
by rush you know the band yes uh limelight and it's written by neil pert and i i only speculated
what people have passed on so i've got a sense he was probably on the spectrum um but the line
is something like all the world's indeed a stage and we are merely players performers and portrayers
each another's audience and he talks at length in the song about you know not being able to treat
strangers as friends and being able to fake an affect and all that so it seems like he's
struggling with masking a lot in the song and i have no idea but that was what i took from it
yeah you describe meltdowns as an overwhelming experience can you describe meltdowns what what
typically triggers a meltdown generally it is it's when you're emotionally overwhelmed to the
point that you can't manage your behavior anymore and so you see it in the movie rain man when he
is trying to get on the airplane and he's kind of forced and he starts losing it that's a meltdown
or i've seen it on they did kind of a actually probably the best portrayal i've seen in media
is uh what's the tv show where the doctor is autistic he's like anyway there's a tv show
where a doctor is autistic and he's a surgeon and he is eventually banned from surgery because of
his autism and he's always wanted to be a surgeon and he has a complete meltdown and it's a pretty
good portrayal on television so what is actually happening like there's like a threshold you cross
like yeah switch flips it's like blue screen essentially yeah kind of for the brain algorithm
so switch flips you go kind of a primitive brain your frontal cortex shuts down to an extent i
think so you don't have the benefit of decision making and filtering your very reptilian brain
in that state and it's really a panic state and so it's a panic and a fight or flight response to
not being able to tolerate the current reality and perhaps it's been so frustrating or you've
been so randomized or you had a bad treatment or you've been so frustrated or you've been so
you've been so frustrated or you've been so frustrated or you've been so frustrated or you've
been so frustrated or you've been so frustrated or whatever it's added up to the point that
something has now triggered you and your brain loses its ability to adequately moderate your
behavior uh what about love and relationships what are some of the challenges of that and
you know there's a show of love on the spectrum i've heard of it i've not seen it but i've heard
about it because certain aspects like literal interpretation of things it just makes the
complexity of relationships of romantic relationships even more explicit
in that in that context you know i've been married 31 years and together for 37 so
a long history there and i think our first indication that we knew we were very different was
we were sitting in the car one night in front of the house at dark and across the street there's
kind of a nice house that has these big brick pillars that are linked by like anchor chains
and it forms a fence around the yard and i'm looking at these things because they're about
two feet square and i got a capstone and i'm like no wonder if they're hollow or they backfill they
fill the concrete or what and my now wife looks at me and she's like what's wrong with you why do
you have a place in your head that cares about that yeah and we're just doing the moment that
i was passionately involved in caring and she was passionately involved and why would you even
worry about that kind of thing knew we're very different so yeah very specific seemingly
irrelevant details but uh i was never good with people i don't get it when people like me
guess and so i and my son is the same way because they all don't fall very far for in three and i got
him a t-shirt that says if you're hitting on me please let me know and be specific because i'm
clueless and it's very similar for me i mean i had to be around a long time and kind of grow on
people because i had no game because i had no ability to do the social dances that that whole
thing requires so my only option is to just be myself and that works for some people we able to
say like like i love you that kind of stuff yeah uh i mean her family was way more old than me and
open with that kind of thing than mine was and so it was a growing period for me but yeah it's not
a problem i have okay all right but but it seems like unimportant uh like what is that actually
accomplishing well now we do a lot of affirmation and checking like in the last couple years we do
a thing where she'll just be like you good i'm like yeah and there's two steps to that there's
are you good and then there's my response because if i'm like yeah she knows something's up yeah
and so it's always just pinging back and forth because there's not the ability to
read people just from looking at them to know what's going on so we have this explicit check
mechanism i think where we've developed that so there's a vast chasm between yeah and yeah
again that's subtlety of human communication uh you've uh written about the experience uh
that people have of feeling quote a little bit autistic could you elaborate on this concept
yeah i think a lot of people maybe 10 to 20 percent of the population
is somewhere on the autism spectrum but isn't impacted by enough that it rises to the level
of a disorder but they still have many of the characteristics that arise from autism
and i think if they can understand and identify and manage some of those behaviors in an optimal
way they can both leverage them to take advantage of some of the skills and mediate some of the
deficits and problems that come with it and i wrote it mostly for my kids because none of them
as far as i know have asd but they've all got certain aspects of my behavior that are particularly
related to it
so i thought i'd write a little manual for them basically why do you think so many programmers
like excellent like great programmers and great engineers are on the spectrum i think it's that
single-minded focus and the ability to reduce a problem and to be ultimately curious about what's
inside stuff that's been a obsession for me my whole life what's inside i gotta take my mom's
oven apart because i gotta know how the flip clock works um and i think that's a good habit to have
if you're going to be a programmer and being willing being
excited to get into the details yeah yeah uh what's a cool thing you uh hope to program to build this
year what are you working on so we got we got the rl learning how to play tempest uh where are you
on that by the way how like where what's the eta on success and dominance like victory well it's
very close to working um i think now it's tweaking the model size and layers and stuff like that to
get it to learn past the one threshold but you know it's a couple thousand lines of lua and it's
a couple thousand lines of python and then it's a couple thousand lines of python and then it's a couple
thousand lines of python and then it's a couple thousand lines of python and they all interact and
they all work so it's like 95 of the work is done now it's tuning hyper parameters hyper parameters
and hoping for the best so it's already a success in a sense but like now you're seeing like how
far can this go yeah my goal was to be able to beat me that's a tough it is but lots of games
now are you know they play them better than humans but maybe not games as complex uh what
are the cool things you're working on what you hope to build this year uh the pdp 11 stuff i'm
trying to get at what's called an re 82 drive it's the big 14 inch monster that spins at
3600 rpm and sounds like a washing machine and then i'll find the controller card and write the
code and integrate it into the driver and try to get that all working uh what kind of code are you
trying to run on it i'm gonna have to get the driver stack to work so i have to incorporate
the driver for it into the kernel you built a machine recently with one terabytes of ram
uh how did that happen and why so we have a project called github primes if you just search
for github primes you'll find it and it is a single set of github primes and it's a single set of
prime number algorithms implemented in about 100 different languages so it's the exact same
algorithm and we require that you follow certain rules
rules to make it fair, and then you express that algorithm in whatever language
you choose to the best of your ability, and we run a benchmark every night, and we
compile the results and find out which languages are fastest. Is this the one? Yeah.
Oh, so this is, so yeah, you got it. And this is
what you're using this for? Yeah. Oh, so this machine
runs those tests? Yes. Okay, you got to tell me about this project
because this is an epic project. So you're comparing the performance of the different programming languages.
It's all these languages. So they all get built into an individual Docker container, and then they all run.
This is an incredible project. This is really, really cool. It's really
measuring the performance of the different languages. So what have you learned about which languages
like, which language
usually wins? Zig, I think, right now. Zig. It does, it varies.
People will make an improvement to the C++, and it'll pass for a while, and the Zig guys will get angry and come back
and make it faster. Zig, Rust, C++, C.
Yeah. And what kind of code?
What kind of code is being run? What's the piece of code that they're
trying to run to measure the performance? So what they're doing is they're solving the primes
up to 100 million as many times per second as they can in a five
second loop. So it's a loop. Got it. Over and over and over and over and over. Yeah, on all
cores. So what? Across all CPUs. What about, like, how the program
is written? Does that vary? No, so you can do anything you want, but it has to be
a prime sieve. You're allowed to use one bit per integer at most, so you can't use a
byte, which is cheaper and easier.
There are a number of rules like that that you have to allocate the memory within your time loop.
And so we have a set of rules, and we have some solutions
that don't follow the rules, like the 6502, because you've only got 64K. You can't do 100 million
sieve. So there's a lot of solutions like that that we run as exhibition
projects, but among the main languages, they all follow the same rules. And so it really should
just be how the algorithm is expressed in that language. And
many of them use the same backend compiler, so it really is how you're expressing it and the
limitations or the benefits of that language.
Are there allowed to be multiple submissions per language?
Yeah, yeah. So if you look in the C, there's like five, I think.
Okay. And some of them might use different compilers?
Yeah, some are GCC, some are CLang, LLVM.
I'm looking at a snapshot here from a couple years ago. Zig was at the top, then Rust, then Nim, Haskell.
Oh no, this is not ordered by
Slowness, or is it? Yep. So C would be 1.5 times
as long as Zig. Wow. Okay. Fascinating.
Well, it's a super cool project. Yeah, we've got it in crazy languages like PowerShell.
There's a version in PowerShell and stuff like that. So this is automated
in terms of organization of how the submissions are done. There's a structure to it.
That's cool. Yeah, there's two guys over in Europe.
Rucker and Tudor basically own this now. I started as just three languages. I did
Python, C Sharp, and C++. And I checked them in, and I published the
episode, and then people started throwing more solutions in there, and it just got out of hand, so
I had to get somebody to manage that one, and they've been great.
Doing that for me. What's the happiest moment for you when you're programming
and building a thing? Like, what do you enjoy most? I think the most
fun for me is when I build something complex, and I thought through how it should work,
and then I run it, and it does work that way. That creates
intense satisfaction. So seeing the results come out the way that I
plan them and have it work, because it rarely does the first time, but
Yeah. Or especially if it does work the first time. I never trust
that. I always feel like I'm missing something.
That's true. But, you know, with compiled languages
like with C++, that's always a good feeling. You write a bunch of code,
you compile it all, 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.
Do you use, have you used Cursor much? Cursor VS Code
with
code generation? Yeah, I've done a ton of it for this, the Python side, because
I'm not great with Python, and I'm kind of new to it, so I've 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 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.
Oh, that's cool. So just, you essentially learned Python for this project. Yeah.
So this is a good case study of, like,
a great programmer in C++.
C++. Quickly learning a language. Yeah, I'm vibe-coding my way through it, I guess.
Vibe-coding your way through it. I mean, that is a really powerful
use case to learn a language for, if you're already a good programmer, to learn
either a new language or a new
way to approach a problem by having it generated, because you already, you probably understand
that Python code generates. Yeah. Like, without actually looking up any
of the syntax. Yeah, it's all pretty self-explanatory once you see it, but, you know, creating it from a whole cloth
is a little different, so. Yeah.
But you still have to learn how to program in order to use it in that way.
Oh, and to read it, and to know what to tell it to do next, and all that, yeah. I don't think
you can vibe-code yourself if you're just new and haven't coded, but if you're a good
programmer, AI can make you incredibly powerful. What do you think is the future of programming,
like, 5, 10, 20 years from now, this whole process?
Now, vibe-coding is kind of a fun meme thing, because you still
have to be, the people that don't know how to program it are just
vibe-coding.
They're almost entirely creating systems that are not usable in production.
It's very difficult to create a product. And the people who are already
great programmers kind of vibe-code just in the way that you're doing it.
They're basically, it's just a fancy autocomplete, and they end up
editing it, or it's a way to learn a new API, or a new
language, or a new whatever. A new specific use case
or maybe a different kind of, like a GUI component or something like that.
But, as a programmer, you can't do that.
As it gets smarter and smarter, we don't know where the ceiling is. That might change the nature
of what it means to be a programmer. So, do you think about that?
I do. I think, I don't want to say prompt engineer, but I think it's going to be
something like that, in the sense that if you're an architect building a bridge, at some
point, guys were down there welding beams together, but now you're dragging things around in AutoCAD
and assembling from big, free-form sections. And I assume that's what
programming will be like. You won't be in there throwing individual lines of code around. You'll be moving
components and interfaces.
And describing to the AI what those interactions
should be and letting it build the components. But I think we're still quite
a ways from it being able to whole-cloth generate. You can't say, give me a Linux
kernel that's compatible with Linux. One day we'll be able to, and it'll crank it out. But we're not
there yet. Does it make you sad that we're climbing the layers
of abstraction so quickly? So, you, somebody that used to do machine
code and then assembly and then C and C++, that we're getting
to a point where
we're vibe-coding with natural language?
Yeah, I kind of came up at a really fortunate time, I think, because I had to come up with the technology over the course of 30 or 40 years. So I understand TTL logic and I can use AI to write code. And I kind of know all the pieces in between. There certainly are holes in my knowledge. But I think the only way to have got that level of knowledge or the completeness of that picture is to have lived it for that long.
Yeah.
And it's going to be hard to duplicate that for people starting now.
What do you think is the meaning of this whole thing?
of existence, of life,
of whatever's going on here.
Making cool stuff.
I guess fundamentally what I care about
is being able to make complex things
that are useful to other people,
which leverages my abilities
in a way that allows me to be creative
and to create things that other people can use
in a way that if I was limited to painting
or sculpting or whatever in the classic arts,
I would be hopeless.
And so for me, that's really the meaning of life.
And then maybe you raise a couple good kids
to hand the baton off to.
Yeah, and you've created a lot of cool stuff
over your life that impacted millions,
probably billions of people.
And now you're inspiring,
you're creating cool stuff for everyone to see
on your YouTube,
and you're inspiring people in that way.
So for everything you've done in the past
and everything you're doing now,
I'm a big fan.
I'm really grateful for what you're doing
and grateful that we got a chance to talk today.
Thank you, brother.
Thank you.
Thanks for listening to this conversation
with Dave Plummer.
To support this podcast,
please check out our sponsors in the description.
And now let me leave you with some words
from Bjorn Straustrup,
creator of C++,
and somebody who, by the way,
I interviewed.
A long, long time ago,
episode 48 of the podcast.
He said,
there are only two kinds of languages,
the ones people complain about
and the ones nobody uses.
Thank you for listening
and hope to see you next time.
Thank you.
© transcript Emily Beynon
Podcast Summary Short Detailed
Key Points: Dave Plummer began his computing journey with a TRS-80 Model 1 and later learned programming through hands-on experimentation with the Commodore 64, writing machine language games that taught him fundamental software concepts. Despite dropping out of high school, Plummer found success by returning to education, working odd jobs including at a 7-Eleven, and eventually landing a role at Microsoft through a cold email outreach, demonstrating the power of initiative and self-driven learning. Plummer contributed significantly to Microsoft’s early success by working on MS-DOS, porting code to Windows NT, and building the legendary Windows Task Manager, a tool that remains in use by hundreds of millions and exemplifies robust, minimalist software design. Summary: Dave Plummer’s journey from a young enthusiast with a TRS-80 to a key software engineer at Microsoft reflects the power of curiosity, persistence, and hands-on learning. His early days with the Commodore 64 and machine language programming laid the foundation for a deep understanding of systems and code. After dropping out of high school, he returned to education, worked in various jobs—most notably at a 7-Eleven—where he gained real-world experience and critical insight into the challenges of daily work.
This led to a pivotal opportunity at Microsoft, where he worked on foundational technologies like MS-DOS and Windows 95, contributing to critical features such as the Task Manager. He also helped port the Space Cadet Pinball game to Windows, showcasing his ability to build engaging, high-performance software. Plummer emphasizes that software development is as much about debugging and fixing as it is about creating, with debugging consuming a majority of his time.
His work on the Task Manager—designed to be small, fast, and robust—has endured, with the original code still largely intact. He also reflects on Microsoft’s design choices, such as activation and interface limitations, highlighting the tension between user experience and technical complexity. Plummer’s career exemplifies a path of self-driven growth, where personal passion, technical mastery, and a commitment to simplicity have shaped both personal success and lasting contributions to computing.
His insights into programming, team dynamics, and software philosophy remain relevant, especially in the context of open-source and user-centered development.
FAQs What was Dave Plummer's first computer and how did he get started with programming? › Dave's first computer was a TRS-80 Model I. He learned to program by setting it up at a local Radio Shack, typing English commands into its BASIC interpreter, and eventually writing a simple game in machine language on a Commodore 64.
What programming language did Dave use when building his early software and how did he learn it? › Dave initially used machine language on the Commodore 64, writing in hex codes because there was no built-in assembler. He later learned C and assembly, especially when building software like HyperCache for the Amiga, which helped him transition into more advanced programming.
What is the significance of Windows Task Manager, and how did Dave Plummer develop it? › Windows Task Manager is a core tool that shows CPU, memory, and process usage. Dave started it as a personal project, using registry access initially, and later ported it to Windows NT, making it fast, reliable, and responsive by avoiding C runtimes and using efficient rendering techniques.
How did Dave Plummer get his first job at Microsoft? › Dave got a summer job at a phone company and read a book about Microsoft's history, which inspired him. He then cold-emailed Microsoft employees, connected with a person named Alistair Banks, who introduced him to a Microsoft employee who hired him for a summer internship on MS-DOS.
What was one of the most significant technical challenges Dave faced while working on MS-DOS or Windows 95? › One key challenge was memory limitations—MS-DOS only had 640KB of usable memory, forcing developers to be extremely efficient. Dave also had to work with low-level hardware, such as handling unaligned memory access on MIPS processors, which required complex workarounds.
What did Dave Plummer contribute to Microsoft’s Windows NT operating system? › Dave worked on porting Windows 95's user interface to Windows NT, including making it Unicode-compatible. He also contributed to performance optimizations, such as improving disk caching and managing high memory usage on x86 systems.