- The following is a conversation with Dave
Plummer, programmer and an old-school Microsoft software engineer who helped
work on Windows 95, NT, and XP, building a lot of incredible tools, some
of which have been continuously used by hundreds of millions of people,
like the famed Windows Task Manager.
0:22
Yes, the Windows Task Manager, and the zip/unzip compression support
in Windows.
0:26
And he ported the code for Space Cadet Pinball,
AKA 3D Pinball to Windows.
0:34
Today, he's loved by many programmers and engineers for his amazing YouTube
channel called Dave's Garage.
0:42
You should definitely go check
it out.
0:42
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.
0:57
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.
1:12
This is the Lex Fridman
Podcast.
1:12
To support it, please check out our sponsors in
the description, and now, dear friends, here's Dave Plummer.
1:19
Tell me about
your first computer. Do you remember? - I do.
1:25
I didn't own my first computer for a long
time, but the first computer I ever used was a TRS-80 Model 1, Level 1, 4K
machine, and I rode my bike in fifth or sixth grade, so I was
about 11, to the local RadioShack.
1:37
And, you know, they had the standard component
stereo systems, everything else RadioShack had, but they had a stack of boxes that was labeled "computer,"
and so I was asking the people who worked there about it, and they said they just got
it and they hadn't set it up yet.
1:49
And so I was rather precocious and I figured, "Well,
I'll set it up for you," and they said, "Okay. Have a shot."
1:52
(laughs) - Did you know what you were doing? - Absolutely not.
1:54
I mean, it's no worse than a component
stereo.
1:54
The only thing is that Tandy, in their infinite wisdom, used the same five-pin DIN
connector for power, video, and I think cassette, so they were all identical, and
if you plugged them in wrong, you'd blow it up.
2:05
So I read the label and 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+2 works perfectly, yet more simple English that
you enter into a Basic Level 1 interpreter is not going
to get you very far.
2:23
- So you're trying to talk to it in English?
2:26
- Didn't know any better.
2:26
And I still have an
old foolscap that I wrote in sixth grade of a program that's kind of
illogically 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.
2:38
But I rode my bike down there every Thursday and Saturday, and they were
gracious to let me use the machine. - When was this? - '79, '80. - Okay.
2:47
What was the state of the art of computing
back then?
2:47
So what are we talking about?
2:50
- Well, the big three had come out.
2:50
There
was the TRS-80 Model 1, there was the PET 2001, and the Apple II came
out roughly simultaneously. - Apple II.
2:59
Would you say that's
the greatest computer ever built?
3:02
- Probably in retrospect.
3:02
Well, I would
probably give that to the Commodore 64. - Yeah.
3:06
You and I agree on this,
that that was my first computer probably many years after it was released,
but yeah, Commodore 64's incredible.
3:14
But yes, Apple II had a huge impact
on the history of personal computers. - Right.
3:18
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?
3:26
- The sales were certainly higher.
3:28
- So Commodore 64 sold a lot? - Yeah.
3:30
I mean, the numbers are hard to believe.
3:30
It
depends which numbers you believe, but even the medium estimates were pretty high. - All right, cool.
3:36
So you eventually
graduated to the Commodore 64.
3:41
Tell me about that machine.
3:41
What
did you do on the Commodore 64?
3:45
- Well, the first thing I did was overheat the
floppy drive on it, which was unfortunate, because it wasn't a warranty machine.
3:49
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.
3:56
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.
4:08
It didn't have an assembler built
in, but it 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.
4:16
So
that's kind of how I learned.
4:20
The first thing I ever wrote on it was a clone
of Galaga.
4:20
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 add code in the middle, you need to manually sort
of jump to somewhere else, do your work, jump back to where you were.
4:36
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.
4:46
And I copied my blank
floppy onto my data floppy.
4:51
So that was my first experience
with data management. - Oh, no.
4:53
- So I don't have a copy of
my first program anymore.
4:55
- What was that feeling like,
of just doing something, if I may say so, like stupid,
you know?
4:59
Which is a part of the programming experience.
5:04
- Yeah, there was a huge amount of guilt
because, right, you destroyed several weeks - Yeah.
5:07
- of work, and you know it
was because you rushed, - Yeah.
5:09
- or you did something stupid,
or you made an unwise choice.
5:12
- Can you tell me about the
programming involved in that game?
5:15
- So it's literally machine language. - So machine...
5:17
so it's not even assembly?
5:19
- Not assembly yet, because there was no
assembler built in.
5:19
So I should have written an assembler, written in assembler as my
first task, but I wasn't that clever, so...
5:26
- How hard is that to do?
5:28
- Trivial, and it's one of those things
that sticks, I think. You do it so many times.
5:32
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.
5:38
And it's just one of those.
5:40
- Like, what are the limitations of programming
in machine code, as a programmer?
5:44
- The biggest issue is you have to write
completely sequentially because at least in that variant, 6502, you can't add things
later.
5:48
You can only add things on the end.
5:52
So it's like
programming a tape in a way.
5:54
- What was the most complicated thing
you've built with machine language? - That game would be.
5:57
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...
6:04
- You literally built a game.
6:06
- Not a great game, but it worked. - Okay. All right. And then you erased it? - I did. - All right.
6:10
When did you first fall in
love with programming?
6:10
When you figured out, like, this is something special.
6:18
- I think there were two stages for me.
6:18
I always
knew immediately that I was fascinated with these machines, from the TRS-80 Model I.
6:22
All
I wanted to do was ride my bike back there and have more time with it.
6:26
And I did that
to wear out my welcome as much as I could.
6:30
And the other revelation came, I think, about
the second or third year of university, when I realized, "I love programming,
but I have no idea what I'm going to do.
6:37
Am I going to make the 12 flash on a VCR somewhere?
6:37
Or am I going to go work on an operating system?
6:41
I have absolutely no idea what I'm
going to do post-graduation. But I love what I do."
6:45
And so, I think
that was a lot of consolation.
6:49
It's like, it doesn't really matter what I'm doing at
this point, because I kind of love doing it, so...
6:54
- So, you'll figure it out.
6:55
As long as you're following this
kind of feeling that's telling you- - I knew I was in the right
area, finally. Yeah. - Yeah. All right.
6:59
You
dropped out of high school. - Yeah. Not the smartest move. - Okay.
7:03
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.
7:11
How were you able to find your way?
7:15
Can you tell
that journey of dropping out- ...
7:19
and then finding your way back?
7:21
- There's no moment when I dropped out.
7:21
You just
go less and less and less until you realize it's going to be embarrassing if I show up
cause I haven't been there in a long time.
7:29
And then pretty soon you're just not going,
and that's how you drop out of high school.
7:32
So, if you find yourself on that path, stop
doing that.
7:32
But that's precisely what I did.
7:36
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.
7:40
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.
7:56
And I was one of those people,
cause I had no high school diploma.
8:00
- What are some memorable moments from
that time at 7-Eleven?
8:00
Well, maybe what do you appreciate about
the difficulty of that job?
8:09
- 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...
8:13
The most, the suckiest
part for me was doing the gas dips.
8:13
We'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,
cause there's no electronic sensor.
8:29
So, I'm doing that and the first time I
do it, I drop the pole and I re-grab it.
8:32
Well, that's about a thousand splinters
of wood into your hands, and it's 40 below out, and that really sucked. - Oh, wow.
8:39
- And I realized, "I don't want to do this
for a whole life." I knew that, so... - Okay.
8:44
So you stand there frozen
with splinters in your hand.
8:47
- And at some point, I have a
revelation about my life that next time I'm going to do it differently.
8:51
And then how ludicrous that is hits me about three seconds later, right?
8:58
And I think that was really the moment for me where
I realized that I've got to do something different.
9:02
And so even though I was 21, I went and I
talked to the principal of my local high school, and I was like, "Can you let me
back in?"
9:06
And he's, "No, you're too old and we don't have room," was
his main reason.
9:10
And I said, "Well, between now and then, somebody's
going to drop out. So you'll have room.
9:18
So let's assume you have room. Can I come back?"
9:18
And he was gracious and let me come back.
9:22
And so I did the three or
four classes that I needed.
9:24
- Yeah, you know, just if you can
linger on that, the slow dropping out.
9:28
That's a weird thing that
you can do with your brain.
9:32
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 be part
of society to do certain things. - Right.
9:44
- And if you realize like you don't
have to do what everybody else is doing, you can either have an incredible
life or a really difficult life.
9:54
- Well, the problem with that process is you're making a
much smaller decision.
9:54
"I'm just not gonna go to class today." - Yeah.
9:59
- 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.
10:04
- So it's better to make...
10:04
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.
10:13
- Don't allow yourself to
make the slip-ups, though.
10:15
- It'll be made for you eventually. - Yeah. Okay.
10:17
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.
10:24
- No, I was a terrible student in high
school, and even my first semester of college, I still wasn't taking it quite
seriously 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.
10:37
And that scared me 'cause I
realized by 1%, or the grace of the professor that let me through,
I just about ended my entire university career here.
10:44
So fortunately, those marks
don't count on your transcript 'cause 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.
10:55
- What can you speak to, maybe by way of
advice, on how to be successful as a student?
11:00
- 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.
11:04
So go for those classes and and just put up with and do the hard stuff
because it's way easier than having to do it later.
11:13
That's easy to say when you're
50-something; it's harder when you're 15-something, but... ... It
makes a lot of sense. - All right.
11:20
What's the story of you
joining Microsoft?
11:20
How did we get there from 7-Eleven to Microsoft? - Yeah, it's a big jump.
11:27
So I had gone
back to school, and I think it was in my third year of university.
11:31
I was working for
the phone company for the summer as a job, doing conversions of their
UBNet to TCP/IP and modern networking, which really amounts to swapping
cards but then figuring out why their config.
11:42
sys doesn't allow Lotus to run anymore
because it's got 10K less than it used to.
11:46
It's just a horrible time to be working
in computers, but I was doing it.
11:46
And at lunch, I'm sitting in the food court with the
old and the bored, and I'm reading a book that I had bought called "Microsoft,
or Bill Gates, and the Making of Microsoft Hard Drive," I think is
the title. And it's a great book.
12:02
It's just a matter-of-fact history of how
Microsoft came to be, what it's like, how it operates, what the people are like
there.
12:06
And I'm reading this book and I become really entranced by it and fascinated
because it sounds like exactly the place I want to be.
12:14
But I'm in Saskatchewan, so
what am I going to do about it?
12:17
What I wound up doing was, I had put myself
through school with a program called HyperCache, which is a file system cache for the
Amiga because the Amiga didn't have any out of the box.
12:25
And it had
done reasonably well.
12:25
So I went through my registration cards, because
in those days you had a four-by-six card that people had to fill out with their name
and their address, and if they had an email, their email, and they'd send it in.
12:37
They'd get
notifications of updates and so on. It's shareware.
12:41
And I went through the whole stack looking
for anybody with a Microsoft email address.
12:45
And I found maybe three or four people,
and I just cold-emailed them and said, "Hey, I'm an operating system student in
Saskatchewan looking for an opportunity."
12:53
I don't remember exactly what I said.
12:53
But one guy, Alasdair, Alasdair Banks, he wrote back and he said, "I know
somebody that I can put you in contact with."
13:01
And he put me in contact, I think, with a guy
named Ben Slifka, who did a phone interview, who eventually wanted to hire me
to work on MS-DOS for the summer.
13:09
So that's how I got there.
13:10
- You put yourself through school
by...
13:10
Tell me about HyperCache.
13:14
You built a piece of software...
13:15
- It's the weight-loss
program for hard drives.
13:17
- That was sufficiently useful to a large number of people that
would somehow give you money?
13:24
- Yeah, it made decent money.
13:24
I mean,
I sold a couple thousand copies.
13:27
At 20 bucks a copy or 40 bucks
a copy depending on the rules.
13:29
- What language was it written in? - C. - C.
13:32
- So there were some assemblers.
13:32
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.
13:40
This is like file system I/O? - Device block I/O.
13:43
Any block that gets
serviced from the drive would go through my cache first, and it was an N-way associative cache,
so it would try to match the geometry of the 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.
13:57
- What was it like trying
to get your software out there at that time?
14:01
Like, how
were you able to find customers?
14:05
- Yeah, it's interesting.
14:05
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."
14:14
And eventually it 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,
cause her dad was very concerned about her safety.
14:21
And 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.
14:25
But we got a call from one of the 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 is was a big deal.
14:36
And so eventually a number
of companies just bought inventory. - Let's go to that time.
14:41
It's such an interesting
time with Bill Gates and Microsoft.
14:45
Why do you think Microsoft was dominating the
software and the personal computing space at that time and really for
many, many, many years after?
14:52
- At the time, it was the single
most potent assemblage of smart people that I've ever been a part of.
14:56
And I've been in academia and I've been in industry to a certain extent, and you know, when you're working at a regular
computer company, the one guy who actually knows what he's doing, his smarter friend?
15:08
He probably works at Microsoft.
15:08
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 you're like, "Uh-oh, I'm just not gonna - Mm-hmm. Okay.
15:20
What about Bill
Gates himself?
15:20
What are some qualities of Bill Gates that you think
contribute to the success of Microsoft?
15:28
- 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 on every desk.
15:32
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.
15:40
And he built an almost unstoppable machine
of intellect to go forth and make, let's say, very
simple products.
15:47
MS-DOS is not a complicated product by any
stretch, but it's exactly what the market needed at that time.
15:56
- Yeah, I mean, MS-DOS
changed the game.
15:56
And, that's actually the team you joined,
the MS-DOS team, and I think you joined before Windows 95 was released.
16:06
So tell me about
the story of MS-DOS.
16:06
Its success of MS-DOS is probably
pivotal to the success of Microsoft.
16:18
- 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.
16:26
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.
16:37
And to a certain extent, they lucked into
that, and on the other hand, they were smart to have done it.
16:41
They
didn't charge IBM a lot of money for it, but making it a standard really played out to their
advantage over time.
16:51
- So at that time, MS-DOS, no
graphical interface.
16:51
Can you just speak to what the heck MS-DOS is?
16:57
- It's largely a command launcher.
16:57
You type in a
name of a command.
16:57
It looks it up to see if that's in the current directory or on a special
path of folders, and it loads it into memory and executes it if it's there.
17:08
That's 90% of what MS-DOS does.
17:08
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.
17:19
It doesn't allow
you to multitask.
17:19
There's no graphical interface.
17:23
Microsoft
did add a text-based graphical interface for things like
an editor and QuickBASIC in DOS 5. 0, I believe.
17:31
And there was
a DOS shell, which was sort of a graphical file manager
in MS-DOS 4. 0.
17:35
So they experimented with it, but it's
largely a command prompt.
17:42
- Does it have the ability to
communicate with external devices, so drivers and all that kind of
stuff?
17:45
How expansive of an operating system was MS-DOS?
17:52
- It was limited by the original x86
instruction set, which limited it to 640K. - Right.
17:57
- And then there were various Band-Aids on top of
that to do high memory and then extended memory beyond that, and A lot of hoops have to be jumped through to
make anything work without consuming base RAM.
18:10
- Yeah, I mean, you programmed on
MS-DOS. What's it like?
18:10
What are some interesting details there?
18:14
Like you
said, there's the memory constraints of 640 kilobytes.
18:20
- Yeah, 640K is the maximum that's ever gonna
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.
18:28
So if you use 10K needlessly, you're
gonna...
18:28
Every machine in the world now has 10K less, so it's
kind of a big responsibility.
18:35
- Is that a true quote from
Bill Gates, where he said, - "Nobody will ever need more than 640K"? - Yeah.
18:40
- Yeah, no, it's not him. - Okay.
18:42
- It's been attributed to him, but not real. - Okay.
18:43
So what are some interesting
aspects of what you were able to do as an intern and when you
joined on MS-DOS and beyond?
18:52
- One of the first things I did was to take SmartDrive,
the disk cache, because I had familiarity with disk caches- and to add CD-ROM caching to
it, because that was new.
18:55
CD-ROMs were just coming out.
18:59
Microsoft Bookshelf is
one of the few products you could run for it.
19:03
And as you can imagine, caching
a CD speeds it up by dozens of times if you're smart about it.
19:07
So it was a
big performance win and a nice thing to work on.
19:10
A bigger part of that
was moving a bunch of SmartDrive and eventually the double-space
compression engine up into what's known as high memory.
19:19
And without rat-holing on the technical
aspect of it, on the x86, there's something I believe called the A20 line.
19:23
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.
19:32
If not, they don't, so you
continue going up in memory.
19:37
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.
19:44
You put your code in there, and
then you just put stubs to jump to it from low memory.
19:48
You can get another
64K out of the machine that way, and we did that for a couple
of products. And that's...
19:56
I had no idea what HIMEM was, 'cause I was an Amiga
programmer and I'd never written any x86 code before I got there, so...
20:02
- So that was, like, a cool
optimization you got to be a part of. So what about Windows?
20:05
There was a
parallel development of Windows 95, right?
20:09
At that time, did you get a chance
to interact with those folks?
20:12
- I actually worked on Windows 95 for about three
or four months.
20:12
I was on the COM/OLA team doing the presentation cache, which
is when you insert, say, a Word or an Excel spreadsheet or chart into a Word document.
20:23
You don't want Excel to have to be
loaded to render it every time, so there's a presentation cache of enhanced metafiles
and I was working on that.
20:26
So that shipped in Windows 95, but I
moved to the Shell team about six months after getting to Microsoft,
so I worked on NT from there forward. - Okay, and what's 95? What's NT?
20:40
- Windows 95 is an evolution of
the original 16-bit Windows 3.
20:44
1, which was the very first
popular version of Windows.
20:48
It adds 32-bit support, then VxD
drivers and a bunch of new technology, and an entirely new user interface.
20:52
It's something that at the time was revolutionary.
20:55
People lined up at night
to wait in line to buy the thing.
21:00
- Can you just take us back to that
time and describe why 95 was such a big leap from 3. 1?
21:05
So Apple
already had a graphical interface. Windows 3.
21:09
1 had a graphical interface.
21:09
Why was Windows 95 such a gigantic leap?
21:17
- I don't want to make it as basic
as the Start menu, but I think... ... it's a big part of it.
21:20
I
know when I first saw it... ...
21:22
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.
21:32
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 NT and
what's Windows today.
21:39
- Would you say that's the greatest operating system ever?
21:41
What's the
most impactful operating system ever?
21:46
- Windows 95 would be number two for me.
21:46
I
think OS/360 is going to be number one. - Okay, interesting.
21:51
- 'Cause you could take a machine and
write a COBOL program for it in 1962, jump in your time machine, go
to Poughkeepsie and boot up an IBM z17 mainframe and run it today.
21:58
And
they've been doing it for however many years, that is.
22:02
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.
22:13
And then probably Linux would be
number three for me.
22:13
I put Linux as b- as bigger than Unix, which doesn't work 'cause
you can't have one without the other, but the impact of Unix, BSD, and so
forth, is largely in the academic space.
22:25
It's by programmers
for programmers.
22:29
- So yeah, Linux created...
22:29
I mean, it was
the embodiment of the open-source spirit at its largest scale, all right?
22:37
So it's 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.
22:51
- Yeah, and its 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...
22:59
I mean, this is
the quiet secret of the universe, is it runs on Linux.
23:03
Okay, so tell, tell
me about your work days.
23:03
What were they like back then, back in
the MS-DOS and Windows 95 days?
23:14
Take me through a productive day.
23:17
- Well, your day starts coming in,
and you got to download the address book, which is...
23:20
Microsoft has
between 10 and 15,000 employees at this point, and we're all on MS
Mail.
23:24
We're just getting off of the PDP-11 called Miss Piggy,
which ran Whizmail and we're running MS Mail.
23:30
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.
23:38
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.
23:46
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...
23:50
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.
24:05
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,
'cause 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
24:21
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, and
there were 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
24:39
From a day-to-day grind of always
fixing bugs in other people's code, which is amazing
learning experience.
24:46
- So you did a lot of the...
24:46
At
Microsoft, you did a lot of the porting of, what is it? Windows 95 code to NT? - Yeah.
24:53
We took the entire Windows 95 user
interface, and we ported it to NT, which meant making it Unicode, for one thing.
24:57
So
everything that was eight bits is now 16 bits, so... - Okay. - ... pointers.
25:02
It's quite a mess when you
switch the code over, as you can imagine.
25:07
- Can you give us insights into
what is involved in porting?
25:12
- 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.
25:17
You find all the good stuff, the
pretty pictures hanging on the wall, and you find some disturbing
stuff in the nightstand.
25:25
I saw code that was, like, 200 characters
wide with profanity and swears in it, and it eventually got all cleaned up
over the years by the time I left.
25:33
But it was not always the most
professional code in the world.
25:37
- Right, because every single piece
of code you have to go through.
25:40
- Line by line, so you see it all. - Yeah.
25:41
I mean, that's
the, that's the story of programmers.
25:45
You write a piece
of code and you think it'll never, it'll never be seen
by anybody.
25:48
And sometimes, oftentimes, that code is going to be
seen by a very large number of people. ...
25:55
that come after you,
including you five years later.
25:57
You yourself looking at your own code.
26:01
Okay, so tell me about Windows
NT.
26:01
That was a giant leap too. - It was.
26:06
It was basically a clean-sheet
design.
26:06
So they went and they got Dave Cutler from Digital Equipment, who had
done operating systems for them, VMS and RSX-11, he had
done.
26:14
And so he came over after, I believe it was Prism
and MICA were some projects at DEC West that got canceled.
26:22
And so
you had a whole team of guys where their project is canceled, and basically, they
took a whole bunch of them and came to Microsoft.
26:30
And I don't know the specifics of the deal, but
they all showed up.
26:30
So you had Dave Cutler and Mark Lucovsky and all these really smart
guys from DEC, and they did basically a clean sheet, but they also
had OS/2 as a starting point.
26:42
But OS/2 was, of course, written in assembly
language, and NT is going to be written in C.
26:45
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.
26:53
- You said that Dave Cutler's the man, the
mind behind Windows. Can you explain?
26:59
- So Dave Cutler is the architect
of the kernel.
26:59
So he is Linus in the Linux world. It's Dave
C. in the Windows world. - Yeah. Dave C. , okay.
27:07
- And it's not that there weren't other
people that contributed huge pieces to it.
27:10
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.
27:14
He still codes every day. He's a Microsoft Fellow.
27:18
As far as
I know, he still goes in to work.
27:21
- Can you speak to the genius of
that guy?
27:21
What's interesting interesting about his mind, having, having
worked with him, having interacted with Dave Cutler?
27:30
- Well, the dude's wicked smart,
but he's also like a farmer.
27:34
He's 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.
27:42
And he won't tolerate it.
27:42
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.
27:55
- What did you learn from that
about successful software teams, where there's a large number of people
collaborating?
28:03
Because Microsoft had a lot of brilliant engineers back then, and like
you said, Dave Cutler.
28:07
They had to, they had to create completely new systems, many of which we still use
today.
28:14
What have you learned about great software engineering
teams from that time?
28:21
- Tools are everything, I think, for
one.
28:21
And people are everything.
28:25
We'll give that as a granted.
28:25
But
the tool set is a huge factor.
28:29
If we had Git, it would have been
immensely easier.
28:29
We were using Diff and, you know, manual Deltas.
28:35
To do this porting and stuff.
28:35
So being
able to fork a branch of source code would be a luxury that
is new to me.
28:39
And so- At the time, it would
have been really handy.
28:44
- What were some memorable conversations
from that time when you walked over next door- - Well, what- - and talked to some of these folks?
28:50
- 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.
28:54
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.
29:02
But while they were working on it, one of the guys that 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.
29:14
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.
29:22
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.
29:28
So it's a very similar sentiment.
29:32
- Were there, like, kind
of intellectual debates, - Oh yeah.
29:35
- like, there's some heated
stuff with the engineers? - It was...
29:38
Yeah, it got contentious.
29:38
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.
29:53
- Yeah, I've seen those kind of
debates in like, programming language design communities,
like Guido van Rossum, the leaders of those communities, it
can wear them down because people get...
30:04
You almost, like,
forget the mission you're on and start being very
nitpicky about the details.
30:08
I mean, engineering minds get together, and you just go to war over
the stupidest, like, syntax subtlety. - Right.
30:20
- Well, I shouldn't say stupid,
but it's a small syntax.
30:24
subtlety for programming language.
30:24
I'm sure there are internal battles about specific kernel components.
30:32
- Yeah, there's one that I lost
that still bugs me to this day. - Okay, yeah.
30:38
- Because I still think I was right.
30:38
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.
30:41
Now, the problem is I'm on a MIPS box
because I'm porting it to RISC.
30:45
And you can't have unaligned addresses.
30:49
But if you
take two ID lists, which are basically past components, you take the one for C: backslash,
take the one for Windows, take the one for System32, and you add them together.
30:57
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 byte access, to pull the string out and copy it
manually.
31:09
And 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 MIPS machine because
it's unaligned.
31:16
So I'm having the argument that even though it's late in 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 all this hard work can just blaze
through it.
31:31
And it became a shouting match and sort of a personal match,
and I lost that one.
31:35
And I still think that, I know today, that that code
running on Windows is thousands of times slower than it has to be.
31:43
Nobody
cares because it's plenty fast, but - Yeah.
31:47
- it could be a lot faster. - Yeah.
31:49
So you mentioned MIPS and RISC.
31:49
How deeply did you have to
understand the lowest level?
31:55
Sort of the lowest
level of the software and even the hardware with the stuff
you were building.
31:59
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?
32:12
- Well, about half your day is going to be spent
debugging, and most of the time is going to be spent in call stacks that are in pure assembly
language because there's no source level debugging.
32:21
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.
32:25
You can go look at the source code, but you're
looking at the raw assembly dump from the machine at all times.
32:29
- So even if you're programming in
C, the debugging is in assembly? - Yeah, 100%. - Oh man.
32:35
- So it's a little cumbersome.
32:37
And better yet, we're doing four
instruction sets because we're doing Intel, MIPS, Alpha, and PowerPC.
32:41
So depending
on which machine it crashes on, you've got an entirely different instruction set.
32:46
You get reasonably adept
at debugging all four, but I had more experience in MIPS,
so MIPS stuff would come my way.
32:54
- That's a real endurance event. Can you
speak to that?
32:54
The torture there is debugging, especially that kind of debugging
without the tooling associated with it?
33:02
I mean, that's, you know, programming.
33:02
Kids
these days, programming isn't all about creating beautiful things, right?
33:10
It's also about fixing things.
33:18
- Yeah, I would say that 20% of my professional
life has been creating, and 80% has been debugging and fixing.
33:24
And I mean, I got a bit of a reputation
as somebody who could fix stuff.
33:24
So stuff like that would flow to me, and so I would
spend more time doing that.
33:28
I wasn't renowned as a creative UI genius where I'm flowering all
these new ideas.
33:32
So I got to fix ugly stuff, but you get really good at that.
33:36
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 after a day of
it, it can get pretty trying.
33:52
- Yeah, debugging can be real torture.
33:52
It can be really, really difficult.
33:56
There's a psychological component,
I think, of perseverance.
34:00
- I think the ones that take you a day, they
resolve one of two ways.
34:00
Either it's like, "Oh, extra semicolon," and
then you finally see it.
34:08
Or it's some horrible manifestation
of cross-threaded apartment nonsense that was really hard. But it
can go both ways. I had a bug.
34:15
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.
34:24
So I had tried to resolve it for a long time, and I'd talked 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.
34:36
It's
probably some issue in my code, right?
34:40
And they're probably right, but it wasn't
in this case, and I was sure of it.
34:40
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.
34:52
And finally, it never asserted.
34:55
But occasionally we would
get this bug where people would still see it.
34:59
So I finally put
my phone number in the assert, and I was like, "If you see this message,
call DavePL at 425-836," my phone number.
35:10
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.
35:13
We were able to go through, and it was actually a kernel accounting issue, and it wasn't a
Task Manager issue.
35:17
So they just fixed it in the kernel once I was able to prove that it
was, in fact, a kernel issue.
35:24
And you'd think we would then remove my phone
number, but we just commented it out.
35:24
So it's shipped, and it's in all the damn source
code leaks for NT that are out there. So - But that's awesome.
35:32
- that's how I find Task Manager code is I search
for my phone number on Google, and it will reverse find- - Oh yeah, that's fantastic. - ... the NT source code.
35:39
- Can you speak to the assert thing?
35:39
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.
35:49
- A little facetious, because it's
probably not the smartest thing, but... - No, it's not. - ... you will find out.
35:52
- But I mean, assert by itself is already
a serious thing, because it stops all execution.
35:56
I mean, this is one
of the reasons I really, really love asserts, because they stop everything and
force you to take care of the problem.
36:07
- Yeah, I'm a little religious about my asserts, too.
36:07
I don't assert things that I hope aren't true.
36:11
I assert things that I
know cannot be true.
36:14
And I think that's really the intent of an
assertion.
36:14
So I'm overstating the obvious, but when it does occur, it's a bug,
plain and simple. It's not a warning.
36:21
- 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...
36:34
it's not something I
want to suggest you go back and add later.
36:37
It's something you should do
organically as you build your code. - As you're building.
36:40
- So for each function, if you've got
assumptions, like I know that this pointer is never null, well, assert that.
36:44
If
you know this count is always less than twice the byte width, assert that.
36:48
And
don't be afraid, because if it asserts, it's doing you a favor.
36:52
I think some people
are afraid.
36:52
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.
36:58
Or maybe I'm one to do that. But
it's like that.
36:58
People don't assert because they're afraid they're
going to fire.
37:02
Well, no, you want to know.
37:05
- You mentioned Task Manager.
37:05
Obviously, we have to talk about this, the legendary program that
you created, the Windows Task Manager.
37:13
Tell me every detail of how you
built it.
37:13
What is Windows Task Manager?
37:18
- 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.
37:29
And it gives you the ability to
terminate and kill those ones.
37:29
So it's an inspection and a fixing tool.
37:34
- Yeah, it lists all the processes.
37:34
I mean,
it's a legendary piece of software. It's crazy.
37:38
We just take it for granted.
37:38
It's like the Start menu, right? It's like genius.
37:44
- Well, I had the great fortune of working on a
lot of things that people are familiar with.
37:47
And Task Manager was one of those side projects
that I started as something that I wanted for myself and eventually came in-house.
37:51
So I started writing it at home, and I got kind of the basics up and
running.
37:56
And I was using, I think it's HKey Current Performance or 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.
38:08
And when I brought it in-house,
then I was able to call things like NtQuerySystemInformation or
NtQueryProcessInformation and get the real answers very quickly, which enabled it to
become a very fast and responsive app.
38:20
So people have come to rely on it because I wrote
it to be as reliable as possible.
38:20
I wasn't worried about the features.
38:24
It was a basic set of
functionality that I wanted in there.
38:24
And I got everything I wanted, but I
wanted it to be really robust. And so that... and small.
38:32
The
original was like 87k.
38:35
- Okay, can you speak to what it takes to build
a piece of software like that that doesn't freeze?
38:40
- You don't assume much, right?
38:40
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.
38:48
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.
38:55
And so the app becomes a little more complex
because everything is multithreaded.
38:59
- Okay, so what programming
language were you working in? - C++.
39:02
- So this was for Windows NT? - Yes. - Okay.
39:05
- So this shipped initially in NT 4. 0.
39:07
- Okay, so what are some interesting details about
this program?
39:07
Because you have to get it as simple as possible, but also as robust as possible.
39:14
What are some interesting
optimizations, for example, you had to implement?
39:20
- There are a couple of things.
39:20
They're a
little hardcore now. I'm surprised I did.
39:23
I didn't want to link to the C runtimes at
all.
39:23
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.
39:30
So, it almost doubled the
size of the app if you just touched any C call.
39:34
So I was careful not to do that,
but then I was actually writing in C++, which is C with objects
more than anything.
39:38
But, 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 runtimes to do it for you.
39:50
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.
40:00
- That's about the size... ... of the program.
40:02
What are some
interesting aspects of tracking down every process and how much
CPU usage is in that process?
40:10
- One of the cooler things that I saw is...
40:10
I don't want to say I invented Hamming code, but I kind of invented Hamming code
without knowing Hamming code existed.
40:17
So every column and every row in Task
Manager has a bit on whether it's become dirty or not.
40:21
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.
40:29
So Task Manager
is super efficient, and it works in concert with the ListView control, which provides
that functionality to go through and repaint as little as an individual
cell that changes from frame to frame.
40:41
So it could paint very
fast, it can resize very smoothly, and resizing was probably
my biggest personal goal with that app.
40:49
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 it still works today.
41:02
So
kind of proud of that. - It is incredible.
41:06
Um, You've gotten the chance to observe
the evolution of Task Manager.
41:12
In some ways, it really
hasn't changed much.
41:15
Maybe there are some prettier
aspects to it that fit into whatever version of Windows it's in, but
it's really basically the same thing.
41:23
- The functionality is very much the same.
41:23
The reporting is more because they've added GPU and thermals and things like
that, which is really nice to have.
41:30
And we didn't have that
ability in the day.
41:32
- I mean, what can you say?
41:32
Do you
know, was there any refactoring done, or is it basically the same code?
41:37
- As far as I know, the original code's still
mostly all there.
41:37
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.
41:49
But that's the world we live in.
41:51
- Yeah, it's one of those pieces of
software you create and once it's there, it's just really like the Start menu,
and then I'm sure if you remove it, people would just lose their mind.
42:02
- Yeah, it might be locked in for a
while on that one. It might be good.
42:06
- Yeah, I thought that would
be true for Clippy, but, Clippy will make it back one
day.
42:10
All right, what are some other pieces of software you created
at the time that are legendary?
42:19
So you were part of Space Cadet
Pinball, at least porting.
42:22
- Yeah, so they came into my office and said,
"Hey, what are you doing?"
42:22
And I said, I told them what I was doing and
they said, "Well, how do you want to spend your next three months?"
42:27
And I said, "I have no idea."
42:31
And they said, "Do you want to port Pinball?"
42:31
And I had seen Space Cadet Pinball as a game standalone for the Win95 platform, and it had a
couple different tables, and it was a cool game.
42:38
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.
42:50
And unfortunately, a lot of the code was
in Assembly, and I was on a MIPS, so I had to rewrite the code in C, so that I
could then port it to all the different platforms.
42:56
And at the heart of
the game is a huge state engine.
43:00
And it's like a giant switch statement
with, if I remember, like 50 entries in it. like 50 entries in it.
43:04
And it's got an
Easter egg built in.
43:04
And decoding the state, it's like running a neural
network through this thing as you hit it with different states.
43:14
And I just put
it aside and treated it as a black box.
43:18
And so my code runs on top of that and does
the drawing and the sound and everything else.
43:21
But the original game is still
running.
43:21
And somebody recently asked me, why is it slightly different?
43:25
The physics are slightly different from the Windows 95 version,
but it should be the same code because I'm trying very hard to preserve that.
43:33
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 can be 5,000 frames a second for Pinball
because it's a pretty basic game.
43:45
And so all your physics are interpolated
5,000 times per second instead of 30 times a second, or whatever you would've got on
the old one.
43:49
So you're getting arguably better, So you're getting arguably better,
or at least different physics.
43:57
- Why is that game so awesome?
43:59
- I think it's a great design.
43:59
I mean, I take no
credit for that.
43:59
That's all totally the guys at Cinematronics.
44:02
But the original game is a great
design.
44:02
It's very similar to Black Knight 2000, which I own as an actual
physical pinball machine.
44:10
And the layout is actually very similar.
44:10
I
don't know if it was inspired by it or not. game. - Yeah.
44:15
Sometimes I think about like
Tetris, about certain games with pretty primitive graphics that captivate
the the excitement of a large number of people.
44:28
And maybe it's the excitement of a large number of
people that contributes to the awesomeness of the game.
44:31
So when many people together
get excited and talk about it, that sort of gets implanted into your
head.
44:35
But that's one of the great games.
44:38
I mean, even like Solitaire and Minesweeper.
44:41
I mean, there's just a
generation of people that have gone to war in Minesweeper, right?
44:48
- Well, those things were included in the OS
not as games but as educational tools to get you to use a mouse. - Oh, interesting.
44:54
- So Solitaire is there to show
you how to do drag and drop. - Yeah.
44:57
- And Minesweeper's probably right click.
44:57
I think you put a flag or some item. - Yeah.
45:00
- 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.
45:11
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.
45:16
- I used to volunteer teaching computer science
at my kids' school, you know, for the third graders and stuff.
45:19
So it's more like
logging in than computer science.
45:23
But the kids, of course, all their dads
work at Microsoft, so nobody's impressed by anything you do.
45:27
So one of the kids found out
I worked on Pinball and then they were like, "Whoa, you worked on Pinball?"
45:31
Because
they all knew that in those days.
45:35
Now the kids are probably aged out, they don't
know it anymore, but for a brief period.
45:38
- You're behind the Windows activation.
45:42
- You say it like it's a bad thing.
45:44
- Everything's a matter of
perspective.
45:44
So tell the story of that.
45:48
What's Windows
activation? How'd you get involved?
45:53
- So they came to me late in the XP ship
process.
45:53
I don't know if the beta had gone out.
45:57
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.
46:04
But whoever was responsible
for doing it had slipped it enough times that it wasn't going to happen.
46:08
So I
had 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?"
46:14
"I don't know, but I'll try."
46:14
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.
46:26
And I don't know what
its 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.
46:36
- Because it's also annoying.
46:39
- It is, especially if you have to phone activate.
46:39
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.
46:49
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 it encoded in letters and
numbers that somebody's willing to read in over a phone.
47:01
And if you think doing product
activation is painful over the phone, could you imagine being the person that
worked on the other end of that line?
47:09
I mean, that's just got to be a mind-numbing job
to listen to product keys for eight hours a day.
47:13
- Yeah, one of the challenges with
Windows, and it's been a frustration point for me, but I
understand from a design perspective, it's very
difficult, is so many different kinds of people
use Windows.
47:24
But it's been frustrating how over time Windows
has more and more leaned into the direction of like the not-not the power user, I
should say, which is why sort of Linux has always been really
wonderful.
47:39
But from an activation perspective or from any kind
of configuration, it's been a, it's been a source of a lot of frustration.
47:49
- Yeah, one of my more popular episodes of
late has been why you can't move the Windows taskbar. - Yeah.
47:54
- And I had no idea, but the outrage
is palpable amongst people that you- - Yes. - ...
47:57
just put it on the left or top, and you
can't anymore, and it is an affront to their existence.
48:00
And I understand
it to a certain extent.
48:02
- Well, it's one of the main reasons I really just
dislike Windows.
48:02
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.
48:10
Can we just configure stuff?
48:14
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.
48:26
Just give them that freedom.
48:28
- Well, it does cost, right?
48:28
Because the
freedom to put the Start menu on the left or the top or the right 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.
48:46
So the question becomes at what point is it still
worth it to satisfy the niche needs of a small set of users...
48:56
And just, those decisions weren't mine to make.
49:01
But I could see it from both sides.
49:04
- 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.
49:16
There's a kind of
reputation that builds over time that has a very powerful ripple effect.
49:22
That I think— it has so many benefits, including for hiring great
software engineers.
49:31
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, and I
think Microsoft has more and more moved in that direction with GitHub and acquiring
GitHub and just taking care of the developers.
49:56
But on the
Windows interface side, come on, some customization.
50:02
With VS Code, you can customize everything.
50:06
Why can't we customize
the Start menu, all right? Anyway, and the taskbar.
50:10
And really every
aspect of the Windows interface.
50:10
I don't— I—maybe you're right.
50:17
Maybe it
increases the complexity of the code.
50:20
I suspect that's just not the case. - I bet it was.
50:24
I bet it was a scheduling decision when
they rewrote the Start menu.
50:24
I think they rewrote it because it's different
than the old taskbar.
50:31
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."
50:39
And I'm not saying that's the right decision, but I'm guessing that
might be the kind of thing that motivates it.
50:47
And they're on such a different
release schedule now. It used to be...
50:50
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?
50:58
But if it's always churning and the
UI is changing every release, it's never going to get that level of polish.
51:02
Although I think the UI is pretty nice, but...
51:06
- Yeah, it is nice, but I think
it's— I just don't think it's a scheduling thing.
51:10
I think it's a craftsmanship
thing.
51:10
Just like you with the Task Manager, if there's a guy or a girl in there who takes ownership of it, who has a
passionate—like 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.
51:34
- And I think if you have large
software engineering teams with managers and scheduling of meetings
and all this kind of stuff, yeah, okay.
51:42
Then your
argument applies.
51:42
But if you allow the flourishing of
individuals that create cool stuff and like their own side project,
which Google is very good at.
51:55
- They've tried that at Google, yeah.
51:56
- Yeah, like have fun with it.
51:56
Do
some crazy stuff and then we'll integrate it.
51:59
We'll try to integrate
it into the whole ecosystem. I don't know.
52:03
I don't know, because to me, there's
such a great joy for an individual developer to create something like
customization of the Start menu or the taskbar because you know that
millions of people are going to use it, the taskbar.
52:19
And then you know that thousands, tens of thousands of developers
might be using to customize even little subtle aspects of the taskbar.
52:26
You know how much joy you create, you give to people to customize— to
have some kind of JSON thing where you customize something about the taskbar?
52:37
- 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?
52:47
Or maybe there is no right answer and all four
answers are equally right. I have no idea, but... - Right.
52:51
I think I've always-- I'm glad
Apple exists.
52:51
It's a beautiful thing and that idea of design is wonderful, but I
always thought that Windows creates the contrast.
53:00
The point of Windows is to be the operating system that works on all
kinds of devices, that just as much, it's supposed to be much more open.
53:08
And they've
moved towards that direction more and more with Windows Subsystem for Linux.
53:12
It's just this whole developer- friendly ecosystem.
53:16
The interface should
be in the spirit of that, I think. - Right.
53:21
- But I do think that there could also be
security vulnerabilities created with that.
53:25
It's not just the complexity of
the code, because Windows is just under attack.
53:29
It's very difficult to keep it
secure.
53:29
Anyway, taking that tangent, you also developed a ZIP file support for Windows, creating Visual ZIP.
53:37
Like I mentioned, ZIP folders that eventually evolved into ZIP
folders. Tell the story of that.
53:44
- 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.
53:48
This is 1993, and we're living in our apartment and we're just
seeing what the housing market is like out there.
53:55
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 house is 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.
54:07
So I took the flyer and I cut the picture
of the house out and I taped it to my monitor.
54:15
And that was my incentive to just
write something at night because when I came home, I was doing two things.
54:19
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.
54:26
And
so I wrote a Shell extension.
54:26
Before I actually went to the Shell team I started it, and
that's what led to my interest in going to the Shell team based on an MSDN sample or
MSJ at the time, MSJ sample that I saw on how to like bring up
a folder.
54:39
Well, once I had the very basic bring up a folder template, adding ZIP
file support to it was just incremental all the way.
54:47
And I released it as a
shareware product. I think it was 19. 95 or 29.
54:51
95 and I sold whatever, couple
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?" I said, "Yeah."
55:00
She said,
"Are you the guy that wrote Visual ZIP?" I said, "Yeah."
55:04
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.
55:08
And I said, "Okay, what building are you in?"
55:12
And she's like, "What do you
mean?"
55:12
And I said, "Well, I'll come by."
55:12
And she said, "Well, no, you got to talk to travel and you got to
talk to legal, and this all has to be set up."
55:16
And I'm like, "I don't get it.
55:20
We both work at the same place.
55:20
Why can't I just stop by?"
55:20
I don't know if I said that literally- ...
55:24
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.
55:29
- They had just cold-called the author
and then found out that it was me. - Yeah. That's funny.
55:32
- And so they made me an offer on it, and it's the kind
of thing where if I don't accept the offer, well, 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.
55:42
Neither of those is great.
55:46
I mean, I'd like to keep my
job of course, but I'd like to still- ... have this income stream.
55:49
And the other option
was to accept their offer, which is what I did.
55:52
So then I bought a used
'93 red Corvette and...
55:56
- And you got to continue
building it internally? - I did.
56:00
So we took a lot of features out,
right, to simplify, 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.
56:08
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.
56:19
Multi-volume support, I think,
was taken out just to simplify it.
56:23
- Can you speak to ZIP in general, just
the history of ZIP and, you know, compression, that whole thing?
56:29
- Yeah, it was really borne 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.
56:38
Executables compressed about half their size.
56:42
Other stuff
compresses much more.
56:42
But a guy named Phil Katz 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.
56:54
But it became
ubiquitous in the entire PC industry, and pretty much everybody
was using it.
56:58
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 at Windows.
57:11
- Yeah, and that's another piece of software
that's just kind of with us to this day. - Mm-hmm.
57:15
And it could be vastly improved, but, you know,
it was written in the single core days, so it doesn't do anything multi-threaded.
57:19
And you've got a 96-core 7995, well, it uses one of
them to unzip your file.
57:26
- What other awesome things were
you a part of at Microsoft?
57:26
What other pieces of software?
57:32
- I worked on the initial prototypes
of Windows Media Center. So we did ... that in '96, I believe.
57:35
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.
57:48
Which is all wildly
inappropriate in the workplace today, ...
57:53
it's all the content we had until we got actually...
57:53
We had them put a satellite dish on the roof, DSS, whatever the 18-inch dish is, because
we couldn't get cable to the building.
58:01
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 have, you know...
58:09
The current Start
menu is not great at 20 feet away, so.
58:13
- Tell me the story of the
infamous blue screen of death.
58:17
- What it is is when Windows has no other
option, when the kernel gets into a state where something illegal has happened,
so let's say a device driver is trying to write to a piece of memory it doesn't own or
is trying to free a piece of memory twice, of memory twice, something that just cannot happen,
and the kernel has no other option.
58:28
It will shut the machine down to save your work. And...
58:35
Well, not save, but prevent
further damage, and it puts up a blue screen and it prints out the stack
information, depending on your settings.
58:42
Sometimes it's just a sad
face... ... In the current Windows.
58:46
- Yeah, I wonder what the first version of
Windows was when the blue screen came to be.
58:51
- So, Windows 3 had a blue screen... ...
58:54
but it's completely unrelated to the blue
screen in Windows NT.
58:54
And I talked to the guy who wrote the blue screen in Windows
NT. His name's Jon Viert.
58:58
And, the reason he picked white
on blue, I had thought.
59:02
I'd always heard it was because in the labs, you could
walk through a lab where we have 50 PCs all running stressed.
59:09
"Oh, that one's
got a blue screen. It's-" ... crashed." It wasn't that simple.
59:11
It was
just the MIPS firmware that he was building it on was blue on white, and Visual
SlickEdit that he was using as an editor was also the same color scheme.
59:19
And so you could code, boot, crash, and reboot, all in
the same color scheme.
59:25
- Why do you think so many
problems with computers can be solved by turning it off and
turning it on back again?
59:34
- I think there's two major things that happen
with computers as you run them over time.
59:37
One is memory gets used and not freed.
59:40
And so it accumulates on the heap or in
the swap file or wherever, and things get sluggish.
59:44
And the other is, code gets
into a state that the developers didn't anticipate or didn't test very well.
59:51
And maybe that's a rare state, but now that
Notepad or Word or Excel is in that state, your system is goofy.
59:55
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.
1:00:03
- 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.
1:00:19
And then somehow fixes it.
1:00:19
What's some of
the best and the worst code you've seen during that time at Microsoft?
1:00:25
What's
some beautiful code and what's some ugly code that pops to memory?
1:00:31
- In terms of beautiful code, there's
two that stand out for me.
1:00:31
One is the kernel in general.
1:00:35
When you get
down into the Windows kernel... ...
1:00:38
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.
1:00:46
On the user side,
probably the coolest code I remember seeing was a guy named Bob
Day who wrote a named pipe implementation to eliminate the use of
shared memory.
1:00:53
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.
1:01:01
We didn't want to do
that.
1:01:01
Shared memory is a bad idea on NT and at an industrial level, so he
came up with a way to do it with named pipes, and I remember doing
a code review on it, and it was very impressive to walk
through the code.
1:01:12
It was one of those things where it was like, "Oh, I don't
think I could have done that if I was trying."
1:01:19
- Who's the greatest programmer
you've ever encountered? - You know what?
1:01:22
I don't think there is any
one.
1:01:22
I've met a number of great programmers.
1:01:25
But I'll tell you one story that impressed me a lot.
1:01:25
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.
1:01:33
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.
1:01:40
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.
1:01:47
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, "Could you send somebody by?"
1:01:54
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 one with the other in case I didn't have it, but it
was already set up.
1:02:02
And so they sit down, and they're using WinDbg, which is a
horrible debugger.
1:02:06
It's just, it's accursed.
1:02:10
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 signaled and what's not.
1:02:22
And
it's just this quicksilver 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, and I've never seen a performance like this.
1:02:33
And about five minutes
in, I just hear, "Oh, I see."
1:02:39
And then they disconnected and
got up and left.
1:02:39
And that was Laura Butler, who became a distinguished engineer at Microsoft.
1:02:43
I think she may still be.
1:02:43
I'm not sure if she's retired or not, but...
1:02:47
So
she kind of set my template for, you know, what Microsoft developers
were like when they're debugging, and what kernel developers were like, and even what female
developers were like, because I had such a small sample set.
1:02:58
But it was a very
high standard, so...
1:03:02
- There are few things I love in life more
than people who are ultra-competent at anything, really.
1:03:06
But the lower
level, the better, in the engineering space.
1:03:09
They're able to, for
example, run or maintain the infrastructure, the computer infrastructure.
1:03:13
So not the individual computer, but the computers communicating together
and working together.
1:03:17
Those people are just magicians. It's so inspiring.
1:03:21
It's
like watching a great carpenter or...
1:03:28
- I love anything done really, really well.
1:03:30
- Yeah, it's beautiful to see.
1:03:30
It's beautiful to
see that humans are able to accomplish that.
1:03:34
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.
1:03:42
With software, sometimes you don't get to see visually just the
number of people impacted by a thing.
1:03:50
So imagine how many
people are impacted by Linux, and all the different
open-source systems that make up Linux. It's incredible.
1:04:00
And Task Manager is
an example of a piece of software, just how many people have used
that over the years, and how many times? It's crazy.
1:04:08
It's probably, is
it billions? Billions have used that.
1:04:12
- Yeah, two billion a month or something. - Two billion? - Something like that.
1:04:14
I've seen
the metrics and it's up there. - Oh. Crazy to you? - It is.
1:04:18
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
gonna run and flow, and then eventually you write the code, and the code does that thing that
you had pictured in your head.
1:04:33
And now there are billions of copies of that thing
that I had in my head running on millions of people, or billions of peoples
and machines, and that in itself is really cool to me.
1:04:40
It's not a
vanity thing so much as, I'm impressed by it, I guess.
1:04:46
- How has your programming
evolved over the years?
1:04:50
- I take a lot more care with
complexity these days.
1:04:54
So, it used to be you would write code
and just keep writing code, writing code, and then at some point, go back and clean
it up.
1:04:58
Well, I write the other way now.
1:05:02
I try to write really clean initial skeletal
code and then flesh it out because I have been involved in too many projects of
my own and of other people's making, where things get so messed
up that they're just not fixable.
1:05:13
And so sometimes the work you
put in upfront pays off, you know?
1:05:18
- What programming languages have you used over
the years?
1:05:18
What's been your main go-tos?
1:05:22
- For me, it's been C++
and assembly language.
1:05:25
- And still to this day, C++
is really what you lean on?
1:05:28
- Yeah, right now I'm 100% Lua and Python,
but that's just a side project I'm working on, so...
1:05:33
- Can you speak to the Lua and the Python detour that you took, and
what do you love about C++?
1:05:40
- What I'm doing is, I wanted to build an AI
to play the game Tempest.
1:05:40
That's the old Atari game, Tempest.
1:05:44
And this is a game
that I actually hold the world record on.
1:05:47
And, uh- - Can you take me to this Atari
game, Tempest? Okay, Atari Tempest.
1:05:53
What kind of game is this?
1:05:55
- So, it's a 3D vector game from 1980. - Okay.
1:05:59
- And it's a very complex game.
1:05:59
You've got full 360
degrees of motion, you have eight shots on the screen.
1:06:03
There's like 11 enemies, there's spikes.
1:06:03
So, it's a very complex game.
1:06:03
It's not like trying to, you know,
do Pong or something. - Okay.
1:06:10
- And what I wound up doing was first taking
the ROMs out of the machine and reverse engineering the code.
1:06:14
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. And yeah, there's one. - So what? Oh, wow. That's a
very geometric. Okay, what?
1:06:27
Can you explain to me the gameplay?
1:06:28
- Yeah, that's me playing
the game right there.
1:06:30
- This is literally you playing? - This is me.
1:06:31
Dave is the high score,
you'll see in the top center there.
1:06:34
- Can you explain to me what I'm looking at?
1:06:36
- Well, it's a 3D geometric world.
1:06:36
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.
1:06:51
- So, long story short, it's a fairly
complicated game to play well.
1:06:54
And I wanted to see if I could get an AI to
do it.
1:06:54
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 puts them together as parameters, which
sends it to the Python side over a socket, and then the Python side does RL learning.
1:07:10
I'm using a dueling Deep-Q, and I believe— ...
1:07:15
two 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.
1:07:23
But that's level 96, so
it's got a ways to go yet, but— - And you're the red thing shooting? - Yes.
1:07:30
- You're controlling the red thing that's shooting? Okay. What are the options?
1:07:30
You can just move clockwise or counterclockwise
and then you could shoot.
1:07:38
- Yeah, so you have a rotating knob— ...
1:07:39
which is an optical spinner, and you have a
fire button and a super zapper for emergencies. But that's it.
1:07:43
Fire and rotate, basically.
1:07:46
- Alright, let's get back to your favorite C++.
1:07:46
What
do you love about C++?
1:07:46
Why have you stayed with it for all these years?
1:07:51
- Because it allows me to encapsulate my
favorite C code in classes.
1:07:51
I'm not a big— - You're really a C guy.
1:07:58
- Well, I actually— - Okay, I gotcha.
1:07:58
- Yeah, I'm really a C guy.
1:07:58
Although, I write
two kinds of C++.
1:07:58
I write really modern C++ 20 using no pointers, no string,
or no character strings, so there are, you know, it's basically as safe
as Rust as far as I'm concerned.
1:08:13
Or I write C with classes, which
is standard C, but, you know, with polymorphism and encapsulation
and...
1:08:17
That's most of what my code is. But I try to do both.
1:08:23
- Let me ask you about the whole stretch of time
that we kind of skipped over.
1:08:23
You built a lot of software over the years after
Microsoft, on the side while at Microsoft and afterwards, a lot of successful pieces of software.
1:08:34
One of your
companies was Software Online.
1:08:39
And it got into trouble for
nagging users too much, I guess— ... to upgrade. That's what I saw.
1:08:44
What was all that about and what did you learn from that experience? - That was...
1:08:49
Other than, like, family health scares,
you know, when kids are sick, that was the scariest time of my life.
1:08:53
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.
1:09:05
And then I discovered banner advertising online.
1:09:09
And so I signed up with my
credit card for a site.
1:09:09
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."
1:09:17
And it
would rotate it in.
1:09:17
And I didn't set a cap on it.
1:09:20
I came back on Monday
and I saw I had spent like $10,000 in banner ads. I was like,
"Holy crap.
1:09:24
How am I going to explain this to my wife?
1:09:28
This is a
bug, it's a mistake, it was my fault."
1:09:31
And I looked at the sales and it had
made like $38,000 worth of sales.
1:09:35
And I was like, "Holy cow.
1:09:35
So all
I have to do is scale that at some point," and basically did
that for the next several years.
1:09:43
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.
1:09:55
It's like,
I know these 10 things are absolutely not true.
1:09:58
Why are we even here talking about them?
1:09:58
And then all they care are the two things that might be true.
1:10:02
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 continued to run it and not buy it or uninstall it, it would remind you once a
day.
1:10:10
Not like every 10 minutes, but once a day or every time you booted your
computer, but most once a day.
1:10:14
And the AG contended that was too often,
it amounted to spam.
1:10:18
And so we agreed with them to limit it
to once a week, I believe.
1:10:26
And, you know, there had to be a button to just
uninstall with one click.
1:10:26
So we did those kinds of things.
1:10:29
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.
1:10:37
So in the year 2001, which we're 2001-2003 we're talking about,
if you bought software, there was an expectation that a disc would show
up.
1:10:44
And so we made that the default, was to fulfill by disc and it was $3. 95 or $4.
1:10:48
95
extra and it was very obvious, but it was a checkbox and it was turned on to ship
the disc to your house.
1:10:52
Because we found if we didn't do that, we got all these calls,
people would wait, they'd order.
1:10:56
Two weeks later call, "Where's my disc?"
1:11:00
And we'd look, "Oh,
you didn't order a disc." "Well, cancel it all.
1:11:04
I don't want it because I'm not waiting for it."
1:11:04
And
so we got a lot of returns and we didn't include the disc and so we decided to include the
disc, but that is a, a priori violation of negative affirmation billing in
Washington State because you're giving them a default higher purchase price.
1:11:18
- What about on the software user relationship?
1:11:24
It's interesting
like how often to annoy the user with a thing. Right?
1:11:31
If you never mention
anything, they might never discover something they actually want.
1:11:40
But if you mention it too much,
then they can get annoyed. - Yeah.
1:11:46
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.
1:11:51
- That's one of the things that bothers
me with Windows.
1:11:51
I think it does that a little bit still
to this day, where it bothers me by asking me certain
questions, like, "Do you want this?"
1:12:03
For example, I really don't like to use
my Microsoft account to log into Windows. - Right.
1:12:10
- I think now it's like basically
required.
1:12:10
I think there's just no way around it.
1:12:14
But, like, they make it so difficult to not do that.
1:12:17
It's almost like they think they can just trick
me into...
1:12:22
It really does feel like I'm getting tricked
into not doing what I want to do. - Right.
1:12:32
- Like, I have to think, "Okay,
I need to click skip," and then it'll do something, "Are you
sure?"
1:12:37
Like, I have to use too much of my brain to do the thing I...
1:12:41
Like,
you know, as an interface, as an interface, you know what I'm trying
to do.
1:12:45
You're trying to trick me into not doing the thing I want
to do, and what I hate about that is, like...
1:12:53
It's probably effective,
sure, for converting people, but it's really not good long-term for taking
care of the interests of the user.
1:13:06
- Yeah, the one that really throws me
is the user-recommended settings.
1:13:11
So I just did a Windows upgrade, I went through the
steps, and I'm going through this new dialog or wizard.
1:13:15
Use recommended settings sounds like the thing
you should do, but I'm pretty sure that resets you to using the Edge browser and... - Right.
1:13:20
- and all this other stuff.
1:13:20
So yeah, recommended
by them, but not recommended for me.
1:13:23
And that's the difficulty.
1:13:25
- That's a really good example.
1:13:25
What effect do you think that does in resetting the
default browser to Edge?
1:13:29
Do you think you're going to really earn the
loyalty of a user if you do that?
1:13:40
Don't you think that there are actually...
1:13:40
What you're going to create...
1:13:44
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 Edge is the thing
that you can't quite trust. - Right.
1:14:01
- Unfairly, because I think Edge is a
really great browser, but just this unpleasant feeling.
1:14:05
I don't
know what that is and...
1:14:10
- Well, you don't want your operating
system to be an adversary, right?
1:14:13
And sometimes Windows can feel adversarial.
1:14:13
Like, it doesn't have your best interests at heart, and that bugs me
to a certain extent.
1:14:20
- 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.
1:14:24
There's a certain aura about that kind of interaction.
1:14:31
And when an operating system is interacting
with you in that way, it's like...
1:14:36
- 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...
1:14:47
- Did you learn about finding
the right balance from that?
1:14:50
- Yeah, I mean, I'm way more self-aware now.
1:14:50
There are things I would do much differently and particularly in terms of the advertising. I always figured...
1:14:54
There's a guy named David Ogilvy, 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.
1:15:06
So it's clickbait-y
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.
1:15:17
Fear works well for
antivirus and stuff, but not so much for optimization and make your
computer faster utilities.
1:15:24
And so I always tried to
cater to the greed aspect.
1:15:28
you know, make your computer faster, get more
RAM available, whatever the value proposition is.
1:15:32
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 gonna look at it with their background
knowledge and may conclude something different.
1:15:43
So I might be scaring people where I was just
trying to incentivize or get their greed instinct going.
1:15:47
So I'd be more sensitive
about that kind of thing today.
1:15:50
- Ridiculous question, but
what do you think is the top three Windows operating
systems, the different versions?
1:15:59
- I'm a fan of Windows 2000 Server. That's - Wait, what? Really? - Yeah. - Okay. Wait, please.
1:16:04
- That's what I ran my business on, and I ran my
brother's business.
1:16:04
We set up multiple salons all VPNed to one another and
using the SQL Server and...
1:16:11
- I don't know if I ever got to experience
Windows 2000 server, so when was XP out? - 2001. - What was before XP? - 2000. - 2000. Was that good? - Yeah, I liked it.
1:16:23
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.
1:16:29
- But then XP was, hmm, I would say probably from a completeness perspective and impact
and how long it lasted, it was probably the greatest Windows for
consumers, the operating system. - I would think so.
1:16:44
It's certainly
got the longevity for it.
1:16:46
There's people who still run it.
1:16:46
I mean, I'd still run it
on stuff if you could get security updates, because it does 98% of what I need Windows to do, but...
1:16:52
- Yeah, that was incredible.
1:16:52
I mean,
so Windows 95, I'll probably put Windows XP as the number one for
me, and then Windows 95 two. - What's your metric?
1:17:01
Personal
preference or industry impact or...
1:17:05
- Industry impact, stability, just there's certain, like, just like with
programming, you have code smell.
1:17:08
Just, like, how well all the features were
orchestrated together, how there's a design philosophy that permeated
the whole thing and was consistent.
1:17:22
Not too many features,
not dumbed down too much. - Right.
1:17:27
- but not overcomplicated.
1:17:27
How often it
crashes to blue screen. All of those things.
1:17:33
- I don't know if it's a very apt description, but I
think of it as crisp.
1:17:33
So there's not a lot of rough edges.
1:17:37
It does what it
does, does it snappy and... - Yeah.
1:17:39
You said you play slot machines and given that you love
hardware and software, you're the perfect person to ask
how do slot machines work?
1:17:50
- Well, I'm happy to ruin them for you. - Okay.
1:17:52
- So- It's ironic to me that I play slot
machines, cause I know it's a losing bet overall, but there's a whole dopamine feast
there of bright lights and high contrast colors that I enjoy. So I do play them.
1:18:01
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.
1:18:12
And then the game says, "I
gotta make up a movie to go along with that."
1:18:16
And maybe it's three bars or whatever it is,
but there's no correlation.
1:18:16
It's not spinning the reels, seeing where they land, and looking
that up to see what you won.
1:18:20
It's completely the other direction.
1:18:24
It determines whether or
not or if you won and then makes something up to fit that scenario.
1:18:29
- That indeed is ruining it for everyone. - A little bit.
1:18:33
- What kind of code runs them? - I don't really know.
1:18:35
I tried to
get down and get inside access to one, and it was very hard.
1:18:39
They don't
want to tell you a lot about them, that deep of a secret, but... - Yeah.
1:18:46
- They're all basic Windows PCs, but
they're basic Windows PCs on top of a very secure enclave of some
kind that I don't know a lot about.
1:18:53
- Yeah, it has to be
extremely secure, right? - Yeah.
1:18:56
Well, in the '70s or '80s, there was
a tech in Vegas who went around and he was burning his own ROMs
for the slot machines, with a backdoor in them, and so when he serviced
the machine, he would just put his ROM in, - Nice.
1:19:06
- and he'd come back six months later and... - Nice.
1:19:08
- invoke the backdoor and... - I love humans so much.
1:19:09
Anyway,
do you have other favorite kinds of systems like that?
1:19:15
- I like a lot of old hardware.
1:19:15
I
restore cars, so I do a lot of 1960s muscle cars, cars and trucks. - Nice.
1:19:21
- And old computers, so I restore PDP-11s.
1:19:21
It's been my fascination and my special interest for the last six months
or so, and I've built a number of those.
1:19:30
- Yeah, I've seen you posting
videos about it, the PDP-11/83.
1:19:35
What's that whole project?
1:19:40
- So basically, what it is, is I had built
a number of PDP-11s.
1:19:40
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."
1:19:51
And so it was kind of a quest to,
just like you try to max out a PC, I tried to max out a PDP-11.
1:19:55
So it's got four
megabytes of memory, which would be massive in the day.
1:19:59
And yeah, that's it there.
1:20:01
And it's got lots of blinking lights, and I had to
rewrite the BSD kernel to make the lights work and...
1:20:05
- What are we looking at
here? What is, what's...
1:20:09
- So the very top is a PDP-11/70
control panel, which we can largely ignore, and then there's two
chassis below that.
1:20:12
One has- - What are the different knobs?
1:20:15
Sorry to ask dumb questions here.
1:20:18
- The knobs, they, uh- ...
1:20:18
control
what view you get of the LEDs. - Oh.
1:20:22
- So normally, you see the data bus and
you can see the address bus.
1:20:22
And you can pause the machine, you can edit the address on
the bus, and you can deposit stuff into memory with the switches.
1:20:32
- Man, the haptic plus the LEDs.
1:20:32
That's
what you like, imagine a computer to be. - Yeah. - That's so cool. That's so cool. And then
these are what? What are these? These are DU1, DU2? - Yeah.
1:20:45
It's a weird floppy drive.
1:20:45
It's a
dual floppy drive with one stepper motor.
1:20:49
So both heads seek together
like Siamese twins. - Okay.
1:20:52
What kind of stuff are you
doing with this? What are you- ...
1:20:55
are you trying to restore them?
1:20:57
- Yeah, so I restore them and- - Does it actually run? - Yeah.
1:21:00
- Oh, all the blinking lights are real? - Yeah, it's all real. - Wow.
1:21:04
- Then I had to rebuild the kernel and all that, so I had
to learn the BSD kernel.
1:21:04
I'm pretty familiar with it now to get...
1:21:10
Cause you can't just add a device driver, right?
1:21:10
You've got to rebuild the kernel to add support for whatever device.
1:21:14
So you
add a new disk controller.
1:21:17
It's time to build the kernel, so you gotta
go find the source and find the code and...
1:21:20
- And you can run code on this? - Yeah.
1:21:23
- You've written a couple books on
autism.
1:21:23
Being autistic yourself, I was wondering if you could tell me about, like, fundamental
differences about the mind of a person with autism versus, let's say,
a neurotypical individual.
1:21:34
- Well, the fundamental theory of thought
for autism is called monotropism.
1:21:34
And basically what that means is that my
brain does one thing and does it very intensely, and then when it's done I can
move on and do something else.
1:21:42
But I'm not a multitasker.
1:21:46
I'm a serial
single-tasker by any stretch.
1:21:46
Um, autism usually brings with
it sensory sensitivities and repetitive behaviors,
behavioral issues that compound it.
1:21:57
And if they rise to the level
where an individual can't moderate or accommodate them in their life, it becomes
a disorder.
1:22:01
And that's probably one to two percent of the population.
1:22:08
- What's the biggest benefit
of life with autism?
1:22:11
- Um, I can bring to bear an incredible
amount of focus and dedication on a particular task.
1:22:15
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.
1:22:22
And it
could be like a kid playing with trains. I get that same feeling.
1:22:28
- That said, you also said
that you struggle with ADHD. - Yeah, a fair bit.
1:22:33
- So that's part of the component,
like, maintaining the focus?
1:22:38
- Or actually, acquiring the focus
is the issue.
1:22:38
I'm very easily distracted.
1:22:42
I fall asleep with noise-canceling
headphones, or I can't fall asleep, that kind of thing.
1:22:46
But once I get locked
in, I'm very hard to distract.
1:22:50
So it's kind of a paradox.
1:22:52
- Oh, that's fascinating.
1:22:53
- It's hard to get into that state. - Okay.
1:22:54
What's the biggest challenge
of life with an autistic mind?
1:22:58
- That I don't know what anybody else is
thinking.
1:22:58
So I know what I would think about this interaction if I was
in your position and I was you.
1:23:05
And that's the best I can do.
1:23:05
But I think most
neurotypical people have a sense of, "Well, Lex probably feels this way or that way 'cause he's
acting this way and his reactions are this and his facial expressions say this and..."
1:23:13
That's all
kind of lost on me.
1:23:13
So I run a little proxy NPC game for everybody I deal with.
1:23:20
- So I guess that makes social
interaction a little bit complicated. - It can be, yeah.
1:23:22
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.
1:23:33
So I'm much better
on FaceTime, where if somebody makes a joke, they might smile after that.
1:23:38
On the phone, I don't know if you're being
sarcastic or serious and that kind of thing, so...
1:23:42
- So that's probably gotten you into
trouble over the years a bit. - Yeah.
1:23:45
There's lots of times with
my wife, too, where...
1:23:45
There's a certain literalism
that comes with autism.
1:23:52
And we spent years where she would say something, and I'd say,
"But that doesn't make sense."
1:23:52
She'll say, "You know what I mean."
1:23:55
I'm like, "No, I know what
you said, and I'm not being just combative here.
1:23:59
I literally only know
what you said." and I don't have that.
1:24:03
I remember we've been
in meetings with people and, you know, if 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 have to, like...
1:24:14
You got to tell me what's going on 'cause
I really don't know what's being said here, so...
1:24:19
- You told me, related to this, that
there was an early, somewhat awkward encounter with Bill
Gates.
1:24:23
Can you share this story of that interaction and
how autism comes into play here? - Yeah.
1:24:32
My very first summer at Microsoft
when I got the internship, Bill had all the interns over.
1:24:36
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 chat in the backyard.
1:24:43
Of course,
it's still Bill Gates, and he's a big enough deal even then that
you're a little nervous.
1:24:47
So my manager, Ben, who was sort
of my mentor at the time, took me over to introduce me to Bill 'cause
he knew him.
1:24:55
He's explaining, "This is Dave.
1:24:58
He's our intern from Canada.
1:24:58
In the space of
four months, he's done this feature and just copy and smart drive," and he listed off all the
stuff I was doing.
1:25:02
But I stopped because I'm like, "Well, actually, it was
three months."
1:25:06
And I had to interrupt them, and they both kind of, "What?"
1:25:09
And
they looked at each other, and I realized that was the wrong time to- to
correct a guy. But... - Yeah.
1:25:17
So for you, little inaccuracies? - Oh, drive me crazy.
1:25:22
- And then you, of course
you don't...
1:25:22
The impact that might have on a
casual social interaction, it's not trivial for you
to be aware of that. - Yeah.
1:25:38
I'm much better than I used to be.
1:25:38
Before, I didn't know and I didn't know how injecting a correction
meaninglessly into a conversation could impact or make the other person feel.
1:25:46
Now I got a better sense of it, but...
1:25:49
- What advice would you have for
folks who have an autistic mind on how to flourish in this world?
1:25:56
- In terms of prosperity and finances,
the biggest thing I can say is sell what you can do, and not yourself.
1:26:00
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.
1:26:08
But if you 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.
1:26:16
Whether you're playing the piano or writing code.
1:26:21
- That said, so much of
software engineering on large teams has a social
component to it, right?
1:26:29
- It does, and that was a liability for me. - How do you...
1:26:31
I mean, what have you learned
about how to solve that little puzzle?
1:26:36
- 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.
1:26:42
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.
1:26:53
And that's not always the case.
1:26:53
Some people need a lot more
affirmation, some people just want money, some people want to be in the important meetings and make
decisions.
1:26:57
But I was largely oblivious to that.
1:27:01
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.
1:27:11
- So you could, I guess, make things
more explicit and just communicate better about, like...
1:27:15
ask them
about what their interests are. - Yeah.
1:27:19
And that's something I started doing,
is overtly asking.
1:27:19
Because it's hard for me to nudge somebody there.
1:27:23
I'm not
good with that kind of social dance, so...
1:27:27
- Yeah, part of the social dance is
there's a lot of stuff that's unsaid.
1:27:31
You can kind of figure out... You can read
people. But if that's...
1:27:31
With autism, it might be a little bit difficult to do
that, and so you have to make things more explicit.
1:27:42
Plus, like, sarcasm and
satire and humor might be difficult.
1:27:48
I would love to be a fly on the wall in
some of your earlier interactions with Microsoft.
1:27:51
I mean, some of the greatest
engineers have a mind like this, so...
1:27:58
- Yeah, I've had laptops thrown at me and stuff,
and I'm sure it was my own fault, so...
1:28:01
- You write about the 10-second autism
test.
1:28:01
Could you explain how this works? - Yeah.
1:28:05
Now, there is, of course...
1:28:05
Anything that
has two answers has a high error rate, but...
1:28:10
So what's more important to society as a
whole from the people?
1:28:10
Is it cooperation or creativity?
1:28:13
And if you had to
pick one, which is the most important?
1:28:16
And most neurotypical
people will generally lean towards cooperation, whereas people on the
spectrum tend to lean towards creativity as individual problem-solvers.
1:28:26
- Of course, there's some
kind of error rate there.
1:28:28
- So if you want to double your precision, you
can use a second test: you ask, "There's a room with 10 chairs, and six people come in
and sit down in those chairs.
1:28:32
How many chairs are left?"
1:28:36
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.
1:28:43
And I'm not being a dick. - Yeah, okay.
1:28:46
- I'm not trying to be complicated,
but that is how my mind works.
1:28:49
And so when I see that question, it's
like it depends how you answer it.
1:28:53
- So you're saying how
literally you take things?
1:28:57
- Yeah, everything is very literal for
me.
1:28:57
I remember as a kid, my grandfather was building a planter holder in
the kitchen for my mom.
1:29:01
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?"
1:29:09
And he says,
"It'll be big enough to hold a horse."
1:29:12
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.
1:29:20
But
for a lot of my life, I took figures of speech as literal, so...
1:29:26
- You've 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. Can...
1:29:38
I think this is going to be useful
to a lot of people. What does that entail? How does that help you?
1:29:43
- So if I meet somebody, particularly somebody new, and it's
my first couple interactions with them, so even meeting you today, then I will go
home later and replay all of the moments where I had
choices to make.
1:29:51
And probably the most uncomfortable ones
first, to find out, what did I do wrong in that moment? What did I
miss?
1:29:58
What was the other person thinking?
1:30:02
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...
1:30:06
you know, in an extreme case.
1:30:06
But, And that's happened a couple
times in my life.
1:30:10
I had a car restored that my dad had bought new in
'69.
1:30:14
I still have it, so we've had it 50 years.
1:30:18
And about 20 years ago,
I had it restored, and it was a three-year process of craftsmen working on
this car for thousands of hours.
1:30:21
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.
1:30:31
Then I fly home and write the check and the car gets delivered.
1:30:35
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.
1:30:46
And I was completely oblivious to that.
1:30:50
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.
1:31:02
He's
like, "I've thought of that moment often."
1:31:07
So I'm like, "Now I'm
glad I brought it up."
1:31:08
- Yeah, there are subtle things about human
interaction that mean a lot to people.
1:31:13
And if you ask them straight up,
they might not be able to articulate that, but it means a lot.
1:31:17
When it's off,
when something is off, it bothers them. - Right.
1:31:22
- But to reverse-engineer that,
to figure that out for a person who might not sense those little
subtleties of human interaction is tough.
1:31:32
- 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.
1:31:40
I can only speak for
myself.
1:31:40
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.
1:31:54
Then once I know, once I have
an understanding of what's going on in your head, I can feel incredibly sorry for
you.
1:31:58
But 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.
1:32:06
- What advice would you give to people, on
the other side, how they can help you be a better friend or better partner
or better colleague?
1:32:12
How should they communicate with you to help,
like, give more information?
1:32:18
- Yeah, be really specific.
1:32:18
And don't
assume I'm going to pick up on clues and nuance and subtlety.
1:32:25
So if you're trying to nudge me into a particular behavior,
you're much better off saying, "Dave, this is what you need to do."
1:32:31
- Have I failed in any way today? - No, not yet. - All right.
1:32:33
What score would you
give me out of one to ten? Am I a six? A seven? On the communication? 7. 5? Floating point. Nice. Masking.
1:32:47
You've got to
tell me what that is.
1:32:47
Um, it's a significant experience for many
on the spectrum.
1:32:50
What is masking and tell me about any of the experiences
you've had with masking?
1:33:00
- So masking is, and it's probably not the right
way to describe it, but it's the act of acting normal.
1:33:04
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 who are neurotypical are going to receive and
accept it the right way?
1:33:15
And Everything you do in a social interaction,
from waving my hands to making fa- fa- facial expressions to tone of voice
to posture, it's a huge contrivance and it's work.
1:33:33
So it comes natural to most people; it's just
what they do, and cool people do it really well.
1:33:37
But for somebody on the spectrum,
you've got to fake it all. - Yeah, acting normal.
1:33:44
- There's a song by Rush, you know the band? - Yes. - Limelight.
1:33:47
And it's written by Neil Peart.
1:33:47
I only
speculate about people who have passed on, so I've got a sense he was probably on
the spectrum.
1:33:51
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."
1:33:59
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.
1:34:07
So it seems like
he's struggling with masking a lot in the song.
1:34:10
And I have no idea, but
that's what I took from it. - Yeah.
1:34:13
You described
meltdowns as an overwhelming experience.
1:34:16
Can you describe meltdowns?
1:34:16
What typically triggers a meltdown? - Generally, it is...
1:34:22
it's when you're emotionally
overwhelmed to the point that you can't manage your behavior anymore.
1:34:25
And so
you see it in the movie Rain Man when he's 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...
1:34:36
Well, actually, probably the
best portrayal I've seen in media is, What's the TV show where
the doctor is autistic?
1:34:43
Anyway, there's a TV show where
a doctor's 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.
1:34:51
It's a pretty good portrayal on television, so.
1:34:56
- What is actually happening?
1:34:56
Like, there's a
threshold you cross where it's just like...
1:35:00
- Yeah, the switch flips.
1:35:01
- It's like a blue screen
(laughs) essentially- - Yeah, kind of. - ... for the brain algorithm? - So the switch flips.
1:35:07
You go into a primitive brain.
1:35:07
Your frontal cortex shuts down to an extent, I think, so you don't have the
benefit of decision-making and filtering.
1:35:14
You're a very
reptilian brain in that state.
1:35:18
And it's really a panic state.
1:35:18
And
so it's a panic and a fight or flight response to not being able
to tolerate the current reality.
1:35:26
And perhaps it's been so frustrating or you've
been so randomized or you had a bad travel day or an argument at work 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.
1:35:41
- What about love and relationships?
1:35:41
What
are some of the challenges of that?
1:35:45
You know, there's a show,
Love on the Spectrum. - I've heard of it.
1:35:47
I've not
seen it, but I've heard of it.
1:35:49
- 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.
1:36:01
- 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 out front of the house at dark.
1:36:14
And across the street there's kind of a
nice house and it has these big brick pillars that are linked by, like, anchor
chains and it forms a fence around the yard.
1:36:22
And I'm looking at these things 'cause
they're about two feet square and they got capstone and I'm like, "You know, I wonder
if they're hollow or are they backfilled?
1:36:30
Are they filled with concrete or what?"
1:36:30
And
my now wife looks at me and she's like, "What's wrong with you?
1:36:34
Why do you have a
place in your head that cares about that?" - Yeah, that's great.
1:36:37
- And we just knew in the moment that I was
passionately involved and caring, and she was passionately involved, and why would
you even worry about that kind of thing?
1:36:45
We knew we were very different, so.
1:36:47
- Yeah, very specific,
seemingly irrelevant details.
1:36:51
- But, uh- I was never good with
people.
1:36:51
I don't get it when people like me, I guess. And so I...
1:36:57
And my son
is the same way 'cause they don't fall very far from the tree, and I got them
a T-shirt that says, "If you're hitting on me, please let me know and be
specific because I'm clueless."
1:37:08
And it's very similar for me.
1:37:08
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.
1:37:21
- Were you able to say, like, "I
love you," that kind of stuff? - Yeah.
1:37:26
I mean, her family was way more open
with that kind of thing than mine was. - Yeah.
1:37:30
- And so it was a growing period for me.
1:37:30
But, yeah, that's not a problem I have. - Okay. All right.
1:37:33
But it seems, like, unimportant.
1:37:36
Like, what is
that actually accomplishing?
1:37:41
- Well, now we do a lot of affirmation
and checking.
1:37:41
Like, in the last couple of years, we do a thing where
she'll just be like, "You good?" I'm like, "Yeah."
1:37:49
And there's two steps to that.
1:37:49
There's the, "Are you good?"
1:37:49
and then there's my response.
1:37:52
'Cause if I'm like,
"Yeah." ...
1:37:52
she knows something's up. - Yeah.
1:37:55
So- - And so there's always this 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... Developed that.
1:38:05
- So there's a vast chasm
between "yeah" and "neh."
1:38:11
Again, that subtlety of
human communication.
1:38:14
You've written about the
experience that people have of feeling, quote, "a little bit autistic."
1:38:22
Could you
elaborate on this concept?
1:38:25
- Yeah, I think a lot of people, maybe 10
to 20% of the population, is somewhere on the autism spectrum, but isn't impacted
by it enough that it rises to the level of a disorder.
1:38:33
But they still have many of
the characteristics that arise from autism.
1:38:36
And I think if they can
understand and identify and manage some of those behaviors in an optimal
way, they can both leverage them and take advantage of some of the skills and mediate some
of the deficits and problems that come with it.
1:38:48
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. - Hmm.
1:39:02
Why do you think so many
programmers, like excellent, like great programmers and great
engineers are on the spectrum?
1:39:08
- 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.
1:39:13
That's been an obsession for me my whole life, what's inside.
1:39:16
I gotta take my mom's oven apart because I gotta know how the flip clock works.
1:39:20
And I think that's a good habit to have if you're
going to be a programmer.
1:39:26
- And being willing, being excited
to get into the details.
1:39:30
What's a cool thing you hope
to program or build this year? What are you working
on?
1:39:33
So we got the RL learning how to play Tempest.
1:39:37
Where are
you on that, by the way?
1:39:37
Like, what's the ETA on success
and dominance? Like victory?
1:39:47
- Well, it's very close to working.
1:39:47
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 they all interact and they all work, so it's like 95% of the work is done
now.
1:39:59
It's tuning hyperparameters and hoping for the best.
1:40:04
- So it's already a success in a sense, but
now you're seeing how far can this go?
1:40:08
- Yeah, my goal was for it
to be able to beat me. - That's a tough goal.
1:40:13
- It is, but lots of games now are, you know,
they play them better than humans, but maybe not games this complex.
1:40:19
- What other cool things are you working
on?
1:40:19
What do you hope to build this year?
1:40:22
- The PDP-11 stuff, I'm trying to get
what's called an RA82 drive.
1:40:22
It's the big 14-inch monster that spins at
3600 RPM and sounds like a washing machine.
1:40:30
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.
1:40:35
- What kind of code are
you trying to run on it?
1:40:38
- I'm gonna have to get the
driver stack to work, so I have to incorporate the
driver for it into the kernel.
1:40:43
- You built a machine recently
with one terabyte of RAM.
1:40:48
How did that happen, and why?
1:40:52
- So we have a project called GitHub Primes.
1:40:52
If you just search for GitHub Primes, you'll find it, and it is... - GitHub Primes. - ...
1:40:57
a single set of prime number
algorithms implemented in about 100 different languages.
1:41:01
So it's the exact
same algorithm, and we require that you follow certain rules to make it fair.
1:41:07
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? Oh, so this is...
1:41:16
And
this is what you're using this for?
1:41:24
Oh, so this machine runs those tests?
1:41:28
Okay, you've got to tell me about this project. This is an epic project.
1:41:28
So you're comparing the performance of the different
programming languages.
1:41:34
- Of all these languages, so they all get built into
an individual Docker container, and then they all run. And so...
1:41:38
- This is an incredible project.
1:41:38
This
is really, really cool.
1:41:38
It's really measuring the performance of the different
languages.
1:41:42
So what have you learned about which languages?
1:41:45
Like, which
language usually wins?
1:41:51
- Zig, I think, right now. - Zig. - It varies.
1:41:52
People will make an improvement to the
C++, then it'll pass for a while, and then the Zig guys will get angry and
come back and make it faster. - So Zig, Rust, C++, C?
1:41:59
And what kind of code
is being run?
1:41:59
What's the piece of code that they're trying to run
to measure the performance?
1:42:10
- 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.
1:42:17
- And so it's a loop, got it.
1:42:17
Over and
over and over and over and over again. - Yeah, on all cores.
1:42:21
- So what- - Across all CPUs.
1:42:22
- What about, like, how the program
is written? Does that vary? - No.
1:42:25
So you can do anything you want, but it
has to be a prime sieve.
1:42:25
You're allowed to use one bit per integer at most, so you can't
use a byte, which is cheaper and easier.
1:42:34
There are a number of rules like that that you
have to allocate the memory within your timed loop.
1:42:37
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 a 100 million sieve.
1:42:45
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.
1:42:56
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.
1:43:04
- Are multiple submissions
allowed per language? - Yeah, yeah.
1:43:07
So if you look in the
C, there's like five, I think. - Okay.
1:43:10
And then some of them might
use different compilers, or no?
1:43:14
- Yeah, some are GCC, some are Clang, LLVM.
1:43:17
- I'm looking at a snapshot here from a couple
years ago.
1:43:17
Zig was at the top, then Rust, then Nim, Haskell.
1:43:20
Oh, no, this is not,
this is not ordered by slowness, or is it? - Yep. So C would be 1. 5
times as long as Zig. - Wow. Okay. Fascinating.
1:43:31
It's a super cool project.
1:43:36
- And we've got in crazy languages like
PowerShell.
1:43:36
There's a version in PowerShell, and stuff like that.
1:43:41
- So this is automated, in terms of
organization of how the submissions are done.
1:43:45
There's a structure to it? That's cool.
1:43:47
- Yeah, there's two guys
over in Europe, Rucker and Tudor, who basically own this now.
1:43:50
I
started with just three languages.
1:43:54
I did Python, C#, and C++.
1:43:54
And I checked
them in and I published the episode.
1:43:58
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.
1:44:05
- What's the happiest moment for you when
you're programming and building a thing? What do you enjoy most?
1:44:11
- I think the most fun for me is when I
build something complex and I've thought through how it should work, and then
I run it and it does work that way.
1:44:19
That creates intense satisfaction.
1:44:22
So seeing the results come out the way
that I planned them and have it work, because it rarely does
the first time, but...
1:44:28
- Yeah, or especially if it
does work the first time. - I never trust that.
1:44:31
I always
feel like I'm missing something. - That's true.
1:44:33
But, you know, with compiled languages like with C++, that's always
a good feeling.
1:44:37
You write a bunch of code and you compile it all, it compiles
without warnings, without errors. It's a cool feeling.
1:44:45
What
do you think is the future of programming?
1:44:49
Now, I don't know
how much you've got to really experience the impact of LLMs with code generation.
1:44:57
Have you used Cursor much,
Cursor VSCode with code generation?
1:45:05
- Yeah, I've done a ton of it for the Python
side because I'm not great with Python and I'm kind of new to it.
1:45:09
So I found it
very helpful because I've learned a lot from watching the code that it generates
if I don't know how to do something.
1:45:17
Because if I were to write Python from
scratch, it's going to be about four times as long as what the AI can crank out because
Python can be pretty terse if you're good at it. - Oh, that's cool.
1:45:23
So you essentially
learned Python for this project? - Yeah.
1:45:29
- So this is a good case study of a great programmer in C++ quickly
learning a language.
1:45:36
- Yeah, I'm vibe coding my
way through it, I guess.
1:45:38
- Vibe coding your way through it.
1:45:38
I mean, that is a really powerful use case to learn a language for.
1:45:42
If
you're already a good programmer, to learn either a new language or a new way to approach a problem by having it
generate it, because you already, you probably understand the Python code it generates.
1:45:56
like without actually looking
up any of the syntax.
1:45:58
- Yeah, it's all pretty self-explanatory once you see it,
but creating it from whole cloth is a little different. so.
1:46:03
- Yeah, but you still have to learn how to
program in order to use it in that way.
1:46:08
- Oh, and to read it and to know what to tell it
to do next and all that.
1:46:08
Yeah, I don't think you can vibe code yourself if you're just
new and haven't coded.
1:46:12
But if you're a good programmer, AI can make
you incredibly powerful.
1:46:19
- What do you think is the future of programming?
1:46:19
Like 5, 10, 20 years from now, this whole process?
1:46:22
Now vibe coding is
kind of a fun meme thing, because you still have to be...
1:46:28
The people that don't know how to program and are just vibe coding are almost
entirely creating systems that are not usable in production. They're
not...
1:46:36
It's very difficult to create a product.
1:46:38
And the people who are already great programmers kind of vibe code
just for, in the way that you're doing it.
1:46:45
They're basically, it's just
a fancy auto-complete, and they end up editing it, or it's
a way to learn a new API, or new language, or a new
whatever, a new specific use case, or maybe a different kind of
gooey component or something like that.
1:47:03
But as they get smarter and smarter,
we don't know where the ceiling is.
1:47:07
That might change the nature of
what it means to be a programmer.
1:47:11
So, do you think about that? - I do. I think...
1:47:12
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.
1:47:20
But
now you're dragging things around in AutoCAD and assembling from big pre-formed sections.
1:47:24
And I assume that's what programming will be like.
1:47:28
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.
1:47:39
But I think we're still
quite a ways from it being able to whole cloth generate...
1:47:43
You can't say,
"Give me a Linux kernel that's compatible with Linux."
1:47:46
One day, we'll be able to and it'll
crank it out, but we're not there yet.
1:47:51
- Does it make you sad that we're
climbing the layers of abstraction so quickly?
1:47:55
So you, somebody that
used to do machine code and then assembly, then C and C++,
that we're getting to a point where we're vibe coding
with natural language?
1:48:07
- 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.
1:48:19
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.
1:48:29
And it's going to be hard to duplicate
that for people starting now.
1:48:32
- What do you think is the
meaning of this whole thing?
1:48:36
Of existence, of life,
whatever is going on here? - Making cool stuff.
1:48:44
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.
1:49:03
And so for me, that's
really the meaning of life.
1:49:10
And then maybe you raise a couple of
good kids to hand the baton off to.
1:49:14
- Yeah, and you've created a lot of
cool stuff over your life that impacted millions, probably
billions of people.
1:49:25
And now you're inspiring...
1:49:25
You're creating cool stuff for everyone to see
on your YouTube and you're inspiring people in that way.
1:49:32
So for everything
you've done in the past and everything you're doing now, I'm a big fan.
1:49:36
I'm really grateful for what you're doing and grateful that we got a
chance to talk today. Thank you, brother. - Thank you.
1:49:46
- Thanks for listening to this conversation with
Dave Plummer.
1:49:46
To support this podcast, please check out our sponsors in the description
and now, let me leave with some words from Bjarne Stroustrup, creator
of C++, and somebody who, by the way, I interviewed a long, long time ago,
Episode 48 of the podcast.
1:50:01
He said, "There are only two kinds of
languages.
1:50:08
The ones people complain about and the ones nobody uses."
1:50:13
Thank you
for listening and hope to see you next time.