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