Lex Fridman Podcast - #479 – Dave Plummer: Programming, Autism, and Old-School Microsoft Stories
Episode Date: August 29, 2025Dave Plummer is a programmer, former Microsoft software engineer (Windows 95, NT, XP), creator of Task Manager, author of two books on autism, and host of the Dave's Garage YouTube channel, where he s...hares stories from his career, insights on software development, and deep dives into technology. Thank you for listening ❤ Check out our sponsors: https://lexfridman.com/sponsors/ep479-sc See below for timestamps, and to give feedback, submit questions, contact Lex, etc. CONTACT LEX: Feedback - give feedback to Lex: https://lexfridman.com/survey AMA - submit questions, videos or call-in: https://lexfridman.com/ama Hiring - join our team: https://lexfridman.com/hiring Other - other ways to get in touch: https://lexfridman.com/contact EPISODE LINKS: Dave's X: https://x.com/davepl1968 Dave's YouTube: https://www.youtube.com/@DavesGarage Dave's Secondary YouTube Channel: https://www.youtube.com/@davepl Dave's GitHub: https://github.com/PlummersSoftwareLLC Dave's Books: https://amzn.to/41qd5IB SPONSORS: To support this podcast, check out our sponsors & get discounts: UPLIFT Desk: Standing desks and office ergonomics. Go to https://upliftdesk.com/lex ZocDoc: App that helps patients find healthcare providers. Go to https://zocdoc.com/lex Fin: AI agent for customer service. Go to https://fin.ai/lex Allio Capital: AI-powered investment app that uses global macroeconomic trends. Go to https://alliocapital.com/ Shopify: Sell stuff online. Go to https://shopify.com/lex OUTLINE: (00:00) - Introduction (01:14) - Sponsors, Comments, and Reflections (10:16) - First computer (15:54) - Dropping out of high-school (23:35) - Joining Microsoft (25:47) - MS-DOS (28:59) - Windows 95 (35:46) - The man behind Windows (40:42) - Debugging (45:59) - Task Manager (51:08) - 3D Pinball: Space Cadet (56:07) - Start menu and taskbar (1:07:06) - Blue Screen of Death (1:09:15) - Best programmers (1:17:16) - Scariest time of Dave's life (1:24:44) - Best Windows version (1:26:34) - Slot machines (1:30:17) - Autism and ADHD (1:49:37) - Fastest programming language (1:53:42) - Future of programming PODCAST LINKS: - Podcast Website: https://lexfridman.com/podcast - Apple Podcasts: https://apple.co/2lwqZIr - Spotify: https://spoti.fi/2nEwCF8 - RSS: https://lexfridman.com/feed/podcast/ - Podcast Playlist: https://www.youtube.com/playlist?list=PLrAXtmErZgOdP_8GztsuKi9nrraNbKKp4 - Clips Channel: https://www.youtube.com/lexclips
Transcript
Discussion (0)
The following is a conversation with Dave Plummer,
programmer, and an old-school Microsoft software engineer
who helped work on Windows 95, NT, and XP,
building a lot of incredible tools,
some of which have been continuously used
by hundreds of millions of people,
like the famed Windows Task Manager.
Yes, the Windows Task Manager,
and the Zip-on-Zip compression support in Windows.
and he ported the code for Space Cadet Pimball,
aka 3D pinball to Windows.
Today, he's loved by many programmers and engineers
for his amazing YouTube channel called Dave's Garage.
You should definitely go check out.
Also, he wrote a book on autism
and about his life story called Secrets of the Autistic Millionaire,
where he gives really interesting insights
about how to navigate relationships, career, and day-to-day life with autism.
all this taken together.
This was a super fun conversation
about the history and future
of programming, computing,
technology, and
just building cool stuff
in the proverbial garage.
And now
a quick few second mention of each sponsor.
Check them out in the description
or at lexfreybman.com slash sponsors.
It's the best way to support this podcast.
We got Uplift Desk,
which is an incredible company
that has been my go-to
for a long time for all my office and pocket studio furniture.
Zogdoch, which is a platform that connects patients with top-rated healthcare providers,
fin for AI agent for customer service,
Allio Capital for folks who understand the turmoil of global markets.
And finally, Shopify, a company that we've talked about for 20 hours with DHH.
Because they use Ruby on Rails and they show that it can scale.
Anyway, choose why as my friends.
and now onto the full ladders.
I try to make them interesting,
but if you skip,
please still check out the sponsors
or I enjoy their stuff.
Maybe you will too.
To get in touch with me,
for whatever reason,
got alexfredman.com slash contact.
All right, let's go.
This episode is brought to you
by a company that I cannot sing enough praises to.
In fact, today I got another desk from Uplift Desk.
The number of desks I have,
the amount, the quantity of joy they bring,
to my life is immeasurable.
Like I said, it's my go-to for all
office and podcast studio furniture.
I have a desk with a Linux box.
I have a desk with a Windows box.
I do editing on.
I have a quadruped
sitting on top of another desk
that I'm working on.
There's a big quadruped,
and it's a four-legged robot,
and then there's a mini-baby quadruped.
They're both sitting on the desk,
and I'm working on them,
and it's connecting to the Linux box,
but there's a lot of,
I have to take them apart,
I have to bring it back together.
And then, of course,
the podcast desk that you see on the podcast
that sort of woody color.
I have three of those desks,
and I've been using that for many years,
long, long, long, long,
before Uplift Desk was a sponsor.
And I just got a new desk today
in the podcast studio
where I have some more robots,
Linux laptop,
and I'm doing some more development
to do some robotics-related stuff
in the podcast studio, so anyway, these are standing desks.
You can customize the amount of options is incredible.
I can vouch for these guys, good people, good desks, good ergonomics, just incredible.
Anyway, go to upliftdesk.com slash Lex and use code Lex to get four free accessories,
free same-day shipping, free returns, a 15-year warranty, and an extra discount off your
entire order, that's U-P-L-I-F-D-E-S.
This episode is also brought to you by Zocdoc, a platform that connects patients with top-rated
healthcare providers if you're anything like me remembering to go see a doctor before things go
terribly wrong.
You know, checkups, making sure everything's okay is a thing I just don't do.
And I'm very stressed about.
And really the main reason for the stress is because, at least in my perception, a lack of tooling for finding a doctor, for having easy to use, fast, efficient, accessible, huge number of choices, tooling, okay?
And so Zog Dog does that incredibly well.
I can recommend them.
That's my go-to place to find a doctor to find a healthcare provider.
me saying these words is motivating me to do so because I haven't seen a doctor in quite a while
and so hopefully my words motivate me and perhaps even motivate you if you're anything like me
and have been avoiding this topic because everything is going to be fine until it's not
one day it's not going to be fine and you're going to regret not going to zocdoc.com slash lex
that's z oc doc dot com slash lex
This episode is also brought to you by Finn, a world-class popular AI agent for customer service.
They are trusted by 5,000 customer service leaders.
They're even trusted by top AI companies, including Anthropic and Synthesia.
That's how you know they're legit.
When a legit AI company trusts your AI company to do some AI thing for you,
that's how you know you're legit.
59% average resolution rate
90 day money bag guarantee up to $1 million
it's powered by the Finn AI engine
which is a continuously improving system
that allows you to analyze, train, test, deploy and repeat that loop
over and over and over until the thing gets smarter and smarter
and smarter and your customers are happy
go to fin.a.ai slash Lex
to learn more about transforming your customer service
and scaling your support team, that's fin.a.ai slash Lex.
This episode is also brought to you by Allio Capital,
a company, an app that I'm especially excited about
because not only am I using it,
I'm learning about investment from it.
It's an investment app that's designed by people
who understand global markets
and the macroeconomics of a world
that is increasingly becoming divided,
as I've mentioned before, politically divided,
socially, economically divided.
ALEO is powered by Altitude AI,
which identifies shifts in inflation,
interest rates, and global risks,
and then adapts your portfolio in real time.
If your investment tooling
doesn't have a little bit of the AI spice
in that delicious recipe,
I suspect that you might be missing out
on the quickly evolving space
where AI is getting smarter and smarter and smarter.
so I think it's very wise to be using tooling that's leveraging, at least in part, AI for doing the investment.
Allio Capital does that extremely well and is doing so for hands-on or hands-off investors.
Set it and forget it.
Try not to think about it.
It all stresses me out.
I just want to know that whatever investment I'm doing, it's in good hands.
Anyway, download their app in the app store, Google Play, or text Lex, to 511.
511. That's A-L-L-I-O capital. TextL-X to 5-Eleven, 5-Eleven. Oh, and here comes the one small
print thing I'm supposed to say. Investing involves risk, including the potential loss of
principle. Past performance does not guarantee results. See terms and conditions. Text fees may apply.
And finally, friends, this episode is brought to you by Rubion Rails. No, I'm just kidding. It's
Brought to you by Shopify, a platform designed to anyone to sell anywhere with a great-looking online store.
Why do I mention Ruby on Rails if you're not familiar and you want to know what love is?
You want to watch somebody fall in love and maybe you yourself fall in love all over again.
Listen to the six-hour conversation with DHS where he elucidates his deep love for the Ruby language
and why that makes his creation of Ruby on Rails a continuation.
of the beauty that he spreads throughout the world.
Anyway, the CEO of Shopify, Toby Ludgett,
clearly saw the same kind of beauty in Ruby on Rails,
and that's why so much of the software infrastructure of Shopify,
as far as I understand, is done on Ruby on Rails,
and Toby and the Shopify team have been really good at showing
that the thing scales.
I mean, he's a legit engineer.
An engineer designed a leader that goes to the ground floor
and still is coding, still,
wants to understand how every piece works.
It's really incredible.
I love those kinds of leaders,
and I got a chance to hang out with Toby.
And he's also just a sweet person
and a mind that goes effortlessly
between the technical and the philosophical,
which is some of the most fun people to talk to.
Anyway, you, my friend, can sign up
for a $1 per month trial period
at Shopify.com slash Lex.
That's all lowercase.
Go to Shopify.com slash Lex
to take your business to the next
level today.
This is the Lex Friedman podcast to support it.
Please check out our sponsors in the description or at Lexfreedman.com
slash sponsors and consider subscribing, commenting, and sharing podcasts with folks
who might find it interesting.
And now, dear friends, here's Dave Plummer.
Tell me about your first computer.
Do you remember?
I do.
I didn't own my first computer for a long time,
but the first computer ever used
was a TRS 80, Model 1, Level 1, 4K machine.
And I rode my bike in fifth or sixth grade,
so I was about 11 to the local Radio Shack.
And, you know, they had the standard component stereo systems
and everything else the Radio Shack had,
but they had a stack of boxes that was labeled computer.
And so I was asking the people that worked there about it,
and they said,
got it than they hadn't set it up yet.
And so I was rather precocious
and I figured, well, I'll set it up for you.
And they said, okay, have a shot.
Did you know what you were doing?
Absolutely not.
I mean, it's no worse than a component stereo.
The only thing is that Tandy and their infinite wisdom
use the same five-pinned in connector
for power, video, and I think cassettes.
So they're all identical.
And if you plug them in wrong, you'd blow it up.
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 plus 2 works perfectly.
yet more simple in English that you enter into a basic level one interpreter is not going to get you very far.
So you're trying to talk to it in English?
Yeah.
Didn't know any better.
And I still have an old Fulskap that I wrote in sixth grade of a program that's kind of logically correct,
but has no chance of working on any interpreter that existed at the time.
So it took me a while to figure what was actually going on with him.
But I rode my bike down there every Thursday and Saturday, and they had gracious to let me use the machines.
When was this?
79, 80.
Okay.
What was the state of the art of computing back then?
So what were we talking about?
Well, the big three had come out.
There was a TRS 80 Model 1.
There was the Pett 2001, and the Apple 2 came out roughly simultaneous.
Apple 2.
Would you say that's the greatest computer ever built?
Probably in retrospect.
Well, I would probably give that to the Commodore 64.
Yeah.
You and I agree on this.
That was my first computer probably many years after it was released.
But yeah, Commodore 64 is incredible.
But yes, Apple too had a huge impact on the history of personal computers.
Right.
It's hard to gauge the long-term impact, but I think the 64 itself probably influenced more people,
so that's my reason for picking that one.
You think so?
The sales are certainly higher.
So Commodore 64 sold a lot.
Yeah.
I mean, the numbers are hard to believe.
It depends which numbers you believe, but even the medium estimates are pretty high.
All right, cool.
So you eventually graduated to the Commodore 64.
Like, tell me about that machine.
What did you do on the Commodore?
or 64. Well, the first thing I did was overheat the floppy drive on it, which was
unfortunate because it wasn't a warranty machine. My parents didn't have a lot of money,
so we bought it from computer house, as opposed to one of the major retailers, which meant
when it died, it had to go back to Germany or something to be fixed. So I was left with no floppy,
and so I had a cassette deck, which was the best you could do at the time. And so I was writing
small things, and I had a machine language monitor that you could load from cassette. Didn't
have an assembler built in, but had a disassembler. So you could enter the op codes in 6502 in hex,
and if you were careful about planning,
you'd be able to write some basic programs.
So that's kind of how I learned.
And the first thing I ever wrote on it
was a clone of Gallagher.
No, it's a bad clone of Gallagher,
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 and sort of jump to somewhere else,
do your work, jump back to where you were.
It's just hideous spaghetti coat.
But it all worked eventually.
And I went to make a backup of it,
to preserve it for future scholars
or whatever hell I was doing.
And I copied my blank floppy
onto my data floppy.
So that was my first experience with data management.
So I don't have a copy of my first program anymore.
What was that feeling like?
Do you remember of just doing something,
if I may say so, like stupid, you know,
which is a part of the programming experience?
Yeah, there was a huge amount of guilt
because, right, you destroy several weeks of work
and you know it was because you rushed
or you did something stupid
or you made it unwise choice.
Can you tell me about the programming involved in that game?
So it's literally machine language.
So it's not even assembly.
Not assembly yet because there was no assembler built in.
So I should have written an assembler is my first task, but I wasn't that clever.
How hard is that to do?
Trivial.
And it's one of those things that sticks, I think.
You do it so many times.
You know, if I give you a C issue, there are certain syntactic issues and see that you're never going to forget and get wrong.
Yeah.
And it's just one of those.
Like what are the limitations of programming and machine code?
as a programmer?
The biggest issue is you have to write
completely sequentially
because at least in that variant,
65-02, you can't add things later.
You can only add things on the end.
So it's like programming a tape in a way.
What was the most complicated thing
you've built with machine language?
That game would be, I mean,
in assembly language,
I've done a fair bit of complicated stuff,
but in actual machine language,
I think that game would be the only thing
I've actually...
Literally built a game.
Not a great game, but it worked.
Okay.
All right, and then you erased it.
I did.
All right.
When did you first fall in,
love with programming when you figured out like this is a this is something special i think there was two
stages for me i always knew immediately that i was fascinated with these machines from the t rs80 model one
it's all i wanted to do is ride my bike back there and have more time with it and i did that you know
to wear out my welcome as much as i could and the other revelation came i think about second or third
year university when i realized i love programming but i have no idea what i'm going to do am i going to
make the 12 flash on a vCR somewhere or am i going to go work on an operating system i have absolutely
no idea what I'm going to do post-graduation.
But I love what I do.
And so I think that was a lot of consolation.
It's like it doesn't really matter what I'm doing at this point
because I kind of love doing it.
So you'll figure it out.
Yeah.
As long as you're following this kind of feeling.
I knew I was in the right area, finally.
All right, you dropped out of high school.
Yeah, not the smartest move.
Okay.
But you ended up going back to school and being very successful at school
and just in general, successful as a programmer,
as a developer, a creator.
of software, how were you able to find your way?
Can you tell that journey of dropping out and then finding your way back?
There's no moment when I dropped out.
You just go less and less and less until you realize it's going to be embarrassing
if I show up because I haven't been there in a long time.
And then pretty soon you're just not going.
And that's how you drop out of high school.
So if you find yourself on that path, stop doing that.
But that's precisely what I did.
And so now I'm not at school and I have to get a job.
So I'm working at 7-Eleven and a paint warehouse and stuff like that.
And 7-Eleven is actually kind of an interesting job because it's a job, I think,
they keep rotating for people that are smart enough to do the night shift with all the
accounting and the administration and stuff they make the night shift do,
but that have reasons personally that they need to work at 7-Eleven.
And I was one of those people because I had no high school diploma.
What are some memorable moments from that time at 7-Eleven?
Maybe what do you appreciate about the difficulty of that job?
Probably the worst moment for me.
I mean, I got held up at knife point and stuff, and that's all entertainment.
but the worst, the most, the suckiest part for me was doing the gas dips.
You've got a long, it's like a 15 or 20 foot, wooden stick, and it's measured in gradients
of inches and feet, and you drop it into the gasoline tanks, and then you bring it up and
you measure where the gasoline sits because there's no electronic sensor.
So I'm doing that, and the first time I do it, I dropped the pole, and I redrab it.
Well, that's about a thousand splinters of wood into your hands, and it's 40 below it, and
that really sucked.
Oh, wow.
I realized, I don't want to do this for a whole life.
I knew that, so.
Okay, so you stand there frozen with splinters in your hand.
And at some point, I have a revelation about my life
that next time I'm going to do it differently.
And then how ludicrous that is hits me about three seconds later, right?
And I think that was really the moment for me
where I realized that I've got to do something different.
And so even though I was 21, I went and I talked to the principal
of my local high school, and I was like, can you let me back in?
He's, no, you're too old.
And we don't have room.
It was his main reason.
And I said, well, between now and then, somebody's going to drop out.
So you'll have room.
So let's assume you have room.
Can I come back?
And he was gracious and let me come back.
And so I did the three or four classes that I needed.
Yeah, you know, just if you can linger on that, the slow dropping out,
that's a weird thing that you can do with your brain.
You realize to yourself that you don't have to do the thing that everybody else is doing.
And that's a dangerous realization.
because, like, you kind of have to be part of society
to do certain things.
Right.
And if you realize, like, you don't have to do
what everybody else is doing,
you can either have an incredible life
or a really difficult life.
Well, the problem in that process
is you're making a much smaller decision.
I'm just not going to go to class today.
Yeah.
And that's all you're deciding.
But you do that enough times,
you're making a much bigger decision.
Mm-hmm.
And that's the problem.
So it's better to make,
if you want to live life in a non-stander way,
It's better to make the big decision explicitly, and then you can stop going.
Yeah.
Don't allow yourself to make the...
It'll be made for you eventually.
Okay.
Well, you got back, and you eventually went to college and were very successful as a student,
and you weren't that good of a student before.
No, I was a terrible student in high school, and even my first semester of college,
I still wasn't taking it quite serious because I got Mercy Passed in Geometry 90,
which is like the makeup class for the geometry 12th grade class that I didn't have.
And that scared me because I realized by 1% or the grace of the professor that let me through,
I just about ended my entire university career here.
So fortunately, those marks don't count on any transcript because of remedial classes.
And so I got kind of a fresh start the next semester and did it for real.
I did it for me.
And that made all the difference.
What can you speak to it maybe by way of advice on how to be successful as a student?
Well, ideally there's some aspect of school that you do enjoy, whether it's art,
whether it's computer science, whether it's shop class, whatever.
So go for those classes and just put up with and do the hard stuff
because it's way easier than having to do it later.
And that's easy to say when you're 50-something.
It's harder to say when you're 15 something.
But it makes a lot of sense.
All right.
What's the story of you joining Microsoft?
How do we get to there from 7-Eleven to Microsoft?
Yeah, it's a big jump.
So I had gone back to school, and I think it was in my third year of university.
I was working for the phone company for the summer as a summer job,
and I'm doing conversions of their UBNet to TCPIP and modern networking,
which really amounts to swapping cars,
but then figuring out why their config.comsts doesn't allow Lotus to run anymore
because it's got 10K less than it used to,
and it's just a horrible time to be working on computers,
but I was doing it.
And at lunch, I'm sitting in the food court with the old and the board,
and I'm reading a book that I had bought called Microsoft,
or Bill Gates and then making a Microsoft, hard drive, I think is the title.
And it's a great book.
It's just sort of a matter-of-fact history of how Microsoft came to be.
what it's like, how it operates, what the people are like there.
And I'm reading this book, and I become really entranced by it and fascinated
because it sounds like exactly the place that I want to be,
but I'm in Saskatchewan, so what am I going to do about it?
And what I wound up doing was I had put myself through school
with a program called Hypercash, which is a file system cache for the Amiga,
because the Amiga didn't have any out of the box.
And it had done reasonably well, and so I went through my registration cards
because in those days you had a 4x card that people had to fill out with their name
and their address, and if they had done,
had an email, their email, and they send it in, they get notifications of updates, and so on
when it's shareware. And I went through the whole stack looking for anybody with a Microsoft
email address. And I found maybe three or four people, and I just called email them and say,
hey, I'm a operating system student in Saskatchewan looking for an opportunity. I don't remember
exactly what I said. The one guy, Alistair, Alistair Banks, he wrote back and he said, I know somebody
that I can put you in contact with, and he put me in contact with a guy named Ben Slifka, who did a phone
an interview who eventually
went to hire me to work in MS DOS for the summer.
So that's how I got there.
You put yourself to school by,
tell me about hypercash.
You build a piece of software.
It's the weight loss program for hard drives.
That was sufficiently useful to a large number of people
that would somehow give you money?
Yeah, it made decent money.
I mean, I sold a couple thousand copies,
$20 a copy or $40 a copy.
What language was it written in?
C.
So there was some assembler.
the actual really tight code to do the real work of transferring data to and from the cache with
68,000 assembly, everything else would see. Okay, is this, like, file system I.O.?
Device block I.O. So any block that gets service from the drive would go through my cache first,
and it was an N-way associative cache. And so it would try to match the geometry of the drive
and do pre-fetch based on you're trying to read a whole track at one time, that kind of thing.
What was it like trying to get your software out there at that time? Like, where, how are you able
those are fine customers.
Yeah, it's interesting.
I think I started on UsNet and some of the Amiga forums posted.
Here's my trial version, try it out for 30 days, see what you like.
And eventually got picked up by a few retailers.
And I remember I was with my now wife in her car.
She had a cell phone because her dad was very concerned about her safety.
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.
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. And so eventually
a number of companies just bought an inventory.
Let's go to that time.
It's such an interesting time with Bill Gates and Microsoft.
Why do you think Microsoft was
dominating the software and the personal computing
space at that time? And really
for many, many years after.
At the time, it was the single
most potent assemblage of
smart people that I've ever been a part of.
And I've been in academia, and I've been an
industry to a certain extent.
And you know that when you're working out at a regular computer company,
the one guy who actually knows what he's doing,
his smarter friend, he probably works at Microsoft.
So when you get there, you're the big cheese from your small town.
You think you know a lot.
And all of a sudden, you're just in an environment where, like,
oh, oh, I'm just not going to speak because I don't want to look stupid.
Okay.
What about Bill Gates himself?
What are some qualities of Bill Gates that you think contribute to the success of Microsoft?
I think he was relentless in the pursuit of his one dream,
which was his old slogan of a computer in every home and a computer in every desk.
It was a special interest.
He was a smart guy, super determined,
and he hired people that were as smart or smarter than him to help him execute it.
And he built an almost unstoppable machine of intellect to go forth and make,
let's say, very simple products.
MS-DOS is not a complicated product by any stretch,
but it's exactly what the market needed at that time.
Yeah, I mean, M-S-Dos changed the game.
And that's actually the team you joined, the MSDOS team.
And I think you joined before Windows 95 was released.
So tell me about the story of MSDOS.
It's success of MSDOS is probably pivotal to the success of Microsoft.
Yeah, before DOS, they were largely a language company.
So they had made basic for a lot of computers.
And they had a 4-Tran compiler and a Pascal compiler, that kind of thing.
but their deal to have MS DOS
included with every version
or every instance of the PC effectively
set them as a standard
that they were able to leverage
for decades going forward
and a certain extent
they lucked into that
and on another hand
they were smart to have done it
because they didn't charge
at IBM a lot of money for it
but making it a standard
really played out to their advantage over time
so at that time
MSDOS
no graphical interface
Can you just speak to what the heck MS DOS is?
It's largely a command launcher.
So you type in a name of a command.
It looks up to see if that's in the current directory
or run a special pass of folders,
and it loads it into memory and executes it if it's there.
And that's 90% of what MS DOS does.
Now it has environment variables and some complexity
and a small scripting language built in,
but it is basically just an operating system shell
that allows you to use the resources of the computer
like the hard drive or the CPU,
and it doesn't allow you to multitask.
There's no graphical interface.
Now, Microsoft did add a text-based graphical interface for things like an editor and QuickBasic in DOS 5, I believe, and it was a DOS shell, which was sort of a graphical file manager in MSDOS 4.
So they experimented with it, but it's largely a command prompt.
Does it have ability to communicate with external devices, so drivers and all that kind of stuff?
Like how expansive an operating system was at MSDOS?
Well, it was limited by the original X-86.
instruction set, which limited it to 640K.
And then there were various band-aids on top of that to do high mem and then extended memory
beyond that.
And a lot of hoops have to be jumped through to make anything work without consuming
base RAM.
Yeah, I mean, so you programmed on MS-DOS.
What's it like?
What are some interesting details there?
Like you said, there's the memory constraints of 640 kilbytes.
Yeah, 64K is the maximum that's ever going to be available.
So it's not what's available to you as an operating system developer
because whatever you use is what the user won't get.
So if you use 10K needlessly,
you're going to, every machine in the world now has 10K less.
So that's kind of a big responsibility.
Is that a true quote from Bill Gates where he said,
Nobody will ever need more than 640.
Yeah, no, it's not him.
Okay.
It's been attributed to him, but not real.
Okay, so, I mean, what are some interesting aspects
that you were able to do as an intern and when you joined an MSDOS and beyond?
One of the first things I did was to take smart.
drive, the disc cache, because I had familiar with disc caches, and to add CD-ROM caching to it,
because I was new.
CD-ROMs were just coming out, Microsoft Bookshelf is one of the few products you could run for
it.
And as you can imagine, caching a CD speeds it up by dozens of times, if you're smart about
it.
So it was a big performance win and a nice thing to work on.
A bigger part of that was moving a bunch of smart drive and eventually the double-space
compression engine up into what's known as high memory.
And without rat-hulling on the technical aspect of it, on the X-A-6, there's a lot of
something I believe called the A20 line.
I probably have this backwards, or I got a 50-50 shot at it,
but if you've got the A20 line asserted,
then your memory pointers wrap at the one megabyte mark.
And if not, they don't.
So you continue going up in memory.
So you can rewrite memory above by combining your segment
and offset registers to a number bigger than one megabyte,
and you get an extra 64K,
and you put your code in there,
and then you just put stubs to jump to it from low memory,
and so you can get another 64K out of the machine,
that way. And we did that for a couple of the products.
And I had no idea what HighMM was
because I was an Amiga programmer and I'd never written any
X-86 code before I got there.
So that was like a cool optimization
that you got to be a part of. Yeah.
So what about Windows? There was
a parallel development of Windows 95, right,
at that time. Did you get a chance to interact
with those folks? I actually worked on Windows 95
for about three or four months. I was
on the Comm OLA team doing the presentation
cache, which is when you insert a
or an Excel spreadsheet
or chart into a Word document,
You don't want Excel to have to be loaded to render it every time.
So there's a presentation cache of enhanced metafiles.
And I was working on that.
So that shipped in Windows 95, but I moved to the Shell team about six months after getting to Microsoft.
And so I worked on NT from there forward.
Okay.
And what's 95?
What's NT?
Windows 95 is an evolution of the original 16-bit Windows 3-1, which was the very first popular version of Windows.
And it adds 32-bit support and then VXD drivers and a bunch of new technology and an entirely new user interface.
And it's something that at the time was revolutionary.
People lined up at night to wait in line to buy the thing.
Can you just take us back to that time and describe why 95 was such a big leap from 3-1?
So Apple already had a graphical interface.
Windows 3-1 had a graphical interface.
Why was Windows 95 such a gigantic leap?
I don't want to make it as basic as the start menu, but I think it's a big part of it.
I know when I first saw it, I couldn't quantify.
why what about it was different and awesome,
but I realized that I wanted to be a part of it,
and that's why I started writing a shell extension,
which became zip folders at some point.
But I was just fascinated by the new shell,
and that's why I went up working on the team
that brought that shell over to the NT
and what's Windows today.
Would you say that's the greatest operating system ever?
What's the most impactful operating system ever?
Windows 95 would be number two for me.
I think OS 360 is going to be number one.
Okay, interesting.
Did you take a machine and,
write a cool ball program for it in 1962,
jump in your time machine,
go to Poughkeepsie,
and boot up an IBM Z17 mainframe
and run it today.
And they've been doing it
for however many years that is.
And it's all on the business side,
so we as consumers don't have much access to it,
but I think it was probably as influential
in the commercial side
as Windows 95 was in the home side.
And then probably Linux would be number three for me.
I put Linux as bigger than Unix,
which doesn't work because you can't have one
without the other.
But the impact of Unix,
BSD and so forth, is largely in the academic space.
It's by programmers for programmers.
So, yeah, Linux created, I mean,
it was the embodiment of the open source spirit
at its largest scale.
All right, so it almost created a community.
And it created a spirit of programming
that propagates to this day.
That's true.
That's true.
Like scale matters.
Yeah, and it's penetration on the server side of things now,
I don't know if it's equivalent to what system 360 achieved,
but it's almost ubiquitous.
Yeah, the world,
this is the quiet secret of the universe
is it runs on Linux.
Okay, so tell me about the days,
your work days, what were they like back then?
Back in Amos, DOS, Windows 95 days,
take me through a productive day.
Well, your day starts coming in
and you've got to download the address book,
which is Microsoft has between 10 and 15,
15,000 employees at this point. And we're all on MS mail. We're just getting off of the PDP
11 called Miss Piggy, which ran WisMail, and we're running MSMail. But MSMail has a fixed
address book that every user must download every morning. And when there's 10,000 people
downloading 10,000 people, it gets pretty messy. And I think we're on 10 megabit networking at
the time. So your first hour is downloading the address book, which was always frustrating.
But you'd use that time to look at the crashes that would have happened overnight from a
process we called stress, which is NNT. All the machines,
machines that are unused run tests all night long and they try to crash themselves and if they
manage to crash themselves it will drop into a debugger with a serial cable to another machine and
you can connect to that other machine and remotely debug the crashed machine so you come in and they
will have triage bugs you know there was a crash in the start menu so we'll assign that to Dave
and so you come in and that's your first thing is to connect because you got to get that machine
back to the guy that owns it and unlock the machine so that's your first hour of your day is
basically triage for bugs that have come up
from stress overnight. And then at that
point, it's probably back to coding, which
unfortunately 80% of the time
is fixing bugs, especially in my career.
It was porting code and fixing bugs. I wasn't
writing a lot of new code. There were exceptions. I wrote
a lot of new code on the side
to get it out of my system
from a day-to-day grind
of always fixing bugs in other people's code,
which is amazing learning
experience. So you did a lot of the
at Microsoft, you did a lot of the
porting of what
Is it Windows 95 code to NT?
Yeah, we took the entire Windows 95 user interface, and we ported it to NT,
which meant making it unicode for one thing.
So everything that was 8 bits is now 16 bits, so pointers, it's quite a mess when you
switch the code over, as you can imagine.
Can you give us insights in what is involved in porting?
It's like breaking into somebody's house and going through all their stuff
and seeing the stuff in their drawers that they didn't want you to see.
You find all the good stuff, the pretty pictures hanging on the wall,
and you find some disturbing stuff in the nightstand.
I saw a code that was like 200 some characters wide
with, you know, profanity and swears in it.
It eventually got all cleaned up over the years
by the time I left, but it was not always
the most professional code in the world.
Right, because every single piece of code
you have to go through.
Line by line, so you see it all.
Yeah, yeah.
I mean, that's the story of programmers.
You think you write a piece of code
and you think you'll never,
they'll never be seen by anybody
and sometimes, oftentimes that code
is going to be seen by a very large number of people
that come after you, including
you five years later.
You yourself, looking
at your own code. Okay.
So tell me about Windows NT.
That was a giant leave too.
It was basically a clean sheet design.
So they went and they got Dave Cutler
from digital equipment who had done
operating systems for them,
VMS and RSX11.
He had done. And so he came over
after, I believe it was Prism and Micah were some projects at Deck West that got canceled.
And so you had a whole team of guys where their project just canceled.
And basically they took a whole bunch of them and came to Microsoft.
And I don't know that specifically with a deal, but they all showed up.
So you get Dave Cutler and Mark Likowski and all these really smart guys from Deck.
And they did basically a clean sheet, but they also had OS2 as a starting point.
But OS2 is, of course, written in assembly language.
And NT is going to be written in C.
So to what extent they were able to leverage any of that?
I don't actually know.
But at least they had a system to start with.
You said that Dave Coulter is the man, the mind behind Windows.
Can you explain?
So Dave Culler is the architect of the colonel.
So he is Linus in the Linux world.
It's Dave C in the Windows world.
And it's not that there weren't other people who contributed, of course, huge pieces to it.
But I think he's the driving force behind it and always largely has been.
and he's still, I think he's 85 now.
He still codes every day.
He's a Microsoft fellow.
As far as I know, still goes into work.
Can you speak to the genius of that guy?
Like, what's interesting about his mind, having worked with him, having interacted with Dave Collier?
Well, the dude's wicked smart, but he's also like a farmer.
He's like the guy that will follow you around and make sure that stuff gets done and gets done right
to make sure that you're not checking any crap into his operating system, and he won't tolerate it.
And he's a real taskmaster in that regard.
But I think it really paid off
because it was a very big paradigm shift
for Microsoft developers
to be subjected to the
Dave Cutler digital equipment style of leadership.
What did you learn from that
about successful software teams
where there's a large number of people collaborating?
Because Microsoft had a lot of brilliant engineers back then.
And like you said, Dave Culler,
they had to create,
create completely new systems, many of which we're still used today. What have you learned about
great software engineering teams from that time? Tools are everything, I think, for one. People are
everything. We'll just give that as granted, but the tool set is a huge fact. If we would have had Git,
it would have been immensely easier. We were using diff and, you know, manual deltas to do the sporting
and stuff. So being able to fork a branch of source code would be a luxury that is new to mean.
At the time, it would have been really handy.
What were some memorable conversations from that time
when you walked over next door?
Well, what I was not present for was somebody was complaining,
a new hire came into the team
and was working on what I believe was called Cairo.
And Cairo was going to be the next future operating system
was going to be beautiful and have a whole new user interface,
newer than when it's 95.
And it never materialized.
But while they were working on it,
one of the guys was working on Cairo was kind of flaming
on the open NT dev alias,
which is thousands of people,
how shitty the anti-boot experience was.
And the response that came back was an epic flame
that I wish I would have saved,
that I won't name the guy who wrote it.
He knows who he is,
but it was a work of art of angry flame mail.
Kind of like the ones you see Linus,
every now and then about colonel stuff.
So it's a very similar sentiment.
Were there, like, kind of intellectual debates?
Like there's some heated stuff between engineers?
Yeah, it got contentious.
So you've got intellects, computers,
and eventually the technical merits
for some people are secondary
and it's about besting the other person in that argument.
And it's no longer productive
at that point half the time,
but there was a fair bit of that.
Yeah, I've seen those kind of debates
in programming language design communities
like Guido van Rasm,
the leaders of those communities,
you can wear them down.
Because people get,
you almost like forget the mission you're on
and start being very nitpicky.
about the details.
I mean,
engineering minds get together
and you just go to war
over the stupidest,
like syntax subtlety.
Right.
I shouldn't say stupid,
but it's a small syntax subtlety.
That's for programming language.
I'm sure there's internal battles
about specific kernel components.
Yeah, I mean,
there was one that I lost
that still bugs me to this day, I think.
Yeah.
Because I still think I was right.
Well, when we were doing the shell,
we were porting everything from ANSI to Unicode.
So every character that was 8 bits now becomes 16 bits.
Now the problem is I'm on a MIPS box because I'm porting it to risk.
And you can't have unaligned addresses.
But if you take two ID lists, which are basically path components,
you take the one for C, colon, backslash,
take the one for Windows, take the one for System 32,
and you add them together.
But if you've got an odd number of characters,
now you're at an odd address in this thing,
and it takes me an immense amount of work to turn on exception handlers
to do unaligned byte access to pull the string out
and copy it manually.
It's just a, it's literally like 100 to 1,000 times the amount of work
to read a string out of this ID list on a MIPS machine
because it's unaligned.
So I'm having the argument that even though it's late in the Windows 95,
they've already shipped one beta,
that we should now just guarantee that ID lists are always an even number of bytes
or do some hack to just make sure this never happens,
so the code that references among other shared work can just blaze through it.
And it became a shouting match and sort of a personal match,
and I lost that one.
And I still think that I know,
today that that code running on Windows is thousands of times slower than it has to be in it.
Nobody cares because it's plenty fast, but it could be a lot faster.
Yeah.
So, I mean, you mentioned MIPS and Risk.
How deeply did you have to understand the lowest level?
So the lowest level of the software and even the hardware with the stuff you were building.
What are the layers of the abstractions you had to understand to be successful with all the stuff you're doing with NT?
And before that, with them as thoughts.
Well, about half your day is going to be spent debugging.
And most of that time is going to be spent in call stacks that are in pure assembly language
because there's no source level debugging.
So it's not like we're in Visual Studio and you hit a breakpoint and it pops up
and there's the source code.
You can go look at the source code, but you're looking at the raw assembly dump from the machine
at all times.
So even if you're programming in C, the debugging is in assembly.
Yeah, 100%.
Oh, man.
So it's a little cumbersome.
Better yet, we're doing four instruction sets because we're doing,
Intel, MIPs, Alpha, and PowerPC.
So depending on which machine it crashes on,
you've got an entirely different instruction set
that registers.
So you get reasonably adapted debugging all four,
but I had more experience in MIP,
so MIP stuff would come my way.
That's a real endurance event.
I mean, can you speak to that,
the torture that's debugging,
especially that kind of debugging,
without the tooling associated with it?
I mean, that's, you know, programming kids these days,
programming isn't all about creating beautiful things, right?
It's also about fixing things.
Yeah, I would say that 20% of my professional life
has been creating and 80% has been debugging and fixing.
Yeah.
And, I mean, I got a bit of reputation
of somebody could fix stuff,
and so stuff like that would flow to me,
and so I would spend more time doing that.
I wasn't renowned as a creative UI genius
where I'm flowering all these new ideas,
so I got to fix ugly stuff,
but you get really good at that.
I don't mind it until it's one of those things
where you've been chasing it for so long
that you don't know what to do next
and you can't understand why it doesn't work
or how it ever worked
or whatever situation you happen to be in.
And, you know, after a day of it,
it can get pretty trying.
Yeah, debugging can be real torture.
It can be really, really difficult.
There's a psychological component, I think,
of perseverance.
I think the ones that, you know, take you a day,
they resolve one of two ways.
Either it's like, oh, extra semicolon,
and then you finally see it.
or it's some horrible manifestation of cross-threaded apartment nonsense that was really hard.
But it can go both ways.
I had a bug, it wasn't my bug actually, but it was a manifestation of a bug in task manager,
where every now and then it would say greater than 100% total CPU usage.
And this looks pretty silly for a task manager.
So I had tried to resolve it for a long time, and I'd talked to the colonel guys about my issue,
and they were unsympathetic, let's say, because the colonel guys are a special breed,
and they weren't interested in my user land problems.
It's probably some issue in my code, right?
And they're probably right, but it wasn't in this case,
and I was sure of it.
And so I kept adding asserts all through the code
to make sure that the preparatory steps
of adding the stuff together were never more than 100,
and that the final sum was never more than 100.
And finally, it never asserted.
But occasionally, we would get this bug
where people would still see it.
And so I finally put my phone number in the assert,
and I was like,
if you see this message called APL at 425, 836, my phone number.
And finally, we did get a catch in the actual stress debugger that I was talking about earlier,
where it happened to somebody with the debugger connected.
We were able to go through, and it was actually a kernel accounting issue,
and it wasn't a task manager issue, so they just fixed it in the kernel once I was able to prove
that it was, in fact, the kernel issue.
And you think we would then remove my phone number, but we just commented it out.
So it's shipped, and it's in all the damn source code leaks for NC that are out there.
So that's how I find task manager code.
I search for my phone number on Google,
and it will reverse find the nt source code.
Can you speak to the assert thing?
By the way, I saw, I think you tweeted or he said somewhere
that if you want to take your search really seriously,
you add your home phone number in there, it's true.
It's a little facetious because it's probably not the smartest thing,
but you will find out.
But, I mean, assert by itself is already a serious thing
because it stops at all execution.
I mean, this is one of the reasons they really, really love asserts
because they stop ever,
and force you to take care of the problem.
Yeah, I'm a little religious about my asserts, too.
I don't assert things that I hope aren't true.
I assert things that I know cannot be true.
And I think that's really the intent of an assertion,
so I'm overstating the obvious.
But when it does occur, it's a bug, plain and simple.
It's not a warning.
It's kind of fascinating how often it can really help you figure out the problem
because if you put asserts everywhere,
you can get very quickly to the source of the problem.
Yeah, I tend to, it's not something I want to suggest you go back and add later.
It's something you should do organically as you build your code.
So for each function, if you've got assumptions, like I know that this point there is never
null, well, assert that.
If you know this count is always less than twice the bite width, assert that.
And don't be afraid, because if it asserts, it's doing you a favor.
I think some people are afraid, you know, it's like when you turn out of an intersection
and you think maybe there's somebody coming and you don't look left.
Or maybe I want to do that.
But it's like that.
People don't assert because they're afraid.
afraid they're going to fire. Well, no, you want to know. You mentioned Task Manager. Obviously,
we have to talk about this, the legendary program that you created, the Windows Task Manager.
Tell me every detail of how you built it. What is Windows Task Manager?
So, Windows Task Manager is a way to go in and find out which apps on your system are
using the computer, using the hardware, using the CPU, using the memory, and which ones might be
using too much or locked up or going crazy, and it gives you the ability to terminate and kill
those ones. So it's an inspection and a fixing tool. Yeah, it lists all the processes. I mean,
it's a legendary piece of software. It's crazy. You just take it for granted. It's like the
start menu, right? Yeah. It's like genius. Well, I had the great fortune to work on a lot of things
that people are familiar with. And task manager was one of those side projects that I started as something
that I wanted for myself and eventually came in house. So I started writing it at home, and I got
kind of the basics up and running. And I was using, I think it's H-key current performance or H-key performance in
the registry to get the stats because I didn't have access to the internal APIs because I was
working from home, and I don't call those if I'm working from home. And when I brought it in-house,
then I was able to call things like anti-quiry system information or anti-quiry process
information and get the real answers very quickly, which enabled it to become a very fast,
a responsive app. So people have come to rely on it because I wrote it to be as reliable as
possible. I wasn't worried about the features. There was a basic set of functionality that I wanted
in there, and I got everything I wanted, but I wanted it to be really robust.
And so that, and small.
And the original was like 87K.
Okay, can you speak to what it takes to build a piece of software like that that doesn't freeze?
You don't assume much, right?
If you're going to call the shell to run an app, well, that could be a network path that's on a TCPAP share that takes 90 seconds to time out.
So anytime you do any kind of API call like that that could take time, you're going to wind up doing it on a separate thread.
And so the app becomes a little bit more complex because everything is multi-threaded.
Okay, so what programming language were you working in?
C. So this was for Windows NT? Yes. So this shipped initially in NT4. Okay. So what is some
interesting details about this program? Because you have to get as simple as possible, but also as
robust as possible. What are some interesting optimizations, for example, you have to implement?
There's a couple of things. They're a little hardcore now. I'm surprised I did. Like, I didn't want
to link to the C runtimes at all. So I made sure never to call a runtime call. And I didn't link to
them. And that saved me whatever the C runtime is, 96K.
or something.
So, you know, it almost double the size of the app
if you just touched any C-Call.
So I was careful not to do that,
but then I was actually writing in C+++,
which is C with objects more than anything.
But 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 runtime to do it for you.
So you're working with a compiler that doesn't have its runtime
and I don't want to rattle on the technical issues,
but it's a lot of extra work to get it to work.
But when you do, it's incredibly small and tight.
That's about the size.
of the program.
What are some interesting aspects
of tracking down
every process
and how much CPU usage
is in that process?
One of the core things that I saw
is, I don't want to say
I invented hamming code,
but I kind of invented
hamming code without knowing
having code existed.
So every column and every row
and task manager has a bit
on whether it's become dirty or not,
and then I can look
basically the same way hamming code
looks in your X and Y columns
to find out which rows have changed,
go through and find out
which ones actually need to be repainted.
so task manager is super efficient and it works in concert with the list view control which provides
that functionality to go through and repaint as little as an individual cell that changes from frame to
frame so it can paint very fast it can resize very smoothly and resizing was probably my biggest
personal goal with that app so you can size it to any size and it still works and even if you have
32 CPUs which wasn't possible in the day it will draw i think only eight
graphs and then it wraps, but
it still works today, so
I'm kind of proud of that.
It's just incredible.
You've gotten the chance to sort of observe
the evolution of task manager.
In some ways, it really
hasn't changed much. Maybe there's
some prettier aspects to it that
fit into the whatever version of Windows
it's in, but it's really basically the same thing.
The functionality is very same.
The reporting is more because they've added
GPU and thermals and things like that,
which is really nice to have. We didn't have that.
in the day, so.
I mean, what can you say?
Do you know about, like, was there any
refactoring done, or is it basically
the same code? As far as I know,
the original code's still mostly all there.
So there are layers of drawing code
and dark mode code and whatever else,
XML schema code that goes on top
of that that makes it 4 megabytes instead of 87K,
but that's the world would live in,
so. Yeah, it's one of those pieces
software you create and just
once it's there, it's really like
the start menu. And then I'm sure
if you remove it, people
will just lose their mind.
Yeah, it might be locked in for a while on that one.
It might be good.
Yeah, I thought that would be true for Clippy, but
Clippy will make it back one day.
All right, what is some other pieces of software you created at the time
that are legendary?
So you were part of Space Cadet Pinball, at least porting.
Yeah, so they came into my office and said,
what are you doing?
And I said, well, how do you want to spend your next three months?
I said, I have no idea.
And said, do you want to port pinball?
And I had seen, it's basically a pinball as a game standalone for the Win95 platform.
And it had a couple of different tables.
And it was a cool game.
So I was kind of excited.
And what they wanted was some visual splash for NT to show that NT can do for
then high speed graphics and, or at least responsive graphics.
And so I took a shot.
And unfortunately, a lot of the code was in assembly.
And I was on the MIPs.
So I had to rewrite the code in C so I could then port it to all the different platforms.
And at the heart of the game is a huge statement.
engine. It's like a giant switch statement with, if I remember, like 50 entries in it.
And it's got an Easter egg built in and decoding the state. It's like running a neural
network through this thing as you hit it with different states. And I just put it aside and
treated it as a black box. And so my code runs on top of that and does the drawing and the
sound and everything else. But the original game is still running. And somebody recently asked me
why is it slightly different? The physics are slightly different from
Windows 95 version, but it should be the same code
because I'm trying very hard to preserve that.
But what it is is I had a bug where I will draw
as many frames per second as I can,
which on a modern computer could be 5,000 frames a second
for pinball because it's a pretty basic game.
And so all your physics are interpolated 5,000 times per second
instead of 30 times a second
or whatever you would have got in the old ones.
You're getting arguably better, at least different physics.
But they fixed that sense.
Why is that game so awesome?
I think it's a great design.
I mean, I take no credit for that.
That's all totally the guy that's cinematronics.
But the original game is a great design.
It's very similar to Black Knight 2000,
which I own as an actual physical pinball machine.
And the layout is actually very similar.
I don't know if it was inspired by it or not.
So it's a good game.
Yeah.
Sometimes I think about like Tetris,
about certain games are pretty primitive graphics
that captivate the excitement of a large number of people.
And maybe it's the excitement of a large number of people.
people that contributes to the awesomeness of the game.
So when many people together get excited and talk about it,
that sort of gets implanted into your head.
But that's one of the great games.
I mean, even like Solitaire and Mind Sweeper.
I mean, there's just a generation of people
that've gone to war in Mind Sweeper, right?
Well, those things were included in the OS, not as games,
but as educational tools to get you to use a mouse.
Oh, interesting.
So Solitaire is there to show you how to do drag and drop.
Yeah.
And Mind Sweeper is probably right click.
I think you put a flag,
or something.
I know a MindSweeper guy,
but so each one of them teaches you something.
That's funny.
Yeah, wow, I didn't know that.
That's interesting, and that's true.
But I don't know how many hours I've spent on these games.
And like millions of people have spent millions of hours in these games.
I used to volunteer teaching computer science at my kids' school, you know, for the third
graders and stuff.
So it's more like logging in than computer science.
But the kids, of course, all their dads work at Microsoft.
So nobody's impressed by anything you do, but someone of the kids found out that I worked
on pinball.
And then they were like, whoa, you worked on pinball.
Because they all knew that in those days.
Now the kids are probably aged out.
They don't know it anymore.
But for a brief period.
You're behind the Windows activation.
You say it like it's a bad thing.
Everything's a matter of perspective.
So tell the story of that.
What's Windows activation?
How did you get involved?
So they came to be late in the XP ship process.
I don't know if the beta had gone out.
I don't think the beta had gone out yet.
But they had intended.
it to take the office activation code
and then adapt it to Windows and add
activation to Windows.
But whoever was responsible for doing it had
slipped at enough times that it wasn't going to happen
and so I had kind of reputation for being able to fix
things quickly so they came to me and said,
can you get this done in time for XP?
I don't know, but I'll try.
So with the help of the guys that were doing the DRM
stuff on the DRM side and the research guys
doing the math for the product keys and everything else,
we cranked it out in time
for XP. And I don't know
what actual impact
is for revenue, but I imagine it's substantial when you start enforcing license keys.
I wonder what it is.
I don't know.
Because it's also annoying.
It is, especially if you have to phone activate.
And that was just the case that we had to carry with us as an albatross around our neck,
where you've got to pass data up to the clearinghouse, the back-end systems that are going
to approve your key, you've got to tell all your hardware parameters, like how much memory
and hard drive space and the various things the hardware key is bound to, as well as the product
key and you've got encoded in letters and numbers that somebody's willing to read in over a
phone. 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? I mean, that's just got to be
mind-numbing job to listen to product keys for eight hours a day. Yeah, one of the challenges
with Windows, and it's been a frustration point for me, but I understand from a design perspective
it's very difficult, is so many different kinds of people use Windows.
But it's been frustrating how over time Windows is more and more leaned into the direction
of like not the power user, I should say, which is why Linux has always been really wonderful.
But from an activation perspective or from any kind of configuration, it's been a source of a lot of
frustration.
Yeah, one of my more popular episodes of late has been why you can't move the Windows
taskbar.
I had no idea, but the outrage is palpable among people that you put it on the left
or top, and you can't anymore, and it is an affront to their existence.
And I understand it to a certain extent.
It's one of the main reasons I really just dislike.
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 task bar, just basic customization.
Can we just configure stuff?
because there's going to be a small contingent of power users
that are just going to enjoy the hell out of this operating system.
If you just give them that option, it costs you nothing,
just give them that freedom.
Well, it does cost, right?
Because the freedom to put the start menu on the left or the top or the right
really increases the complexity of the code
that renders the start menu and lays out the tabs and does all the things.
And now it's a much larger surface for bugs,
and it's a much larger piece of code to maintain.
So you probably need more developers or another developer
or some portion of a developer's time.
So the question becomes, at what point
is it still worth it to satisfy the niche needs
of a small set of users?
And those decisions weren't mine to make,
but I can see it from both sides.
I think, just like the people who make movies
and insert very nuanced details
that only a small number of people will realize they're there,
that's going to really pay off.
There's a kind of reputation that builds over time
that has a very powerful ripple effect.
That I think it has so many benefits,
including for hiring great software engineers.
It's like you create this aura of a place
that puts love into every detail
that really takes care of the power users,
that takes care of the developers.
I think Microsoft is more and more moved
in that direction with GitHub and acquiring GitHub
and just taking care of the developers.
But on the Windows interface side,
come on, some customization.
With VS code, you can customize everything.
Why can't we customize this,
thought menu, all right. Anyway, and the task bar. And really, every aspect of the Windows interface,
I don't, I don't, I, maybe you're right, maybe increases the complexity of the code. I suspect
that's just not the case. I bet it was. I bet it was a scheduling decision when they rewrote the
start menu. I think they rewrote it because it's different than the old task bar. And somebody was
tasked with, you've got to deliver this set of functionality. And if I cut out, putting it on a left and the top and
the right and two rows of tabs and all the other cool features, I can deliver it four months
sooner. And I'm not saying that's the right decision, but I'm guessing that might be the kind of thing
that motivates it. And they're on such a different release schedule now. It used to be,
you won't see much craftsmanship unless somebody owns a component for a long time and it
settles to a point at the end you can work on and polish it, right? But if it's always churning
and the UI is changing every release, it's never going to get that level of polish. Although I think
the UI is pretty nice, but I, yeah, it is, it is.
nice, but I think it's, I just don't think it's a scheduling thing. I think it's a
craft machine thing. Just take you with a task manager. If there's a guy or a girl in there
who take ownership of it, who have, like, passionate, like, for them, it's a thing that they
take pride in over a period of time. They can, like, buy themselves in a short amount of time,
create something truly wonderful. Right. And, like, I, I think if you have large software
engineering teams with managers and scheduling of meetings and all this kind of stuff.
Yeah, okay.
Then your argument applies.
But if you allow the flourishing of individuals that create cool shit and like their own sort
of the side project, which Google is very good at.
They've tried that, right?
Google, yeah.
Yeah, like have fun with it.
Like do some crazy stuff.
And then we'll integrate it.
We'll try to integrate into the whole ecosystem.
I don't know.
Yeah.
Because like to me.
There's, it's such a great joy from an individual developer to create something like customization of the start mining of the task bar because you know that millions of people are going to use it, the task bar. And then you know that thousands, tens of thousands of developers might be using to customize even little subtle aspects of the task bar. 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 task bar?
Okay, but how do you respond to the Steve Jobs aspect of giving you customization implies
that we couldn't figure out the right answer for you?
Or maybe there is no right answer, and all four answers are equally, right?
I have no idea.
Right.
I think I've always, I'm glad Apple exists.
It's a beautiful thing.
That ideal of design is wonderful, but I always thought that Windows creates the contrast.
Like the point of Windows is to be the operating system that works on all kinds of devices.
that it's supposed to be much more open
and they've moved towards that direction more and more
with Windows subsystems for Linux.
It's just this whole developer-friendly ecosystem.
The interface should be in the spirit of that, I think.
Right.
But I do think that there could also be security vulnerabilities
that created with that.
It's not just the complexity of the code
because Windows is just under attack.
Yeah.
It's very difficult to keep it secure.
Anyway, taking that tangent,
you also developed the zip file support
for Windows, creating visual zip, like I mentioned, zip folders that eventually evolved
into zip folders. Tell the story of that. So that was a piece of software that I wrote at home
again. And what happened was I was out with my wife, and I think it was a Sunday afternoon,
we're driving around. This is 1993, and we're living in our apartment. And we're just seeing what
the housing market is like out there. And there's a guy, he's got this beautiful three-bedroom
house and a Corvette convertible, 93-red, Torch Red, parked in the driveway, and houses for sale,
and it's like $300,000, I think. And there's no chance I'm coming up with $300.
100K at that point or even the down payment on that.
So I took the flyer and I cut the picture of the house out and I taped it to my monitor.
And that was my incentive to just write something at night because when I came home, I was
doing two things.
I was one expressing a creativity that I couldn't get out at work when I was just fixing bugs.
And I was trying to make some extra money.
And so I wrote a shell extension before I actually went to the shell team, I started it.
And that's what led to my interest in going to the shell team based on an MSD
N sample or MSJ that the time, MSJ sample that I saw on how to like bring up a folder.
Well, once I had the very basic bring up a folder template, adding zip file support to it
was just incremental all the way.
And I released it as a shareware product.
I think it was 1995 or 2995.
And I sold whatever, a couple hundreds or thousands of copies.
And one day I'm getting ready for work and I get a call.
And it's a lady.
And she says, are you Dave Plummer?
And I said, yeah.
And she said, are you the guy that wrote Vigil Zip?
I said, yeah.
And she said, well, this is Betsy from Microsoft.
and we'd like you to come by and come in and talk about an acquisition of it.
I said, okay, what building you in?
She's like, what do you mean?
I said, well, I'll come by.
And I said, well, no, you've got to talk to travel and you've got to talk to legal,
and this all has to be set up.
And I'm like, I don't get it.
We both work at the same place.
Why can't I just stop by?
I don't know if I said that literally.
Yeah.
But there's a few minutes of back and forth where we both realized that she didn't know I work there.
Yeah.
They just cold called the author and then found out that it was me.
Yeah.
And so they made me an offer on it.
And it's the kind of thing where if I don't accept the offer,
now my choices are I can keep selling my own version and quit Microsoft,
or I can stop selling my own version and work for Microsoft.
Neither of those is great.
I mean, like to keep my job, of course,
but I'd like to still have this income stream.
And the other option was accept their offer, which is what I did.
So then I bought a used 93 Red Corvette.
And you got to continue building it internally.
I did.
So we took a lot of features out, right, to simplify it because it had encryption,
and it had a number of features that were coming.
common in Zip programs of the day, but probably weren't appropriate for Windows.
And at the time, encryption was like a munition, so you couldn't just add encryption will
annilly to various parts of the operating system.
So we took out some things like that, multi-volume support, I think, was taken out just to
simplify it.
Can you speak to Zip in general, just the history of Zip and, you know, compression, that
whole thing?
It was really born out of the BBS era, when people were dialing in on modems to download
trialware and shareware
and other things from BBSs
online, and
to compress them, executables
compressed about half their size, other stuff
compresses much more, but
a guy named Phil Cass came up with a command line
program for MSDOS called PKZIP,
which was able to do compression of
programs, and he has a rather
tragic arc, but
it became ubiquitous in the entire
PC industry, and pretty much
everybody was using it. So when
Windows came out, there was no way to open up
a zip file, but everybody had been creating them for a decade, and so that really drove the
desire to have the zip support right into Windows. Yeah, and that's another piece of software
is just kind of with us to this day. And it could be vastly improved, but, you know, it was
written in a single core day, so it doesn't do anything multi-threaded, and you've got a 96 core
79.95, well, it uses one of them to unzip your file. What other awesome things were you
a part of at Microsoft? What other pieces of software? I worked on the initial prototypes of Windows
Media Center. So we did that in 96, I believe. And we didn't have, at the time, any sources.
So we had like a CD of MPEG video files of Raging Rudolph and I think the original South Park
video, the Christmas one, which is all wildly inappropriate in the workplace today, but
it's all the content we had until we got actually, we had them put a satellite dish on the roof,
a DSS, whatever the 18-inch dishes, because we couldn't get cable to the building. And so we built up
this thing that would eventually look a lot, like media.
center and it was distance viewing UI for Windows so you could sit with a remote control on a
desktop and have you know the current start menu is not great at 20 feet away so tell me the story
the infamous blue screen of death what it is is when Windows has no other option when the kernel gets
into a state where something illegal has happened so let's say a device driver is trying to write to a
piece of memory doesn't own or it's trying to free a memory piece of memory twice something that
just cannot happen and the kernel has no other option it will shut the machine down to save
your work, and, well, not save it, prevent further damage.
And it puts up a blue screen, and it prints out the stack information, depending
how your settings are.
Sometimes it's just a sad face in the current Windows.
Yeah, I wonder what the first version of Windows one of the blue screen came to be.
So Windows 3 had a blue screen, but it's completely unrelated to the blue screen in Windows
NT.
And I talked to the guy that wrote the blue screen in Windows NT.
His name's John Vert.
and the reason he picked white on blue,
I had thought, I'd always heard it was because in the labs,
you could walk through a lab where we have 50 PCs all running stress.
Oh, that one's got a blue screen.
It's crashed.
It wasn't that simple.
It was just the MIPP's firmware that he was building it on was blue on white.
And visual slick edit that he was using his editor was also the same color scheme.
And so you could code, boot, crash, and reboot all in the same color scheme.
Why do you think so many problems with computers can be solved,
but turning it off and turning it on back again.
I think there's two major things that happen with computers
as you run them over time.
One is memory gets used and not freed.
And so it accumulates on the heap or in the swap file or wherever
and things get sluggish.
And the other is code gets into a state
that the developers didn't anticipate or didn't test very well.
And maybe that's a rare state,
but now that notepad or Word or Excel is in that state,
your system is goofy.
So if you just reboot the thing or shut it down and restart it,
You're getting a fresh state, and there's no memory leaks.
So it covers a lot of sins, basically.
And the intricate ways that several pieces of software in a goofy state interact with each other creates sort of a meta-goofy state that just kind of had, just the entire system starts acting a little weird.
Yeah.
And then somehow fixes it.
What's some of the best and the worst code you've seen during that time, Microsoft?
What's some beautiful code and what's some ugly code that pops to memory?
In terms of beautiful code, there's two that standout for me.
One is the kernel in general when you get down into the Windows kernel
in the actual NT APIs and stuff.
It's very well written.
And it's written to a standard that you don't see on the user side,
or at least it's uncommon on the user side.
On the user side, probably the coolest code I remember seeing was a guy named Bob Day
wrote a named pipe implementation to eliminate the use of shared memory.
So Windows 95 had a big shared segment amongst all the shell processes
where it would store stuff was common to all the shells.
We didn't want to do that.
Shared memory is a bad idea on NT and industrial level.
So he came up with a way to do it with named Pipes,
and I remember doing the code review on it,
and it was very impressive to walk through the code.
It was one of those things that was like,
oh, I don't think I could have done that if I was trying.
Who's the greatest programmer you've ever encountered?
You know what?
I don't think there is anyone.
I've met a number of great programmers,
I'll tell you one story that impressed me a lot was when I was brand new at the company.
I've been there like six weeks, and I'm working on this Ole presentation cache that I mentioned earlier.
And I'm on Windows 95, and I've got Excel inserted into Word, and I'm in the kernel debugger,
and something's going wrong in the scheduler.
And I've been there, you know, I've barely written any X-86 code,
and I'm looking at the Windows scheduler trying to figure out why my thing is deadlocked.
And eventually I get stuck, so I'm kind of out of my element.
And I send an email to the Windows 95 kernel team and say, could you send somebody by?
And so about 10 minutes later, this developer strolls in,
and they're just holding a null modem cable,
which is to connect my two machines together
so they can debug one with the other
in case I didn't have it, but it was already set up.
And so they sit down, and they're using wind debug,
which is just a horrible debugger.
It's just, it's accursed.
But they're very, very competent with it.
And they are just blasting through the call stacks,
and they're checking all these objects in the kernel
and trying to find out who's waiting on what
and why things are deadlocked and what things are signaled and what's not.
And it's just this quick silver ballet of calling,
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. And
about five minutes in, I just hear, oh, I see. And then they disconnected and got up and left. And that
was Laura Butler, who became a distinguished engineer at Microsoft. I think she may still be, I'm not sure
if she's retired or not, but, so she kind of set my template for, you know, what Microsoft
developers were like when they were debugging, and what kernel developers were like.
and even with female developers were like
because I had such a small sabble set.
But it was a very high standard.
There's a few things I love in life
more than people who are ultra-competent
at anything really, but the lower level,
the better in the engineering space.
They're able to, for example,
like run or maintain the infrastructure,
the computer infrastructure,
so not the individual computer,
but the computer is communicating together
and working together.
Those people are just magicians.
Right.
It's so inspiring to make it.
It's like watching a great,
great carpenter or I love anything done really really well yeah it's beautiful to see it's
beautiful to see that humans are able to accomplish that even in civil engineering space when I look
at like bridges it's like the number of people they had to come together to build that and now
millions of people use it every single day but software sometimes you don't get to see visually
just the number of people impacted by a thing to imagine how many people are impacted by
Linux and all the different open sources, open source systems that make up Linux.
It's incredible.
And task managers, an example of a piece of software, just how many people use that over
the years and how many times?
It's crazy.
It's probably billions, billions of you.
Yeah, two billion a month or something.
Two billion.
Something like that.
I've seen the metrics and it's up.
Crazy to you?
It is.
What I love about it, though, and I'm sure you've had this experience where sometimes
you design a piece of software and,
complex, and you get it working in your head, and you get the plumbing working, and you know how
it's going to run and flow, and then eventually you write the code, and the code does that thing
that you had pictured in your head. And now there are billions of copies of that thing that I had
in my head running on millions of people or billions of people's machines, and that in itself
is really cool to me. It's not a vanity thing so much as a, I'm impressed by it, I guess.
How's your programming evolved over the years? I take a lot more care and complexity these
days. So it used to be you would write code and just keep writing code and writing code and then
at some point I go back and clean it up. Well, I'd write the other way now. 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 makings where things get so messed up that they're just
not fixable. And so sometimes the work you put in up front pays off, you know.
What programming languages have you used over the years? What's been your main go-toes?
For me, it's been C++ and assembly language.
And still to this day, C++ is really what you lean on?
Yeah, right now I'm 100% Lua and Python,
but that's just side project I'm working on.
Can you speak to the Lua and the Python detour that you took
and what do you love about C++?
What I'm doing is I wanted to build an AI to play the game Tempest.
That's the old Atari Game Tempest.
And this is a game that I actually hold the world record on.
And you take me to this Atari Game Tempest.
Okay, Atari.
Tempest. What kind of game is this?
So it's a 3D vector game
from 1980. And it's a very complex
game. You've got full 360 degrees of motion. You have eight shots
on the screen. There's like 11 enemies. There's spikes. So it's a very
complex game. It's not like trying to, you know, do Pong or something.
Okay. And what I wound up doing was first taking the ROMs out of the
machine and reverse engineering the code. So I got a sense of where all the code in
Tempest lives and what it does, where the zero page variables are, where things live.
the other's one.
So what, oh, wow, this is a very geometric.
Okay, what, can you explain to me?
Yeah, there's me playing the game right there.
This is literally you play.
This is me.
Dave, it's a high score you'll see.
The top center of it.
Can you explain to me what I'm looking at?
Well, it's a 3D geometric world.
It's basically 3D space invaders
wrapped into a shape,
and the enemies descend from the center of the tube
towards the outside, and they all have different behaviors.
Wow.
So long story.
short, it's a fairly complicated game to play well.
And I wanted to see if I could get
an AI to do it. And so once I had
figured out where all the interesting parts
of the game lived in memory, I added them as
parameters and built a Lua app
to extract everything from the game's memory as it's
running and puts them together
those parameters, which sends it to the Python side
over a socket, and then the Python side
does RL learning. I'm using a dueling
deep queue, and I believe,
with two head and a tail,
and they chase each other, and
it can play up to about level 36,
now, which is way better than most humans, but that's level 96, so it's got a waste to go yet, but
And you're the red thing shooting?
Yes.
You're controlling the red thing that's shooting?
Okay.
What are the options you can just move clockwise or counterclockwise, and then you can shoot?
Yeah, so you have a rotating knob, which is an optical spinner, and you have a fire button
and a super zapper for emergencies, but that's it, fire and rotate, basically.
All right, let's get back to your favorite C++.
What do you love about C++?
Why have you stayed with it for all these years?
Because it allows me to encapsulate my favorite C code in classes.
I'm not a big, well, I actually-
You're really a C-guy, okay, I got you.
I'm really a C-Gy guy.
Although I write two kinds of C-plus-plus.
I write really modern C-plus-plus-20
using no pointers, no string, or no character strings.
So, you know, it's basically as safe as rust, as far as I'm concerned.
Or I write C with classes, which is standard C,
but, you know, with polymorphism and encapsulation.
And that's most of what my code is.
but I try to do both.
Let me ask you about the whole stretch of time
that we kind of skipped over.
You built a lot of software over the years
after Microsoft, on the side while at Microsoft
and afterwards a lot of successful pieces of software.
One of your companies was software online
and it got into trouble for nagging users too much,
I guess, to upgrade.
That's what I saw.
What was all that about?
And what did you learn from that experience?
Now that was, other than family health scares, you know, when kids are sick, that was the scariest time of my life.
And the period leading up to it was one of the most invigorating and exciting, because what had happened was while I was at Microsoft, I had written all these shareware utilities, and I was selling them on the side and sold one to Microsoft as we talked about.
And they started to do really well.
And then I discovered banner advertising online.
And so I signed up with my credit card for a site, I think it was called FastClick, and you could say, I will pay this much for a banner ad impression, here's my banner, and it would rotate it in.
and I didn't set a cap on it.
I came back on Monday,
and I saw I had spent like $10,000 in banner ads.
I was like, holy crap, how am I going to explain this to my wife?
This is a bug.
It's a mistake.
It was my fault.
And I looked at the sales,
and it had made like $38,000 worth of sales.
And I was like, holy cow.
So all I have to do is scale that at some point
and basically did that for the next several years.
And the reason we got in trouble was the AG came in
and they had, well, I was blowing away,
because they had like 12 court claims of action
and 10 of them were outrageous,
which to me as a person with autism,
I couldn't get past.
It's like, I know these 10 things are absolutely not true.
Why are we even here talking about them?
And then, oh, they care,
the two things that might be true.
And the two things that might be true
were that it was a 30-day trial version
and after your 30 days were up,
it would then, if you continued to run it
and not buy it or uninstall it,
it would remind you once a day,
not like every 10 minutes,
but once a day
or every time you booted your computer
at most once a day.
And the AG content,
intended that that was too often. It amounted to spam. And so we agreed with them to limit it to
once a week, I believe. And, you know, there had to be a button to just uninstall with one click.
So we did those kinds of things. The other one was, in those days, when somebody bought a piece
of software, even if they bought it online and got a download, they fully expected there would be
media showing up at their house. So in the year 2001, which were 2001, 2003, we were talking about,
if you bought software, there was an expectation that a disk would show up. And so we made that
the default was to fulfill by disk, and it was $3.95 or $4.95 extra, and it was very obvious,
but it was a checkbox, and it was turned on to ship the disc to your house. Because we found
if we didn't do that, we got all these calls, people would wait, they'd order two weeks later,
call, where's my disc? And we'd luck, we didn't order a disc. Well, cancel it all. I don't want
it, because I'm not waiting for it. And so we got a lot of returns, and we didn't include
the disc, and so we decided to include the disc, but that is a priori violation of negative
affirmation billing in Washington State because you're giving them a default higher purchase.
price what about on the software user relationship it's interesting like how often to annoy the user
with the thing right if you never mention anything they might never discover like something
they actually want right if you mention it too much then they can get annoyed yeah and what you don't want is
you don't want them to have to do it or buy it
or do something to get rid of it.
It's one of the things that bothers me with,
I think Windows does that a little bit,
still to this day,
where it bothers me by asking me certain questions.
Like, do you want this?
Like, for example,
I really don't like to use my Microsoft account
to log into Windows, right?
I think now it's, like, basically required.
I think there's just nowhere around it.
But, like, they make it so difficult,
to not do that.
It's almost like they think they could just trick me into,
it really does feel like I'm getting tricked
into not doing what I want to do.
Right.
Like I have to like think, okay,
I need to click skip
and then it'll do something, are you sure?
Like I have to like use too much of my brain
to do the thing I, like you know,
as an interface, you know what I'm trying to do.
you're trying to trick me into not doing the thing I want to do.
And what I hate about that is like,
it's probably effective, sure, for converting people,
but it's really not good long term
for taking care of the interest of the user.
Yeah, the one that really throws me is the use recommended settings.
So I just did it when it was upgrade,
it went through the steps,
and I'm going through this new dialogue or wizard,
and use recommended settings.
Sounds like the thing you should do,
but I'm pretty sure that resets you to using the edge browser
and all this other stuff.
So, yeah, recommended by them,
but not recommended for me.
And that's the difficulty.
That's a really good example.
What effect do you think that does
in resetting the default browser to edge?
Do you think you're going to really earn the loyalty
of a user if you do that?
Don't you think that they're actually,
what you're going to create,
you're going to create some passive loyalty,
from some user base.
So on the metrics,
it might actually look like
you've increased
the number of edge users.
But really,
it's that reputation hit you take
over time,
where it just forms
where the edge is the thing
that you can't quite trust.
Unfairly,
because I think Edge is a really great browser,
but just this unpleasant feeling.
I don't know what that is.
Well, you don't want your operating system
to be an adversary, right?
And sometimes Windows can feel adversarial.
Like, it doesn't have your best interest,
the heart. And that bugs me to a certain extent.
I mean, we have this feeling, I think we just have general
distrust when somebody is super nice to you and is basically
selling something. There's a certain aura about that kind of
interaction. And when an operating system is interact with you
in that way, it's like... Yeah, I would much rather pay
$1.99 for Windows Pro per year or $20 a month or whatever
the fee schedule would be and not be upsold any further and not
have my data monetized and those kinds of things.
So did you learn about finding the right balance from that?
Yeah, I mean, I'm way more self-aware now.
There's things I would do much differently, particularly in terms of the advertising.
I always figured there's a guy named David Ogilvie, and he did this ad long ago for the Volkswagen Beetle, where it had a picture of a beetle, black and white, and it just said, lemon.
And there was a block of text below it.
So it's clickbait 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 very well for software.
Fear works well for antivirus and stuff,
but not so much for optimization
and make your computer faster utilities.
And so I always tried to cater to the greed aspect.
You know, make your computer faster,
get more RAM available, whatever the value proposition is.
But I realize now that I'm looking at that with my knowledge.
And as an autistic person,
I now have an appreciation that other people
are going to look at it with their background knowledge
and may conclude something different.
So I might be scaring people
where I was just trying to incentivize or get
their greed instinct going. So I'd be more sensitive about that kind of thing today.
Ridiculous question, but what do you think is the top three Windows operating systems,
the different versions? I'm a fan of Windows 2000 server. That's what?
Really? Yeah. Okay. That's what I ran my business on. I ran my brother's business.
We set up multiple salons, all VPN to one another, and using the SQL server.
I don't know if I've ever gotten to experience Windows 2000 servers. So when was XPI?
2001.
What was before XP?
2000.
2000.
Was that good?
Yeah, I liked it.
I mean, it doesn't have the visual flash
that came with XP,
but as a system,
especially as a server operating system,
it was great for the day.
But then XP was, I would say,
probably, from a completeness perspective,
an impact,
and how long it lasted,
and it was probably the greatest windows
for consumers,
the operating system.
I would think so.
It certainly got the longevity
for it.
There's people who would still run it.
I mean, I'd still run it on stuff
if you'd get security updates
because it does 98%
of what I need Windows to do.
Yeah, that was incredible.
I mean, so Windows 95,
I'll probably put Windows XP as number one for me,
and then Windows 95, too.
What's your metric?
Personal preference or industry impact or?
Industry impact, stability,
just that there's certain, like,
just like with programming, you have code smell.
Just like how well all the features
were orchestrated.
together how there's a design philosophy that permeated the whole thing and it was consistent
not too many features not dumb down too much right uh but not over complicated how often it
crashes the blue screen all those things i don't know if it's a very apt description but i think
of it as crisp so it's not a lot of rough edges it does what it does it snappy and yeah you said
you play slot machines and uh given that you uh love hardware and
software. You're the perfect person to ask, how do slot machines work?
Well, I'm happy to ruin them for you.
Okay.
So it's ironic to me that I play slot machines because I know it's a losing bed overall,
but there's a whole dopamine feast there of bright lights and high-contrast colors that
I enjoy. So I do play them. But what happens is internally, there's basically a black box
mechanism that does nothing more than generate the next random number and what the outcome is
in terms of probability and payout. And then the game says, I've got to make up a movie,
you to go along with that and maybe it's three bars or whatever it is but there's no correlation it's
not spinning the reels seeing where they land and looking that up to see what you won it's completely
the other direction it determines whether or not or if you won and then make something up to fit
that scenario that indeed is ruining it for everyone a little bit uh what kind of code runs them i don't
really know i tried to get down and get inside access to one and it was very hard they don't want
to tell you a lot about them i'm sure it's not that deep of a secret but yeah
Because they're all basic Windows PCs,
but they're basic Windows PCs on top of a very secure enclave of some kinds
that I don't know a lot about.
Yeah, it has to be extremely secure, right?
Yeah.
Well, in the 70s or 80s, there was a tech in Vegas went around
and he was burning his own ROMs for the slot machines
and with the back door in them.
And so when he serviced the machine, he would just put his ROM in
and he'd come back six months later and invoke the back door.
I love humans so much.
Anyway, do you have other favorite kinds of systems like that?
I like a lot of old hardware.
I restore cars, so I do a lot of 1960s muscle cars, cars and trucks.
And old computers, so I restore PDP11s.
It's been my fascination and my special interest for the last six months or so,
and I've built a number of those.
Yeah, I've seen you like you're posting videos about it, the PDP 1183.
What's that whole project?
So basically what it is is I had built a number of PDP 11s,
And so over the years, I had acquired all these parts
and I decided, well, let me build the best PDP 11 that I can.
And so it was kind of a quest to, just like you'd try to max out a PC,
I tried to max out of PDP 11.
So it's got four megabytes of memory,
which would be massive in the day.
And, you know, that's it there.
And it's got lots of blinking lights,
and I had to rewrite the BSD kernel to make the lights work.
What are we looking at here?
What is, what's?
So the very top is a PDP 1170 control panel,
which we can largely ignore.
and then there's two chassis below that.
One has...
What are the different knobs?
Sorry to ask dumb questions here.
The knobs control what view you get of the LEDs.
Oh.
So normally you see the data bus and you can see the address bus.
And you can pause the machine and you can edit the address on the bus
and you can deposit stuff into memory with the switches.
Man, the haptic plus the LEDs.
That's what you like imagine a computer to be.
Yeah.
That's so cool.
That's so cool. These are what are these?
Is it D-U-1, D-E-2?
Yeah, it's a weird floppy drive.
It's a dual floppy drive with one stepper motor.
So both heads seek together like Siamese twins.
Okay, so what kind of stuff are you doing with this?
What do you try to restore them?
Yeah, so I restore them.
Is it actually run?
Yeah.
Are the blinking lights are real?
Yeah, it's all real.
Wow.
And I had to rebuild the kernel and all that,
so I had to learn the BSD kernel.
I'm pretty familiar with it now.
Because you can't just add a device driver, right?
You've got to rebuild the kernel to add support for whatever device.
So you add a new disc controller.
It's time to build the kernel.
So you've got to go find the source and find the code.
You can run code on this?
Yeah.
You've written a couple of books on autism.
Being autistic yourself, I was wondering if you could tell me about, like,
fundamental differences about the mind of a person with autism versus a, let's say,
a neurotypical individual.
Well, the fundamental theory of thought for autism is called monotropism.
And basically what that means is that my brain does one thing.
It does it very intensely, and then when it's done, I can move on and do something else.
But I'm not a multitasker.
I'm a serial single-tasker by any stretch.
Autism usually brings with it sensory sensitivities and repetitive behaviors, behavioral issues that compound it.
And if they rise to the level where an individual can't moderate or accommodate them in their life, it becomes a disorder.
And that's probably one to two percent of the population.
What's the biggest benefit of life with autism?
I can bring to bear an incredible amount of focus and dedication on a particular task.
If it's,
and it has to be something I love.
It has to be something that's rewarding.
It has to be something I can make progress on.
And there has to be all these things that are true about it.
And it can be like a kid playing with trains.
I get that same feeling.
That said you also said that you struggle with ADHD.
Yeah, a fair bit.
So that's part of the component, like maintaining the focus.
Or actually acquiring the focus is the issue.
So I'm very easily distracted.
I fall asleep with noise-canceling headphones
or I can't fall asleep, that kind of thing.
But once I get locked in, I'm very hard to distract.
So it's kind of a paradox.
Oh, that's fascinating.
It's hard to get into that state.
Okay, what's the biggest challenge of life
with an autistic mind?
That I don't know what anybody else is thinking.
So I know what I would think about this interaction
if I was in your position and I was you.
And that's the best I can do.
But I think most neurotypical people have a sense
of, well, Lex probably feels this way or that way,
because he's acting this way and his reactions with this
and his facial expressions say this,
and that's all kind of lost on me.
So I run a little proxy NPC game
for everybody I deal with.
So I guess that makes social interaction
a little bit complicated.
It can be, yeah.
Telephone is especially hard
because I rely on a lot of other cues.
And when somebody is just on the phone
and I just have their voice,
there's so much that's implied between people
that I miss.
And so I'm much better on FaceTime
where if somebody makes a joke,
they might smile after.
We're on the phone.
I don't know if you're being sarcastic.
or serious and that kind of thing.
So that's probably gotten you into trouble over the years a bit.
Yeah, there's lots of times with my wife, too, where, well, there's a certain literalism
that comes with autism there.
And we spent years where she would say something, and I'd say, but that doesn't make sense.
You know what I mean.
I'm like, no, I know what you said, and I'm not being just combative here.
I literally only know what you said, and I don't have that.
And I remember we've been in meetings with people, and, 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 feel like,
you've got to tell me what's going on, because I really don't know what's being said here.
You told me related to this that there was an early, somewhat awkward encounter with Bill Gates.
Can you share the story of that interaction and how autism comes into play here?
Yeah, my very first summer at Microsoft, when I got the internship, Bill had all the interns over.
I guess it was 20 or maybe 25 of us that got hired that.
that year, over to his house for burgers and beers and just chat in the backyard.
And, of course, it's still Bill Gates, and he's a big enough deal even then, that you're a little
nervous. And so my manager, Ben, who was sort of my mentor at the time, took me over to introduce
me to Bill because he knew him. And he's explaining, this is Dave. He's our intern from Canada
and in the space of four months. He's done this feature and just copy and smart driving,
listed off all the stuff I was doing. But I stopped because I'm like, well, actually, it was
three months.
I had to interrupt them, and they both kind of, what?
And I looked at each other, and I realized that was the wrong time to correct the guy.
Yeah, so they bother, like little inaccuracies.
Oh, drive me crazy.
Yeah.
And then, of course, you don't, the impact that might have on a casual social interaction,
it's not trivial for you to be aware of that.
Yeah, I'm much better than I used to be before I didn't know,
and I didn't know how injecting a correction meaninglessly into a conversation
could impact and make the other person feel.
Now I've got a better sense of it.
What advice would you have for folks who have an autistic mind
on how to flourish in this world?
In terms of prosperity and finances,
the biggest thing I can say is sell what you can do and not yourself.
Because if you go into a job interview and you try to wow them with your personality
and how amazing you are, it may or may not go.
well. But if you can go in with your portfolio of work and say, look, here's my GitHub history,
and here are the awesome projects I contributed to, and here's the actual algorithm I wrote,
and this is what I do. I think you get a lot further with that. So whether you're playing the
piano or writing code. That said, so much of software engineering on large teams has a social
component to it, right? It does, and that was a liability for me. How do you, how did, I mean,
what have you learned about how to solve that little puzzle? I think the biggest deficit
for me was when I start to manage people because now you're concerned about their hope,
streams, aspirations, what motivates them. They have entire lives that are kind of a mystery to me
because I assume they want to be motivated and led and encouraged and compensated exactly as I would.
And that's not always the case. Some people need a lot more affirmation. Some people just want
money. Some people want to be in the important meetings and make decisions. But I was largely oblivious
to that. And so eventually I had to learn that everybody that you're managing has their own set of
incentives and priorities, and they're completely different from what I think they probably are.
So you could, I guess, make things more explicit and just communicate better about, like,
ask them about what their interests are.
And that's something I started doing is overtly asking, because it's hard for me to nudge somebody
there. I'm not good with that kind of social dance, so.
Yeah, part of the social dance is there's a lot of stuff that's unsaid.
You can kind of figure out, you can read people.
but if that's
you know with autism
it might be a little bit difficult to do that
and so you have to make things more explicit
plus like sarcasm and satire and humor
might be difficult
yeah I would love to be a fly in the wall
some of your earlier interactions in Microsoft
I mean some of the greatest engineers
have in mind like this so
yeah I've had laptops throwing at me and stuff
and I'm sure it was my own fault so
you write about the 10 second autism test
could you explain how this work
Yeah, now, it's, of course, anything that has two answers has a high error rate.
But so what's more important to society as a whole from the people is it cooperation or creativity?
And if you had to pick one, which is the most important?
And most neurotypical people will generally lean towards cooperation, whereas people on the spectrum tend to lean towards creativity as individual problem solvers.
Of course, there's some kind of error rate there.
So if you want to double your precision, you can use the second test, which is you ask, there's a room with 10 chairs.
and six people come in and sit down in those chairs.
How many chairs are left?
Now, some people are going to say four,
but I'm going to say 10
because that's how many chairs are still there,
literally true.
And I'm not being a dick.
I'm not trying to be complicated,
but that is how my mind works.
And so when I see that question,
it's like how you answer it.
So you're how literally you take things?
Yeah, everything is very literal for me.
I remember as a kid, my grandfather was building
a planter holder in the kitchen
for my mom. And he was using these big
angle brackets that I thought were a little overkill
and I said, do you think that'll be big enough to hold the plant?
And he says, it'll be big enough to hold a horse.
And I was only five, but I was very confused
about, A, why you would bring a horse into your kitchen,
why you would put a horse up on a planther and all of these things.
It didn't make any sense to me when obviously it was a figure of speech.
But for a lot of my life, I took figures of speech as literal.
You mentioned emotional post-processing
as a strategy you used to replace
social interactions so you can sort of reverse engineer to help you understand the
neurotypical world.
I think this is going to be useful to a lot of people.
Like what does that entail?
How does that help you?
So if I meet somebody, particularly somebody new, and it's my first couple of interactions
with them, so even meeting you today, then I will go home later and replay all of the
moments where I had choices to make.
And I'm probably the most uncomfortable ones first to find out what did I do wrong in that
moment. What did I miss? What was the other person thinking? How can I improve that kind of
situation next time? And do I need to go fix it or make a phone call, that kind of thing in a
bad, you know, in the extreme case? But, uh, and that's happened a couple times in my life.
Like, I had a car restored that my dad had bought new in 69. I still have it. So we've had
a 50 years. And about 20 years ago, I had it restored. And it was like a three-year process of crafts
when working on this car for thousands of hours. And I go out to pick it up. And I'm inspecting the
car and I'm very impressed with the work and I'm saying oh this is nice and this is great and everything
else and then I fly home and write the check and the car gets delivered and then I realized
probably 10 years later that I had a whole bunch of craftsmen that had worked on my car for three
years and I probably should have blown some smoke up their butts but what a great job they did but I never
did that because it's not what I wanted or needed in that moment and I was completely oblivious to that so
I sent an email to the manager or to the owner of the place and I said I didn't know if you remember
this, but 10 years ago I picked up my car and I probably looked on impressed, but I want you to know
that I was very impressed with everything and the quality of everything else. And he wrote back,
he's like, I thought of that moment often. So I'm like, now I'm going to let it up. There's subtle
things about human interaction that mean a lot to people. And if you ask them straight up, they might
not be able to sort of articulate that, but it means a lot. And when it's off, when something is
off, it bothers them. Right. But to reverse engineer that, to figure that out,
for a person who might not sense those little subtleties
of human interaction, it's tough.
That's a good point to jump in there, too, on empathy
because there is some perception in the community
that people with autism lack empathy.
And I don't think that's the case at all.
I can only speak for myself.
I feel fairly empathetic.
But I think the problem is a communication one,
and it works in both directions,
whereas I don't know how you're feeling,
so it's hard for me to be empathetic with it
until you communicate to me what it is you're experiencing.
And then once I know, once I have an understanding what's going on in your head, I can feel
incredibly sorry for you.
But until that, I'm going to assume you're going to handle it just like I would in your
position in my case with what I know now.
What advice would you give to people, like on the other side, how they can help you be a better
friend or better partner, a better colleague, like how they should communicate with you
to help, give more information?
Yeah, be really specific.
And don't assume I'm going to pick up on clues and nuance and subtlety.
So if you're trying to nudge me into particular behavior,
you're much better off to say, Dave, this is what you need to do.
Have I failed in any way today?
No, not yet.
All right.
What score would you give me at 1 to 10?
Minutes 6, 7.
7.5.
Communication 7.5.
Floating point.
Nice.
Masking, you've got to tell me what that is.
It's a significant experience for many on the spectrum.
What is masking?
And tell me about any of the experiences you've had with masking.
So masking is, and it's probably not the right way to describe it,
but it's the act of acting normal.
And that is, how do I conduct myself in a social situation
in a way that other neurophytical people are going to,
or that other people who are neurotypical,
are going to receive and accept it the right way?
And everything you do in a social interaction,
from waving my hands to taking facial expressions
to tone of voice, to posture.
It's a huge contrivance, and it's work.
Yeah.
So it becomes natural to most people.
It's just what they do, and cool people do it really well.
But for somebody on the spectrum, you've got to fake it all.
Yeah, acting normal.
There's a song about Rush, you know, the band?
Yes.
Lime Light, and it's written by Neil Pert.
And I only speculated what people have passed on,
so I've got a sense he was probably on the spectrum.
but the line is something like
all the world's indeed a stage
and we are merely players,
performers and portrayers, each and other's audience.
And he talks at length in the song
about not being able to treat strangers as friends
and being able to fake an affect and all that.
So it seems like he's struggling with masking a lot
in the song, and I have no idea,
but that was what I took from it.
Yeah.
You describe meltdowns as an overwhelming experience.
Can you describe meltdowns?
What typically triggers a meltdown?
Generally, it is.
is it's when you're emotionally overwhelmed
to the point that you can't manage
your behavior anymore. And so you
see it in the movie Rain Man when he'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
actually probably the best portrayal
I've seen in media is, what's
a TV show where the doctor is autistic?
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, he has a complete meltdown, and it's a pretty good portrayal on television, so.
What is that actually happening? Like, there's a, like, a threshold you cross that it's just like...
Yeah, switch flips. It's like blue screen, essentially. Yeah, kind of. For the brain algorithm.
So switch flips, you go kind of a primitive brain, your frontal cortex shuts down to an extent, I think,
so you don't have the benefit of decision making and filtering. Your very reptilian brain in that state.
And it's really a panic state. And so it's a panic, and a fighter,
flight response to not being able to tolerate the current reality.
And perhaps it's been so frustrating or you've been so randomized or you had a bad
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.
What about love and relationships?
What are some of the challenges of that?
There's a show love on the spectrum.
I've heard of it.
I've not seen it, but I've heard of it.
Because certain aspects like literal interpretation of things,
It just makes the complexity of relationships,
of romantic relationships, even more explicit in that context.
You know, I've been married 31 years and together for 37,
so a long history there.
And I think our first indication that we knew we were very different was
we were sitting in the car one night at front of the house at dark.
And across the street, there's kind of a nice house.
It has these big brick pillars that are linked by like anchor chains
and it forms a fence around the yard.
And I'm looking at these things because they're about two feet square and I got a capstone
and I'm like, you know, I wonder if they're hollow or are they backfill?
Do they film a concrete or what?
And my now wife looks at me and she's like, what's wrong with you?
Why do you have a place in your head that cares about that?
Yeah.
And we're just doing the moment that I was passionately involved in caring and she was passionately
involved in why would you even worry about that kind of thing, knew her very different.
Yeah, very specific, seemingly irrelevant details.
But I was never good with people, I don't get it when people like me, I guess.
And my son is the same way because they all don't fall very far for in three.
And I got him a T-shirt that says, if you're hitting on me, please let me know and be specific because I'm clueless.
And it's very similar for me.
I mean, I had to be around a long time and kind of grow on people because I had no game because I had no ability to do the social dances that that whole thing requires.
So my only option is to just be myself and that works for some people.
Were you able to say, like, I love you, that kind of stuff?
Yeah.
I mean, her family was way more open with that kind of thing than mine was.
And so it was a growing period for me.
But yeah, it's not a problem I have.
Okay.
All right.
But it seems like unimportant.
It was like, what is that actually accomplishing?
Well, now we do a lot of affirmation and checking.
Like, in the last couple of years, we do a thing where she'll just be like, you good?
I'm like, yeah.
And there's two steps to that.
There's the, are you good?
and then there's my response.
Because if I'm like,
yeah,
she knows something's up.
And so there's always
just pinging back and forth
because there's not the ability
to read people
just from looking at them
to know what's going on.
So we have this explicit
check mechanism,
I think,
where we've developed that.
So there's a vast chasm
between yeah and,
yeah.
Mm-hmm.
Again, that's subtlety
of human communication.
You've written about the experience
that people have
of feeling
quote, a little bit autistic.
Could you elaborate in this concept?
Yeah, I think a lot of people,
maybe 10 to 20% of the population,
is somewhere on the autism spectrum,
but is it impacted by enough
that it rises to the level of a disorder?
But they still have many of the characteristics
that arise from autism.
And I think if they can understand
and identify and manage some of those behaviors
in an optimal way,
they can both leverage them
to take advantage of some of the skills
and mediate some of the deficits
and problems that come with it.
And I wrote it mostly for me,
my kids because none of them as far as I know have ASD, but they've all got certain aspects
of my behavior that are particularly related to it. So I thought I'd write a little manual for
them, basically. Why do you think so many programmers, like excellent, like great programmers and
great engineers are on the spectrum? I think it's that single-minded focus in the ability to
reduce a problem and to be ultimately curious about what's inside stuff. That's been a obsession for me
my whole life. What's inside? I got to take my mom's oven apart because I got to know how the
flip clock works. And I think that's a good habit to have if you're going to be a programmer.
And being willing, being excited to get into the details. Yeah. Yeah. What's the cool thing you
hope to program to build this year? What are you working on? So we've got the R.L. Learning
how to play Tempest. Where are you on that, by the way? How, like, where, what's the ETA on
success and dominance, like victory?
Well, it's very close to working.
I think now it's tweaking the model size and the 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.
It's tuning hyperparameters and hoping for the best.
So it's already a success in the sense, but now you're seeing, like, how far can this go?
Yeah, my goal was to be able to beat me.
That's a tough bar.
It is, but lots of games now are, you know, they play them better than humans,
but maybe not games as complex.
What are the cool things are you working on?
What you hope to build this year?
The PDP11 stuff, I'm trying to get at what's called an RA82 drive.
It's the big 14-inch monster that spins at 3,600 RPM,
and sounds like a washing machine,
and then I'll find the controller card and write the code
and integrate it into the driver and try to get that all working.
What kind of code are you trying to run on it?
I'm going to have to get the driver stack to work,
so I have to incorporate the driver for it into the kernel.
You built a machine recently with one terabytes of RAM.
How did that happen and why?
So we have a project called GitHub Primes.
If you just search for GitHub Primes, you'll find it.
And it is a single set of prime number algorithms implemented in about 100 different languages.
So it's the exact same algorithm, and we require that you follow certain rules to make it fair.
And then you express that algorithm in whatever language you choose to the best of your ability.
And we run a benchmark every night, and we compile the results and find out which languages are fastest.
Just the one?
Yeah.
Oh, so this is, so yeah, you got it.
And this is what you're using this for.
Yeah.
Oh, so this machine runs those tests.
Yes.
Okay, you got to tell me about this project.
This is epic projects.
You're comparing the performance of the different programming languages.
It's all these languages.
So they all get built into an individual Docker container, and then they all run.
This is an incredible project.
This is really, really cool.
It's really measuring the performance of the different languages.
So what have you learned about which languages?
Like, which language usually wins?
Zig, I think, right now.
Zig.
It varies.
People will make an improvement to the C++,
then it'll pass for a while,
and then the Zigg guys will get angry
and come back and make it faster.
Zieg, Rust, C++, C,
and what kind of code is being run?
What's the piece of code
that they're trying to run to measure the performance?
So what they're doing is they're solving the primes
up to 100 million,
as many times per second as they can
in a five-second loop.
So it's a loop, got it, over and over and over and over.
Yeah, on all cores across all CPUs.
What about, like, how the program is written?
Does that vary?
No, so you can do anything you want, but it has to be a prime sieve.
You're allowed to use one bit per integer at most, so you can't use a byte, which is
cheaper and easier.
There are a number of rules like that that you have to allocate the memory within your
timed loop, and so we have a set of rules, and we have some solutions that don't
follow the rules, like the 6502, because you've only got 64K, you can't do 100 million
So there's a lot of solutions like that that we run as exhibition projects, but among the main languages, they all follow the same rules.
And so it really should just be how the algorithm is expressed in that language.
And many of them use the same backend compiler.
So it really is how you're expressing it and the limitations or the benefits of that language.
Are there a lot to be multiple submissions per language?
Yeah, yeah.
So if you look in the C, there's like five, I think.
Okay.
And some of them might use different compilers or no?
Yeah, some are GCC, some are C-Lang.
L-L-LVM.
I'm looking at a snapshot here from a couple of years ago.
Zigg was at the top, then Rust, then NIM, Haskell.
Oh, no, this is not ordered by slowness, or is it?
Yep.
So C-U-D-B-1.5 times as long as Zig.
Wow.
Okay.
Fascinating.
Well, it's a super cool project.
Yeah, we've got any crazy languages like PowerShell.
There's a version in PowerShell and stuff like that.
So this is automated, like, in terms of organization of, like, how the submissions are
on, there's a structure to it. That's cool.
Yeah, there's two guys over in
Europe. Rucker and
Tudor basically owned this now. I started
as just three languages. I did Python, C-sharp,
and C-plus, plus. And I checked
them in, and I published the episode, and then people
started throwing more solutions in there,
and it just got out of hand, so I had to get somebody to manage
that one, and they've been great doing that for me.
What's the happiest moment
for you when you're programming and building a thing?
Like, what do you enjoy most?
I think the most fun for me is when I
build something complex, and I thought through
how it should work, and then I run it, and it does work that way, that creates intense
satisfaction.
So seeing the results come out the way that I plan them and have it work, because it rarely
does the first time, but...
Yeah.
Or especially if it does work the first time.
I never trust that.
I always feel like I'm missing something.
That's true.
But, you know, with compiled languages like with C++, that's always a good feeling.
You write a bunch of code, you compile it all compiles without warnings.
a lot of errors. It's a cool feeling.
What do you think is the future of programming?
So now, I don't know how much you've got to really experience the impact of LLMs with
code generation. Do you use, have used cursor much, cursor VS code with code generation?
Yeah, I've done a ton of it for the Python side because I'm not great with Python and
I'm kind of new to it. So I found it very helpful because I've learned a lot from watching the
code that it generates, if I don't know how to do something.
Because if I write Python from scratch, it's going to be about four times as long as
what the AI can crank out, because Python can be pretty terse if you're good at it.
Oh, that's cool.
So just, you're essentially learned Python for this project.
Yeah.
So this is a good case study of like a great programmer in C++ plus, plus quickly learning
a language.
Yeah, I'm vibe coding my way through it, I guess.
Vib coding your way through it.
And that is a really powerful use case to learn a language for, if you're already a good
programmer to learn either
a new language or
a new way to
approach a problem by having it
generating, because you probably understand the
Python code it generates. Yeah.
Without actually looking up any of the
syntax. Yeah, it's all pretty self-explanatory
once you see it, but you know, creating it from a whole cloth
is a little different, so. Yeah.
But you still have to learn how to
program in order to use it in that
way. Oh, and to read it, to know what to tell
it to do next and all that, yeah. I don't
think you can vibe code yourself if you
just new and haven't coded.
But if you're a good programmer,
AI can make you incredibly powerful.
What do you think is the future of programming
like 5, 10, 20 years from now, this whole process?
Now vibe coding is kind of a fun meme thing
because you still have to be,
the people that don't know how to program
and are just vibe coding
are almost entirely creating systems
that are not usable in production.
They're not, it's very difficult to create a product.
And the people who are already great programmers
kind of vibe code just in the way that you're doing it.
They're basically, it's just a fancy auto-complete,
and they end up editing it,
or it's a way to learn a new API or a new language
or a new whatever, a new specific use case
or maybe a different kind of, like, a GUI component
or something like that.
But as they get smarter and smarter,
we don't know where the ceiling is.
That might change the nature of what it means to be a programmer.
So do you think about that?
I do.
I think, I don't want to say prompt engineer,
but I think it's going to be something like that
in the sense that if you're an architect
building a bridge, at some point,
guys were down there welding beams together,
but now you're dragging things around in AutoCad
and assembling from big pre-form sections.
And I assume that's what programming will be like.
You won't be in there throwing individual lines of code around.
You'll be moving components and interfaces
and describing to the AI
what those interactions should be
and letting it build the components.
But I think we're still quite a ways from it,
being able to whole cloth generate.
You can't say, give me a Linux kernel
as compatible with Linux.
One day we'll be able to,
and it'll crank it out,
but we're not there yet.
Does it make you sad
that we're climbing
the layers of abstraction so quickly?
So you use 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.
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
and there certainly are holes in my knowledge.
But I think the only way to have got
that level of knowledge or the completeness
of that picture is to have lived it for that long.
Yeah.
And it's going to be hard to duplicate that
for people starting now.
What do you think is the meaning of this whole thing?
Of existence of life
whatever's going on here.
making cool stuff.
I guess fundamentally what I care about
is being able to make complex things
that are useful to other people,
which leverages my abilities
in a way that allows me to be creative
and to create things that other people can use
in a way that if I was limited to painting or sculpting
or whatever in the classic arts,
I would be hopeless.
And so for me, that's really the meaning of life.
And then maybe you raise a couple of good
kids to hand the baton off to.
Yeah, and you've created a lot of cool stuff over your life that impacted millions,
probably billions of people.
And now you're inspiring, you're creating cool stuff for everyone to see on your YouTube
and you're inspiring people in that way.
So for everything you've done in the past and everything you're doing now, I'm a big fan.
I'm really grateful for what you're doing and grateful.
that we've got a chance to talk today.
Thank you, brother.
Thank you.
Thanks for listening to this conversation with Dave Plummer.
To support this podcast, please check out our sponsors in the description.
And now let me leave you with some words from Bjorn Strauss Stropp,
creator of C++, and somebody who, by the way, I interviewed a long, long time ago,
episode 48 of the podcast.
He said,
there are only two kinds of languages, the ones people complain about, and the ones nobody uses.
Thank you for listening and hope to see you next time.