WEBVTT

00:00:00.000 --> 00:00:02.359
I was looking back at the calendar for October

00:00:02.359 --> 00:00:05.339
2011 recently, and it really struck me. It was

00:00:05.339 --> 00:00:09.580
this bizarre, pivotal moment in tech history.

00:00:09.839 --> 00:00:11.679
Oh, absolutely. It was one of those weeks where

00:00:11.679 --> 00:00:14.820
the world really shifted, but half of the shift

00:00:14.820 --> 00:00:17.839
was screamingly loud and the other half was almost

00:00:17.839 --> 00:00:20.359
completely silent. It's a perfect study in contrast,

00:00:20.579 --> 00:00:21.820
isn't it? Yeah. You're talking about the week

00:00:21.820 --> 00:00:24.359
that digital age lost two of its founding fathers,

00:00:24.480 --> 00:00:27.809
really. Exactly. But the way we handled it, the

00:00:27.809 --> 00:00:30.870
way the world reacted was just so different.

00:00:31.050 --> 00:00:33.649
On one side, you had Steve Jobs. When he died

00:00:33.649 --> 00:00:36.670
on October 5th, it was a global event. A phenomenon.

00:00:36.890 --> 00:00:38.850
A total phenomenon. I remember walking past the

00:00:38.850 --> 00:00:41.350
Apple store downtown and the windows were just,

00:00:41.390 --> 00:00:43.270
you know, plastered with sticky notes. People

00:00:43.270 --> 00:00:45.030
were crying in the streets. It was front page

00:00:45.030 --> 00:00:48.009
news in every single language. It felt like a

00:00:48.009 --> 00:00:50.969
head of state had died. It really did. And in

00:00:50.969 --> 00:00:54.560
a way, it made sense. Jobs was the face. Of the

00:00:54.560 --> 00:00:56.719
technology we touch, the technology we hold,

00:00:56.920 --> 00:01:00.079
he was the showman. The ultimate showman. He'd

00:01:00.079 --> 00:01:01.719
hold the device up in his hand and tell us it

00:01:01.719 --> 00:01:04.359
was magic. And we believed him. We felt this

00:01:04.359 --> 00:01:06.980
personal connection to the guy in the black turtleneck

00:01:06.980 --> 00:01:09.140
because he was the one selling us the future.

00:01:09.400 --> 00:01:12.359
Then, just seven days later, literally a week

00:01:12.359 --> 00:01:15.620
around October 12th, another man died. He was

00:01:15.620 --> 00:01:18.760
70 years old, living alone in a town called Berkeley

00:01:18.760 --> 00:01:21.700
Heights, New Jersey. His name was Dennis Ritchie.

00:01:22.680 --> 00:01:24.920
crickets. Almost total silence. Unless you were

00:01:24.920 --> 00:01:27.500
a serious computer nerd, a programmer, you probably

00:01:27.500 --> 00:01:28.980
didn't even see the headline. It was buried.

00:01:29.239 --> 00:01:31.640
It was there at all. And that silence, I think,

00:01:31.640 --> 00:01:33.480
is actually quite profound. It speaks volumes

00:01:33.480 --> 00:01:36.579
about the nature of his work. While Steve Jobs

00:01:36.579 --> 00:01:39.159
was designing the, let's call them the fashion

00:01:39.159 --> 00:01:41.700
items of the tech world, the beautiful, sleek

00:01:41.700 --> 00:01:44.959
glass rectangles, Dennis Ritchie was doing something

00:01:44.959 --> 00:01:48.060
much, much deeper. He wasn't designing the case.

00:01:48.140 --> 00:01:50.719
He was designing the physics of the entire digital

00:01:50.719 --> 00:01:52.879
universe that lives inside that case. That's

00:01:52.879 --> 00:01:55.040
the core of what we want to get into today. This

00:01:55.040 --> 00:01:57.879
claim that this quiet guy who nobody stopped

00:01:57.879 --> 00:02:00.519
to mourn in the street actually built the, quote,

00:02:00.680 --> 00:02:03.500
numeric soul of the device in your pocket right

00:02:03.500 --> 00:02:06.560
now. It's not just a claim, you know, it's the

00:02:06.560 --> 00:02:09.430
reality of the situation. If you could take a

00:02:09.430 --> 00:02:12.250
powerful enough microscope and look inside the

00:02:12.250 --> 00:02:14.930
logic of your iPhone or your smart fridge or

00:02:14.930 --> 00:02:17.610
the massive servers running this very conversation.

00:02:17.949 --> 00:02:20.409
You wouldn't see Steve Jobs. You would not. You

00:02:20.409 --> 00:02:22.169
would see the work of Dennis Ritchie everywhere.

00:02:22.490 --> 00:02:25.129
His fingerprints are on every single chip. So

00:02:25.129 --> 00:02:28.169
if he's that fundamental, why is he the unsung

00:02:28.169 --> 00:02:31.030
hero? Why don't we have movies about him written

00:02:31.030 --> 00:02:33.770
by Aaron Sorkin? Why isn't he a household name?

00:02:33.909 --> 00:02:36.030
Because infrastructure is invisible when it works

00:02:36.030 --> 00:02:38.580
perfectly. You only notice the plumbing when

00:02:38.580 --> 00:02:41.520
a pipe bursts. Right. You only think about the

00:02:41.520 --> 00:02:43.879
power grid when the lights go out. Dennis Ritchie

00:02:43.879 --> 00:02:45.699
built the plumbing for the entire information

00:02:45.699 --> 00:02:48.139
age. So for this deep dive, we're going to unpack

00:02:48.139 --> 00:02:50.199
that. We're going to figure out how one man,

00:02:50.300 --> 00:02:53.300
working in a probably messy office at Bell Labs,

00:02:53.500 --> 00:02:56.460
created the two most important, most foundational

00:02:56.460 --> 00:02:59.199
tools in computing history. The Unix operating

00:02:59.199 --> 00:03:01.860
system and the C programming language. The twin

00:03:01.860 --> 00:03:04.639
pillars. Yeah, and I hear those names Unix and

00:03:04.639 --> 00:03:06.539
CNOT, like I vaguely know they're important.

00:03:06.800 --> 00:03:09.159
But I want to get past the Wikipedia summary

00:03:09.159 --> 00:03:12.280
today. I really want to understand why they matter.

00:03:12.580 --> 00:03:16.139
Because I've heard people, serious people, say

00:03:16.139 --> 00:03:18.400
that without Richie, the internet as we know

00:03:18.400 --> 00:03:21.379
it simply wouldn't exist. And that's not hyperbole.

00:03:21.460 --> 00:03:24.400
It's a statement of fact. Brian Kernaghan, who

00:03:24.400 --> 00:03:26.840
worked right alongside him, famously said that

00:03:26.840 --> 00:03:29.180
the tools Ritchie built and their direct descendants

00:03:29.180 --> 00:03:32.259
run pretty much everything today. Everything.

00:03:32.439 --> 00:03:34.860
Everything. So our mission here is to find out

00:03:34.860 --> 00:03:36.719
how that happened. And it really has to start

00:03:36.719 --> 00:03:39.139
with understanding who Dennis Ritchie actually

00:03:39.139 --> 00:03:41.819
was as a person. Right, because he wasn't a Silicon

00:03:41.819 --> 00:03:43.979
Valley dropout, was he? He didn't start some

00:03:43.979 --> 00:03:46.000
company in a garage with the goal of getting

00:03:46.000 --> 00:03:48.159
rich. Oh, not at all. He was from a completely

00:03:48.159 --> 00:03:50.620
different world, a different mindset. Dennis

00:03:50.620 --> 00:03:54.340
McAllister Ritchie was born in 1941 in Bronxville,

00:03:54.400 --> 00:03:56.780
New York. And he was basically born into the

00:03:56.780 --> 00:03:59.400
family business of science and engineering. His

00:03:59.400 --> 00:04:01.759
father was also in the field. His father, Alistair

00:04:01.759 --> 00:04:04.139
Ritchie, was a legend in his own right. A longtime

00:04:04.139 --> 00:04:07.139
scientist at Bell Labs. The same Bell Labs. The

00:04:07.139 --> 00:04:09.879
very same. Alistair co -authored a really important

00:04:09.879 --> 00:04:12.659
book called The Design of Switching Circuits.

00:04:13.289 --> 00:04:16.189
Now, that sounds incredibly dry. It does sound

00:04:16.189 --> 00:04:18.769
a little dry, yeah. But switching circuits are

00:04:18.769 --> 00:04:21.509
the fundamental logic of how machines make decisions.

00:04:21.730 --> 00:04:25.310
It's the physical manifestation of zero and one.

00:04:25.649 --> 00:04:29.430
On and off. True and false. Dennis literally

00:04:29.430 --> 00:04:33.089
grew up in Summit, New Jersey, with that kind

00:04:33.089 --> 00:04:35.490
of deep structural thinking just floating around

00:04:35.490 --> 00:04:38.160
the dinner table. So he was steeped in this idea

00:04:38.160 --> 00:04:40.220
of logical structures from the time he was a

00:04:40.220 --> 00:04:42.399
kid. It wasn't something he discovered in college.

00:04:42.660 --> 00:04:44.800
Completely. It was his native language. And of

00:04:44.800 --> 00:04:46.519
course, he was a brilliant student. He went to

00:04:46.519 --> 00:04:49.860
Harvard, graduated in 1963. But here's the key

00:04:49.860 --> 00:04:52.040
distinction. And this is so important for understanding

00:04:52.040 --> 00:04:55.579
his later work. He didn't study computer science.

00:04:55.759 --> 00:04:57.920
Because the major didn't exist yet. It barely

00:04:57.920 --> 00:05:00.470
existed as a concept. He studied physics and

00:05:00.470 --> 00:05:02.629
applied mathematics. And I think this is absolutely

00:05:02.629 --> 00:05:04.930
crucial for understanding how his mind worked.

00:05:05.089 --> 00:05:07.370
Well, computer science today can sometimes feel

00:05:07.370 --> 00:05:09.389
more like engineering. You're gluing different

00:05:09.389 --> 00:05:11.329
libraries and frameworks together to build a

00:05:11.329 --> 00:05:16.170
product. But physics and pure math. They're about

00:05:16.170 --> 00:05:18.490
discovering fundamental truths. They're about

00:05:18.490 --> 00:05:21.129
finding the cleanest, the most elegant, the simplest

00:05:21.129 --> 00:05:24.170
possible equation to describe a complex universe.

00:05:24.509 --> 00:05:26.730
And you're saying you can see that elegance in

00:05:26.730 --> 00:05:29.029
his code later on? You absolutely can. Yeah.

00:05:29.110 --> 00:05:31.290
There is a minimalism and a power to his work

00:05:31.290 --> 00:05:34.110
that is just beautiful. It's not messy. It's

00:05:34.110 --> 00:05:36.610
incredibly disciplined. He approached software

00:05:36.610 --> 00:05:38.370
not as a hacker trying to make something work

00:05:38.370 --> 00:05:40.870
for a demo, but as a mathematician trying to

00:05:40.870 --> 00:05:43.470
find the correct and most fundamental solution

00:05:43.470 --> 00:05:45.920
to a problem. OK, so speaking of his time at

00:05:45.920 --> 00:05:47.939
Harvard, there's this really weird story about

00:05:47.939 --> 00:05:49.980
his Ph .D. that I was reading about. The notes

00:05:49.980 --> 00:05:52.879
say he sort of lost his degree. How on earth

00:05:52.879 --> 00:05:55.019
do you lose a Ph .D.? This is one of those anecdotes

00:05:55.019 --> 00:05:57.420
that perfectly, perfectly encapsulates his personality.

00:05:57.860 --> 00:06:00.720
So in 1968, he's at Harvard. He writes his entire

00:06:00.720 --> 00:06:03.660
thesis. It's got this very academic title, Computational

00:06:03.660 --> 00:06:05.980
Complexity and Program Structure. Sounds impressive.

00:06:06.399 --> 00:06:09.399
It was. It was supervised by a big name. Patrick

00:06:09.399 --> 00:06:12.079
Fisher. He does all the research. He writes the

00:06:12.079 --> 00:06:14.259
draft. He submits it. He's done all the hard

00:06:14.259 --> 00:06:18.279
work. But he never officially received the degree

00:06:18.279 --> 00:06:21.660
at the time. So what happened? Did he fail his

00:06:21.660 --> 00:06:23.519
defense or something? No, no, nothing like that.

00:06:23.560 --> 00:06:25.939
He just he just didn't bother with the final

00:06:25.939 --> 00:06:28.740
administrative wrap up. The story goes that he

00:06:28.740 --> 00:06:30.339
didn't want to pay the binding fee to have a

00:06:30.339 --> 00:06:32.899
fancy copy put in the library, or he just didn't

00:06:32.899 --> 00:06:34.899
file the final piece of paperwork. He already

00:06:34.899 --> 00:06:37.439
started working at Bell Labs, and he was so completely

00:06:37.439 --> 00:06:39.819
engrossed in the actual real -world problems

00:06:39.819 --> 00:06:41.819
there that the piece of paper, the credential

00:06:41.819 --> 00:06:44.389
itself, it just didn't matter to him. that is

00:06:44.389 --> 00:06:47.029
the ultimate nerd flex i'm literally too busy

00:06:47.029 --> 00:06:49.189
inventing the future to go pick up my diploma

00:06:49.189 --> 00:06:52.230
from the registrar's office it is and for decades

00:06:52.230 --> 00:06:55.069
people thought the thesis was actually lost it

00:06:55.069 --> 00:06:57.529
became this kind of biographical mystery a holy

00:06:57.529 --> 00:07:01.850
grail then just a few years ago in 2020 the computer

00:07:01.850 --> 00:07:04.230
history museum worked with his family and finally

00:07:04.230 --> 00:07:07.209
dug it up from his home but it just shows you

00:07:07.209 --> 00:07:09.170
where his head was at he wasn't chasing titles

00:07:09.170 --> 00:07:11.529
or accolades he was chasing interesting problems

00:07:12.110 --> 00:07:14.790
And he went to chase those problems at Bell Labs.

00:07:15.250 --> 00:07:17.350
I feel like we need to pause on Bell Labs for

00:07:17.350 --> 00:07:20.250
a second. We all hear the name. But in the 1960s,

00:07:20.250 --> 00:07:22.870
what was this place really? Was it just a corporate

00:07:22.870 --> 00:07:26.310
lab? It was Mecca. It was the absolute engine

00:07:26.310 --> 00:07:29.610
room of American and really global innovation

00:07:29.610 --> 00:07:33.730
for half a century. You have to imagine a place

00:07:33.730 --> 00:07:37.490
that had the nearly unlimited funding of a massive

00:07:37.490 --> 00:07:40.470
corporation, AT &amp;T, but the intellectual freedom.

00:07:41.209 --> 00:07:43.689
of a top -tier university. That's a rare combination.

00:07:44.550 --> 00:07:46.589
Incredibly rare. You could walk down the hallway

00:07:46.589 --> 00:07:48.170
and bump into a guy who had just won the Nobel

00:07:48.170 --> 00:07:50.430
Prize for discovering the cosmic microwave background

00:07:50.430 --> 00:07:52.649
radiation and then go have lunch with the team

00:07:52.649 --> 00:07:54.689
that was inventing the laser. The transistor

00:07:54.689 --> 00:07:57.110
was invented there. Information theory was born

00:07:57.110 --> 00:07:59.689
there. It sounds like a playground for geniuses.

00:07:59.750 --> 00:08:02.230
It was. And the management style was completely

00:08:02.230 --> 00:08:04.189
unique. They basically hired the most brilliant

00:08:04.189 --> 00:08:05.990
people they could find and said, go do something

00:08:05.990 --> 00:08:08.430
interesting. We trust you. They didn't have these

00:08:08.430 --> 00:08:10.829
quarterly product targets or marketing driven

00:08:10.829 --> 00:08:13.310
deadlines in the same way companies do today.

00:08:13.670 --> 00:08:16.449
And that freedom is the only reason Richie and

00:08:16.449 --> 00:08:17.949
his colleagues were able to do what they did.

00:08:18.089 --> 00:08:21.170
So he lands at Bell Labs and he meets Ken Thompson.

00:08:21.430 --> 00:08:23.730
And this is the partnership that changes everything.

00:08:23.949 --> 00:08:26.250
Lennon -McCartney of computing. Right. And they

00:08:26.250 --> 00:08:28.149
start working on this project called Multics.

00:08:28.370 --> 00:08:31.509
What was that? OK, so Multics. The name stands

00:08:31.509 --> 00:08:34.649
for Multiplexed Information and Computing Service.

00:08:35.009 --> 00:08:37.809
This was the Apollo program of computing in the

00:08:37.809 --> 00:08:42.409
60s. A moonshot. It was this massive joint project

00:08:42.409 --> 00:08:45.649
between Bell Labs, MIT, and General Electric.

00:08:45.870 --> 00:08:48.029
What was the goal? They wanted to build a computing

00:08:48.029 --> 00:08:50.879
utility. The idea was that computing would be

00:08:50.879 --> 00:08:52.899
like electricity or water. You just plug your

00:08:52.899 --> 00:08:55.679
terminal into the wall, and this massive mainframe

00:08:55.679 --> 00:08:57.820
somewhere else would serve up computing power

00:08:57.820 --> 00:09:00.600
to hundreds of users at once. That sounds suspiciously

00:09:00.600 --> 00:09:03.659
like the cloud or timesharing. It was a proto

00:09:03.659 --> 00:09:05.659
-cloud. It was an incredibly visionary idea.

00:09:06.240 --> 00:09:08.100
But the problem was they tried to do everything

00:09:08.100 --> 00:09:10.799
at once. The system became monstrously, unbelievably

00:09:10.799 --> 00:09:14.059
complex. It was slow. It cost a fortune to run.

00:09:14.240 --> 00:09:16.500
It was a classic case of design by committee

00:09:16.500 --> 00:09:19.299
on a grand scale. And Bell Labs, despite having

00:09:19.299 --> 00:09:21.360
deep pockets, eventually got sick of burning

00:09:21.360 --> 00:09:24.720
money on it. They pulled the plug. In 1969, they

00:09:24.720 --> 00:09:26.620
officially withdrew from the Multics project.

00:09:27.139 --> 00:09:30.480
They just realized it was a bottomless pit. So

00:09:30.480 --> 00:09:32.740
suddenly, Richie and Ken Thompson, who had been

00:09:32.740 --> 00:09:35.649
living in this world for years, were left. With

00:09:35.649 --> 00:09:39.289
nothing, no project, no massive mainframe to

00:09:39.289 --> 00:09:41.509
play with. This seems like the moment where most

00:09:41.509 --> 00:09:43.889
people in a big company would just, you know,

00:09:43.889 --> 00:09:45.870
dust themselves off and go find another corporate

00:09:45.870 --> 00:09:48.309
assignment. OK, boss, tell me what to work on

00:09:48.309 --> 00:09:51.190
next. But they didn't. They were frustrated.

00:09:51.570 --> 00:09:53.850
They had tasted what an operating system could

00:09:53.850 --> 00:09:55.529
be, something interactive, something that let

00:09:55.529 --> 00:09:58.350
multiple people work at once. And they did not

00:09:58.350 --> 00:10:00.309
want to go back to the old way of doing things.

00:10:00.429 --> 00:10:02.450
And what was that old way? Remind us what they

00:10:02.450 --> 00:10:04.230
were trying to avoid. The alternative was called

00:10:04.230 --> 00:10:08.129
batch processing. And it was soul crushing. Imagine

00:10:08.129 --> 00:10:10.289
you want to run a program. You can't just type

00:10:10.289 --> 00:10:12.690
it. You have to punch your code onto a stack

00:10:12.690 --> 00:10:15.470
of physical cards. Like with holes in them? Exactly.

00:10:15.649 --> 00:10:18.230
A stack of punch cards. You take your stack of

00:10:18.230 --> 00:10:21.009
cards to an operator, a guy in a white lab coat

00:10:21.009 --> 00:10:23.970
behind a big glass wall. You hand them over.

00:10:24.460 --> 00:10:26.000
He puts them in a queue with everyone else's

00:10:26.000 --> 00:10:28.340
jobs. You come back six or eight hours later,

00:10:28.460 --> 00:10:30.899
and he hands you a printout that says, error

00:10:30.899 --> 00:10:33.940
on line three. That sounds like actual hell.

00:10:34.080 --> 00:10:37.100
The feedback loop is hours long. It was an incredible

00:10:37.100 --> 00:10:39.779
amount of friction. Multics, for all its flaws,

00:10:40.059 --> 00:10:42.580
was supposed to be interactive. You type a command,

00:10:42.820 --> 00:10:45.919
the computer responds instantly. So when Multics

00:10:45.919 --> 00:10:48.379
was canceled, Thompson and Ritchie were desperate

00:10:48.379 --> 00:10:51.299
to keep that interactive environment alive. And

00:10:51.299 --> 00:10:53.500
Ken Thompson found an old, discarded computer

00:10:53.500 --> 00:10:57.139
in a corner of the lab, a PDP -7. A discarded

00:10:57.139 --> 00:10:59.659
computer, not the latest and greatest. Far from

00:10:59.659 --> 00:11:01.299
it. It was already obsolete, sitting unused.

00:11:01.740 --> 00:11:04.500
It was a mini -computer, which in 1969 meant

00:11:04.500 --> 00:11:06.299
it was only the size of a few filing cabinets,

00:11:06.480 --> 00:11:09.440
not an entire room. But it had terrible memory,

00:11:09.580 --> 00:11:12.240
very little processing power. The key thing,

00:11:12.240 --> 00:11:14.659
though, was that it was theirs. Nobody was watching

00:11:14.659 --> 00:11:16.820
them. No management oversight. So they start

00:11:16.820 --> 00:11:18.639
building their own operating system. Was it just

00:11:18.639 --> 00:11:20.820
for fun? Was there a business case? Not at all.

00:11:20.879 --> 00:11:24.500
It was for utility, born of necessity. Constance

00:11:24.500 --> 00:11:26.639
had written this game he liked called Space Travel,

00:11:26.820 --> 00:11:29.399
which simulated the physics of flying through

00:11:29.399 --> 00:11:31.120
the solar system. Our video game. Basically,

00:11:31.220 --> 00:11:33.919
yeah. And running it on the other available systems

00:11:33.919 --> 00:11:36.799
was expensive and clunky. So he decided to port

00:11:36.799 --> 00:11:39.669
the game to the little PDP -7. But to do that

00:11:39.669 --> 00:11:42.809
effectively, the machine needed a basic operating

00:11:42.809 --> 00:11:46.049
system, a file system. So Thompson starts writing

00:11:46.049 --> 00:11:48.590
one and Ritchie joins in. They started stripping

00:11:48.590 --> 00:11:51.090
away all the insane complexity of multics and

00:11:51.090 --> 00:11:53.850
keeping only the clean, simple ideas. And this

00:11:53.850 --> 00:11:55.389
is where the name comes from, right? This is

00:11:55.389 --> 00:11:57.950
a great story. It is. Their colleague, Brian

00:11:57.950 --> 00:11:59.889
Kernighan, who we mentioned earlier, joked that

00:11:59.889 --> 00:12:02.820
since the bloated multics was multiplexed. meaning

00:12:02.820 --> 00:12:05.620
many things at once. This new, scrappy, minimalist

00:12:05.620 --> 00:12:07.840
system was the opposite. It was Uniplex. It did

00:12:07.840 --> 00:12:10.759
one thing. Single tasking system. Right. So he

00:12:10.759 --> 00:12:13.840
called it Unix, U -N -I -C -S, as a pun. And

00:12:13.840 --> 00:12:16.519
that eventually got stylized as U -N -I -X. The

00:12:16.519 --> 00:12:18.740
most important piece of software in the world

00:12:18.740 --> 00:12:22.639
started as a dad joke. A nerd pun, yes. But the

00:12:22.639 --> 00:12:25.700
name perfectly reflected the philosophy. And

00:12:25.700 --> 00:12:27.639
this is where we really need to dig in. Because

00:12:27.639 --> 00:12:31.340
the Unix philosophy is the idea that truly changed

00:12:31.340 --> 00:12:34.350
the world. Multics tried to be a Swiss army knife

00:12:34.350 --> 00:12:36.629
with a thousand blades that was so heavy you

00:12:36.629 --> 00:12:39.710
couldn't lift it. Unix was a kitchen drawer full

00:12:39.710 --> 00:12:42.629
of individual, really sharp knives. Okay, break

00:12:42.629 --> 00:12:44.490
that analogy down for me. What does that mean

00:12:44.490 --> 00:12:47.110
in practice? The Unix philosophy, in a nutshell,

00:12:47.269 --> 00:12:50.509
is this. First, write programs that do one thing

00:12:50.509 --> 00:12:52.929
and do it well. Second, write programs that can

00:12:52.929 --> 00:12:56.039
work together. Third... write programs to handle

00:12:56.039 --> 00:12:58.840
text streams because that is a universal interface.

00:12:59.179 --> 00:13:00.899
Can you give me a real -world example of what

00:13:00.899 --> 00:13:02.799
that looks like? Absolutely. Let's say you have

00:13:02.799 --> 00:13:05.440
a huge text file, maybe a whole book, and you

00:13:05.440 --> 00:13:07.240
want to find every unique word in that book that

00:13:07.240 --> 00:13:09.899
contains the letter Z, sort them alphabetically,

00:13:09.899 --> 00:13:12.159
and then count how many there are. Okay, a pretty

00:13:12.159 --> 00:13:14.799
specific task. In the old way of thinking, you'd

00:13:14.799 --> 00:13:17.519
have to write a single, massive, complex program

00:13:17.519 --> 00:13:20.139
from scratch to do specifically that one task.

00:13:20.750 --> 00:13:23.769
In the Unix way, you use small tools and connect

00:13:23.769 --> 00:13:26.269
them with a concept called a pipe. You take a

00:13:26.269 --> 00:13:28.909
small program that just reads text. You pipe

00:13:28.909 --> 00:13:31.250
its output to another small program that just

00:13:31.250 --> 00:13:33.990
finds words matching a pattern. You pipe that

00:13:33.990 --> 00:13:36.149
output to a program that just sorts lines of

00:13:36.149 --> 00:13:38.570
text. You pipe that to a program that removes

00:13:38.570 --> 00:13:41.870
duplicates. And finally, you pipe that to a program

00:13:41.870 --> 00:13:44.649
that just counts lines. It's like a digital assembly

00:13:44.649 --> 00:13:47.830
line. Each station does one simple job. Precisely.

00:13:48.039 --> 00:13:50.360
You chain these small, simple, single -purpose

00:13:50.360 --> 00:13:52.840
tools together to accomplish a complex task.

00:13:53.500 --> 00:13:56.259
This concept of the pipe, represented by a vertical

00:13:56.259 --> 00:13:58.960
bar on the command line, was utterly revolutionary.

00:13:59.299 --> 00:14:01.379
It meant you didn't have to reinvent the wheel

00:14:01.379 --> 00:14:03.899
every time you had a new problem. You just rearranged

00:14:03.899 --> 00:14:05.779
the Lego blocks you already had. And Richie's

00:14:05.779 --> 00:14:09.600
role in this was what? He was crucial. While

00:14:09.600 --> 00:14:11.360
Thompson wrote a lot of the initial kernel and

00:14:11.360 --> 00:14:13.639
commands, Ritchie was deeply involved in the

00:14:13.639 --> 00:14:16.480
design philosophy. And very importantly, he was

00:14:16.480 --> 00:14:18.580
the primary designer of the Unix file system.

00:14:18.820 --> 00:14:21.179
What was special about the file system? The big

00:14:21.179 --> 00:14:24.419
idea was everything is a file. Your document

00:14:24.419 --> 00:14:27.500
is a file, obviously. But in Unix, your keyboard

00:14:27.500 --> 00:14:30.019
is also treated like a file. The screen you're

00:14:30.019 --> 00:14:32.840
typing on is a file. The printer is a file. Even

00:14:32.840 --> 00:14:35.200
the processes running on the system are represented

00:14:35.200 --> 00:14:38.019
as files. This incredible abstraction made the

00:14:38.019 --> 00:14:41.860
system unbelievably simple and flexible. You

00:14:41.860 --> 00:14:44.000
could use the same tools to read from a document

00:14:44.000 --> 00:14:46.200
as you did to read from the keyboard. Okay, so

00:14:46.200 --> 00:14:48.820
they have this cool, elegant OS running on their

00:14:48.820 --> 00:14:52.539
junker PDP -7 in a closet in New Jersey. But

00:14:52.539 --> 00:14:54.480
that's a long way from running the entire world.

00:14:54.639 --> 00:14:57.059
How does it escape the lab? That is the next

00:14:57.059 --> 00:15:00.039
great revolution, porting. See, back then, if

00:15:00.039 --> 00:15:02.139
you wrote software for a specific computer, like

00:15:02.139 --> 00:15:05.200
a PDP -7, it only ran on a PDP -7. It was completely

00:15:05.200 --> 00:15:07.139
locked to the hardware. The code was written

00:15:07.139 --> 00:15:09.039
in what's called assembly language, which is

00:15:09.039 --> 00:15:11.139
tied directly to the wiring and instruction set

00:15:11.139 --> 00:15:13.600
of that specific machine. So if Bell Labs bought

00:15:13.600 --> 00:15:16.139
a new, better computer a year later, all their

00:15:16.139 --> 00:15:18.980
Unix work would be trash. Basically. You'd have

00:15:18.980 --> 00:15:20.980
to start over and rewrite the whole thing from

00:15:20.980 --> 00:15:23.700
scratch for the new machine's architecture. It

00:15:23.700 --> 00:15:27.159
was a huge problem. Richie and Thompson did something

00:15:27.159 --> 00:15:30.580
that was considered heretical at the time. They

00:15:30.580 --> 00:15:32.399
decided they wanted to move Unix to a newer,

00:15:32.440 --> 00:15:35.399
more powerful machine, the PDP -11. But to do

00:15:35.399 --> 00:15:37.700
that effectively, they knew they needed a way

00:15:37.700 --> 00:15:40.360
to write the operating system in a language that

00:15:40.360 --> 00:15:42.899
wasn't tied to any one piece of hardware. And

00:15:42.899 --> 00:15:45.120
this is the bridge to the next huge topic. They

00:15:45.120 --> 00:15:47.840
needed a new language. Yes. This is the moment.

00:15:47.899 --> 00:15:50.879
To make Unix universal. To make it so it could

00:15:50.879 --> 00:15:53.000
live on any computer, past, present, or future.

00:15:53.789 --> 00:15:55.909
Dennis Ritchie had to invent the C programming

00:15:55.909 --> 00:15:58.090
language. All right. This is the part I've been

00:15:58.090 --> 00:16:00.149
dreading a little bit because I'm not a coder.

00:16:00.230 --> 00:16:03.789
I hear C and my brain just sees semicolons and

00:16:03.789 --> 00:16:06.309
error messages. How do we explain the importance

00:16:06.309 --> 00:16:08.350
of C to someone who has never written a line

00:16:08.350 --> 00:16:10.529
of code? Let's stick with analogies. Yeah. We

00:16:10.529 --> 00:16:12.289
talked about assembly language before. Imagine

00:16:12.289 --> 00:16:14.330
you want to build a simple brick wall. Assembly

00:16:14.330 --> 00:16:16.289
language is like giving instructions to a robot

00:16:16.289 --> 00:16:18.990
where you have to specify the movement of every

00:16:18.990 --> 00:16:22.139
single muscle fiber in its body. Contract bicep

00:16:22.139 --> 00:16:25.639
by 20%. Rotate wrist exactly four degrees. Grip

00:16:25.639 --> 00:16:28.919
brick with 10 .2 newtons of force. Extend arm.

00:16:29.200 --> 00:16:31.879
That sounds absolutely exhausting. And if you

00:16:31.879 --> 00:16:34.039
get one muscle twitch wrong, you drop the brick

00:16:34.039 --> 00:16:36.840
and the whole thing fails. Precisely. And even

00:16:36.840 --> 00:16:39.019
worse, if you get a new different model of robot,

00:16:39.259 --> 00:16:41.360
none of those muscle instructions make any sense

00:16:41.360 --> 00:16:43.700
anymore because the new robot has different arms

00:16:43.700 --> 00:16:46.779
and motors. That's assembly. It's incredibly

00:16:46.779 --> 00:16:49.299
fast and powerful if you get it right, but it's

00:16:49.299 --> 00:16:52.139
tedious, error -prone, and completely tied to

00:16:52.139 --> 00:16:54.580
one specific machine. So what's the opposite

00:16:54.580 --> 00:16:57.259
of that? What's a high -level language? A high

00:16:57.259 --> 00:16:59.460
-level language like Python or JavaScript today

00:16:59.460 --> 00:17:02.259
is like telling a human contractor, build me

00:17:02.259 --> 00:17:04.619
a four -foot -high brick wall right there. The

00:17:04.619 --> 00:17:06.599
contractor handles all the details of muscles

00:17:06.599 --> 00:17:09.400
and mortar. It's easy for you, the boss, to give

00:17:09.400 --> 00:17:11.859
the instruction, but you lose fine -grained control.

00:17:12.329 --> 00:17:14.269
Maybe the contractor builds it a bit slower than

00:17:14.269 --> 00:17:16.809
you'd like or uses a bit too much mortar. It's

00:17:16.809 --> 00:17:19.309
abstract and easy, but less efficient. Okay,

00:17:19.369 --> 00:17:21.809
so we have the micromanaging robot and the independent

00:17:21.809 --> 00:17:25.569
contractor. Where does C fit in this picture?

00:17:25.869 --> 00:17:28.769
C is the perfect middle ground. It's like you,

00:17:28.970 --> 00:17:31.730
the human, are wearing a powered exoskeleton.

00:17:32.470 --> 00:17:34.809
You are still moving the bricks yourself. You

00:17:34.809 --> 00:17:36.990
have all that direct control and speed and power,

00:17:37.089 --> 00:17:39.710
but the suit handles the tedious micromuscle

00:17:39.710 --> 00:17:41.730
movements for you. It lets you think in terms

00:17:41.730 --> 00:17:44.230
of pick up brick and place brick, and it translates

00:17:44.230 --> 00:17:46.490
those concepts into the machine's native instructions

00:17:46.490 --> 00:17:49.789
with incredible efficiency. So it's powerful

00:17:49.789 --> 00:17:52.769
and fast like the robot, but readable and logical

00:17:52.769 --> 00:17:55.190
like a human instruction. That's the magic of

00:17:55.190 --> 00:17:58.119
it. Richie created a language that was close

00:17:58.119 --> 00:18:00.400
to the metal, as programmers say. It allowed

00:18:00.400 --> 00:18:02.779
you to do things that were previously only possible

00:18:02.779 --> 00:18:05.500
in assembly, like managing memory addresses directly,

00:18:05.740 --> 00:18:08.019
which is risky but very powerful, while still

00:18:08.019 --> 00:18:10.200
using logical words and structures that humans

00:18:10.200 --> 00:18:13.180
can understand, like if, then, while, and for.

00:18:13.480 --> 00:18:15.680
You mentioned memory addresses. Why is that so

00:18:15.680 --> 00:18:18.599
important? I mean, today, I just save a file.

00:18:18.660 --> 00:18:20.039
I don't have to think about where on the hard

00:18:20.039 --> 00:18:23.000
drive it goes. In the 1970s, you absolutely had

00:18:23.000 --> 00:18:26.200
to think about it. Memory was scarce and incredibly

00:18:26.200 --> 00:18:30.079
expensive. A core innovation in C was the concept

00:18:30.079 --> 00:18:33.319
of pointers. A pointer is basically just a variable

00:18:33.319 --> 00:18:36.220
that holds a memory address. It allowed a programmer

00:18:36.220 --> 00:18:39.700
to say, hey, don't copy this entire massive encyclopedia

00:18:39.700 --> 00:18:41.940
from one part of memory to another new spot.

00:18:42.180 --> 00:18:44.460
Instead, just create a little note that points

00:18:44.460 --> 00:18:46.279
to the encyclopedia that's already on the shelf

00:18:46.279 --> 00:18:48.579
over there. So it saved a ton of space and time.

00:18:48.700 --> 00:18:51.339
A massive amount. It made programs incredibly

00:18:51.339 --> 00:18:54.220
fast and efficient. But it also made them dangerous.

00:18:54.539 --> 00:18:57.200
How so? Because if you're not careful, your pointer

00:18:57.200 --> 00:19:00.019
could point to the wrong shelf. Or you could

00:19:00.019 --> 00:19:02.079
change the data on the shelf when another part

00:19:02.079 --> 00:19:03.880
of the program was still expecting the old data

00:19:03.880 --> 00:19:06.279
to be there. Or you could forget to clean up

00:19:06.279 --> 00:19:08.059
the shelf when you're done, leading to memory

00:19:08.059 --> 00:19:11.059
leaks. This is the great trade -off of C5 -3.

00:19:12.160 --> 00:19:16.099
Richie gave programmers a chainsaw. Yes. It's

00:19:16.099 --> 00:19:18.559
an unbelievably powerful and efficient tool.

00:19:18.759 --> 00:19:21.690
You can build a log cabin in record time. But

00:19:21.690 --> 00:19:23.869
if you're careless for a split second, you can

00:19:23.869 --> 00:19:27.089
cut your own leg off. Many modern languages have

00:19:27.089 --> 00:19:30.029
safety guards on the chainsaw. C does not. It

00:19:30.029 --> 00:19:32.029
assumes you're an expert and trusts you with

00:19:32.029 --> 00:19:34.349
the full power of the machine. And this language,

00:19:34.609 --> 00:19:37.630
C, was what allowed them to finally move Unix

00:19:37.630 --> 00:19:40.789
off that one machine. This was the absolute game

00:19:40.789 --> 00:19:43.490
changer. They rewrote almost the entire Unix

00:19:43.490 --> 00:19:46.750
kernel and all its utilities in C. This was unheard

00:19:46.750 --> 00:19:48.869
of. Operating systems were supposed to be written

00:19:48.869 --> 00:19:52.420
in assembly. But by rewriting it in C, the operating

00:19:52.420 --> 00:19:55.099
system was suddenly no longer a PDK -11 thing.

00:19:55.240 --> 00:19:57.319
It was a software thing. It was abstract. So

00:19:57.319 --> 00:19:59.660
if you wanted to run Unix on a brand new supercomputer

00:19:59.660 --> 00:20:01.619
from a different company. You just had to do

00:20:01.619 --> 00:20:04.420
one relatively small job. Write a C compiler

00:20:04.420 --> 00:20:07.500
for that new machine. A C compiler is a program

00:20:07.500 --> 00:20:10.240
that translates C code into that specific machine's

00:20:10.240 --> 00:20:12.500
native language. Once you had that compiler,

00:20:12.839 --> 00:20:15.079
the entire Unix operating system, millions of

00:20:15.079 --> 00:20:17.589
lines of code, would just compile and run. This

00:20:17.589 --> 00:20:19.630
broke the monopoly that hardware manufacturers

00:20:19.630 --> 00:20:22.430
had on software. It completely destroyed it.

00:20:22.450 --> 00:20:24.549
It decoupled the software from the hardware.

00:20:24.710 --> 00:20:27.430
It meant the software was now portable, independent

00:20:27.430 --> 00:20:30.869
of the machine it ran on. In a sense, it commoditized

00:20:30.869 --> 00:20:33.190
the hardware. The value shifted from the box

00:20:33.190 --> 00:20:35.750
to the code running inside it. This brings us

00:20:35.750 --> 00:20:38.450
to the book. When I was preparing for this, I

00:20:38.450 --> 00:20:40.990
was told I absolutely have to ask about K &amp;R.

00:20:41.170 --> 00:20:45.339
Ah, yes. The white book. The C Programming Language,

00:20:45.640 --> 00:20:48.440
published in 1978, written by Brian Kernaghan

00:20:48.440 --> 00:20:51.579
and Dennis Ritchie. In the industry to this day,

00:20:51.680 --> 00:20:54.259
it is known simply as K &amp;R. What is it, just

00:20:54.259 --> 00:20:56.180
a textbook, a manual? It's so much more than

00:20:56.180 --> 00:20:58.440
that. It is a masterpiece of technical writing.

00:20:59.400 --> 00:21:01.680
Computer manuals then and now are like reading

00:21:01.680 --> 00:21:04.279
a tax code. They are thick, dense, and impossible

00:21:04.279 --> 00:21:07.319
to get through. K &amp;R was thin. It was concise.

00:21:07.539 --> 00:21:10.299
It was beautifully, clearly written. It didn't

00:21:10.299 --> 00:21:12.039
just teach you the syntax of the language. It

00:21:12.039 --> 00:21:13.940
taught you the style and the philosophy. It set

00:21:13.940 --> 00:21:16.440
the vibe for the entire C programming community.

00:21:16.900 --> 00:21:19.519
It absolutely did. It preached clarity over cleverness.

00:21:20.720 --> 00:21:23.210
Simplicity. Don't write tricky code. Write clear

00:21:23.210 --> 00:21:26.049
code. That book is still on the shelves of professional

00:21:26.049 --> 00:21:28.829
software engineers today, almost 50 years later.

00:21:29.210 --> 00:21:31.529
It's a classic for a reason. So now we have the

00:21:31.529 --> 00:21:34.029
two pillars in place. We have the OS, Unix, and

00:21:34.029 --> 00:21:37.490
the language C. Now let's fast forward. We need

00:21:37.490 --> 00:21:40.190
to connect the dots. Why does the person listening

00:21:40.190 --> 00:21:43.210
to this on an iPhone 16 or an Android phone owe

00:21:43.210 --> 00:21:45.549
Dennis Ritchie a thank you? Okay, let's trace

00:21:45.549 --> 00:21:48.200
the family tree. And it's actually shocking how

00:21:48.200 --> 00:21:50.160
direct the lineage is. Let's start with Unix.

00:21:50.500 --> 00:21:52.519
Richie himself said in an interview late in his

00:21:52.519 --> 00:21:55.240
life that he views Linux as a direct and healthy

00:21:55.240 --> 00:21:58.559
continuation of Unix ideas. And Linux today is

00:21:58.559 --> 00:22:01.220
everywhere. Linux runs the Internet. The vast

00:22:01.220 --> 00:22:03.259
majority of servers that make up the cloud, Amazon,

00:22:03.480 --> 00:22:06.619
AWS, Google Cloud, Microsoft, Azure, they all

00:22:06.619 --> 00:22:08.039
run on Linux. So everything you stream a movie

00:22:08.039 --> 00:22:10.599
on Netflix, do a Google search, use an AI chatbot,

00:22:10.759 --> 00:22:13.579
you're using a system that is, for all intents

00:22:13.579 --> 00:22:15.920
and purposes, a clone of Unix. What about the

00:22:15.920 --> 00:22:17.319
phone in my pocket? Let's start with Android.

00:22:17.519 --> 00:22:20.140
Android uses the Linux kernel. Hold on. Define

00:22:20.140 --> 00:22:22.200
kernel for us. I hear that word all the time,

00:22:22.220 --> 00:22:24.279
but what is it really? The kernel is the core.

00:22:24.759 --> 00:22:27.019
It's the absolute heart of the operating system.

00:22:27.160 --> 00:22:30.099
It's the first piece of software that loads when

00:22:30.099 --> 00:22:32.579
the computer boots up. And it's the piece that

00:22:32.579 --> 00:22:34.900
talks directly to the hardware. It manages the

00:22:34.900 --> 00:22:37.740
CPU, the memory, the battery, the radios, the

00:22:37.740 --> 00:22:40.059
interface you see, the buttons and icons you

00:22:40.059 --> 00:22:42.920
click. That's like the body of the car. The kernel

00:22:42.920 --> 00:22:45.579
is the engine. So Android's engine is Linux.

00:22:45.779 --> 00:22:47.900
Which is a Unix clone. So every Android phone

00:22:47.900 --> 00:22:50.440
is a Unix machine. Okay, what about Apple? Apple

00:22:50.440 --> 00:22:52.640
is famous for being the odd one out. They always

00:22:52.640 --> 00:22:54.140
like to do their own thing, the think different

00:22:54.140 --> 00:22:56.680
mantra. Not here they don't. This is the ultimate

00:22:56.680 --> 00:22:59.839
irony. Steve Jobs' greatest software achievement,

00:23:00.079 --> 00:23:03.700
macOS and by extension iOS, which runs the iPhone

00:23:03.700 --> 00:23:06.519
and iPad, is built directly on top of a system

00:23:06.519 --> 00:23:10.220
called BSD. And BSD is? Berkeley Software Distribution.

00:23:10.319 --> 00:23:13.200
And what is BSD? It's a version of Unix that

00:23:13.200 --> 00:23:14.579
was developed at the University of California,

00:23:14.799 --> 00:23:17.160
Berkeley in the 1970s, based on the original

00:23:17.160 --> 00:23:19.380
source code from Bell Labs. So you're telling

00:23:19.380 --> 00:23:22.119
me when I slide to unlock my iPhone deep, deep

00:23:22.119 --> 00:23:24.859
down in the basement of that software? It's Dennis

00:23:24.859 --> 00:23:28.160
Ritchie's logic. In fact, if you open the Terminal

00:23:28.160 --> 00:23:30.779
app on any Mac today, you are dropped into a

00:23:30.779 --> 00:23:33.880
Unix command line. You can type commands like

00:23:33.880 --> 00:23:36.839
Ls to list files or grep to search for text,

00:23:37.000 --> 00:23:39.779
the very same tools with the very same names

00:23:39.779 --> 00:23:42.180
that Ritchie and Thompson designed on a PDP -11

00:23:42.180 --> 00:23:45.460
in 1971. That is just wild. It's like finding

00:23:45.460 --> 00:23:47.680
out that the engine in a brand new Tesla is actually

00:23:47.680 --> 00:23:50.299
a steam engine from the 1800s, but, you know,

00:23:50.339 --> 00:23:52.640
in a good way. It's more like finding out that

00:23:52.640 --> 00:23:54.759
the laws of physics that govern the Tesla's electric

00:23:54.759 --> 00:23:57.480
motor are the same ones Newton discovered 300

00:23:57.480 --> 00:24:00.160
years ago. Ritchie didn't just invent a product.

00:24:00.279 --> 00:24:02.519
He discovered and defined the fundamental physics

00:24:02.519 --> 00:24:04.420
of how modern software should be structured.

00:24:04.940 --> 00:24:06.849
And then there's the other side of it. The C

00:24:06.849 --> 00:24:09.769
family tree. Right. Because C itself isn't really

00:24:09.769 --> 00:24:12.150
used for writing most iPhone apps anymore, is

00:24:12.150 --> 00:24:14.529
it? Programmers use newer languages like Swift.

00:24:14.809 --> 00:24:17.509
You write the app in Swift, yes. But the Swift

00:24:17.509 --> 00:24:20.950
compiler, the tool that takes your human -readable

00:24:20.950 --> 00:24:23.109
Swift code and turns it into an app the iPhone

00:24:23.109 --> 00:24:27.049
can actually run, is written in C++ Mark. And

00:24:27.049 --> 00:24:29.470
what is C++? It's literally just C with a bunch

00:24:29.470 --> 00:24:31.490
of extra features bolted on. It was originally

00:24:31.490 --> 00:24:35.240
called C with glasses. So C is building the tools

00:24:35.240 --> 00:24:37.160
that build the apps. It's the foundation of the

00:24:37.160 --> 00:24:39.900
whole tool chain. What about Java, the language

00:24:39.900 --> 00:24:42.319
that runs huge corporate systems and was the

00:24:42.319 --> 00:24:45.059
original language for Android apps? Its syntax

00:24:45.059 --> 00:24:47.680
is based directly on C JavaScript, the language

00:24:47.680 --> 00:24:49.980
that makes the entire web interactive. C style

00:24:49.980 --> 00:24:52.740
syntax. Python, the language of data science

00:24:52.740 --> 00:24:55.440
and AI. The main Python interpreter, the program

00:24:55.440 --> 00:24:57.779
that actually runs Python code, is written in

00:24:57.779 --> 00:25:00.599
C. So it really is the DNA. It is the absolute

00:25:00.599 --> 00:25:03.339
genetic ancestor. Every single major programming

00:25:03.339 --> 00:25:05.920
language in use today is either a direct descendant

00:25:05.920 --> 00:25:08.779
of C, is heavily influenced by C's syntax, or

00:25:08.779 --> 00:25:18.079
is built using tools written in C. I remember

00:25:18.079 --> 00:25:21.279
reading one commentator who said, Richie co -invented

00:25:21.279 --> 00:25:24.380
the DNA of effectively every single computer

00:25:24.380 --> 00:25:27.859
software product we use. I honestly thought that

00:25:27.859 --> 00:25:29.859
was an exaggeration when I first read it. It's

00:25:29.859 --> 00:25:31.890
not. It's probably an understatement. Yeah. Doug

00:25:31.890 --> 00:25:33.769
McElroy, one of their brilliant colleagues at

00:25:33.769 --> 00:25:36.390
Bell Labs, put it best. He said the names of

00:25:36.390 --> 00:25:38.410
Ritchie and Thompson may safely be assumed be

00:25:38.410 --> 00:25:41.369
attached to almost everything not otherwise attributed.

00:25:41.750 --> 00:25:44.029
Meaning if you look at a piece of foundational

00:25:44.029 --> 00:25:46.630
software and you don't know who built it, it

00:25:46.630 --> 00:25:48.670
was probably them. That's the gist of it. Their

00:25:48.670 --> 00:25:51.130
influence is the default. I want to pivot a bit

00:25:51.130 --> 00:25:53.569
to the man himself, because usually when you

00:25:53.569 --> 00:25:56.440
have someone this influential. Steve Jobs, Bill

00:25:56.440 --> 00:25:59.140
Gates, and Elon Musk, they are these massive,

00:25:59.220 --> 00:26:01.740
complicated, often difficult personalities. They

00:26:01.740 --> 00:26:03.259
seek out the spotlight. They want the credit.

00:26:03.599 --> 00:26:07.220
Dennis Ritchie seems different. He was the absolute

00:26:07.220 --> 00:26:10.640
antithesis of the modern tech bro CEO. He was

00:26:10.640 --> 00:26:13.480
quiet. He was famously humble. He lived alone.

00:26:13.740 --> 00:26:16.240
He wasn't trying to disrupt industries or make

00:26:16.240 --> 00:26:18.480
billions of dollars or become a celebrity. He

00:26:18.480 --> 00:26:20.759
was a scientist. He just wanted to build better

00:26:20.759 --> 00:26:23.289
tools for himself and his friends. There's this

00:26:23.289 --> 00:26:25.589
story about the NSA that I think is just incredible.

00:26:25.849 --> 00:26:27.589
It feels like it's pulled from a spy thriller

00:26:27.589 --> 00:26:30.869
for a second. It really does. So in the 1970s,

00:26:30.869 --> 00:26:33.730
Ritchie was also dabbling in cryptography, because

00:26:33.730 --> 00:26:36.250
of course he was. He was working with two colleagues,

00:26:36.490 --> 00:26:39.329
James Reeds and Robert Morris, on what's called

00:26:39.329 --> 00:26:42.329
a ciphertext -only attack. Which means cracking

00:26:42.329 --> 00:26:44.390
a secret code without having the decryption key,

00:26:44.529 --> 00:26:46.849
right? Exactly. You just have the scramble messages.

00:26:47.250 --> 00:26:51.130
And they were targeting the US M209 cipher machine.

00:26:51.740 --> 00:26:54.079
This was a mechanical encryption device used

00:26:54.079 --> 00:26:57.000
by the U .S. military during World War II and

00:26:57.000 --> 00:26:59.119
the Korean War. It was supposed to be secure.

00:26:59.720 --> 00:27:02.140
Well, Ritchie and his team wrote a program that

00:27:02.140 --> 00:27:04.140
could crack it. They figured out that if they

00:27:04.140 --> 00:27:07.880
had about 2 ,000, 2 ,500 letters of coded text,

00:27:08.059 --> 00:27:10.660
they could solve it. That's a huge deal. They

00:27:10.660 --> 00:27:12.940
basically proved a piece of U .S. military encryption

00:27:12.940 --> 00:27:15.519
hardware was fundamentally broken. It was a massive

00:27:15.519 --> 00:27:17.799
discovery. So they wrote a formal paper on it.

00:27:17.839 --> 00:27:19.299
They were getting ready to publish it in an academic

00:27:19.299 --> 00:27:22.450
journal. The NSA, the National Security Agency,

00:27:22.569 --> 00:27:24.750
came knocking on Bell Labs' door. The actual

00:27:24.750 --> 00:27:27.230
men in black. Pretty much. They came and they

00:27:27.230 --> 00:27:29.450
had a quiet conversation with Ritchie and Bell

00:27:29.450 --> 00:27:32.390
Labs management. And they said, look, we know

00:27:32.390 --> 00:27:35.410
you cracked it. We're not surprised. But you

00:27:35.410 --> 00:27:39.210
cannot publish this paper. And their reason was?

00:27:39.470 --> 00:27:41.869
Their reason was that several foreign governments,

00:27:42.109 --> 00:27:44.190
some of them adversaries of the United States,

00:27:44.369 --> 00:27:47.950
were still using that same M209 machine because

00:27:47.950 --> 00:27:50.200
they thought it was secure. The NSA was happily

00:27:50.200 --> 00:27:52.420
reading their mail. If Ritchie published his

00:27:52.420 --> 00:27:54.839
paper, these governments would find out their

00:27:54.839 --> 00:27:57.279
codes were broken, they'd switch to a new system,

00:27:57.400 --> 00:27:59.700
and a valuable source of intelligence would go

00:27:59.700 --> 00:28:02.539
dark. Wow. Okay, so this is a real ethical dilemma.

00:28:02.680 --> 00:28:04.779
This is the moment where the modern information

00:28:04.779 --> 00:28:07.680
wants to be free. Hacktivists would just dump

00:28:07.680 --> 00:28:09.839
the paper on the Internet anyway. Consequences

00:28:09.839 --> 00:28:11.980
be damned. Right. You can imagine that happening

00:28:11.980 --> 00:28:14.099
today. But what did Dennis Ritchie do? He just

00:28:14.099 --> 00:28:16.220
said, okay, and he put the paper in a drawer.

00:28:17.319 --> 00:28:20.119
And it stayed there, unpublished, for decades.

00:28:20.460 --> 00:28:22.740
He didn't fight it? He didn't argue for academic

00:28:22.740 --> 00:28:26.740
freedom? No. He just complied. He wasn't an anarchist.

00:28:26.759 --> 00:28:29.279
He was a scientist. But he was also a pragmatist.

00:28:29.319 --> 00:28:31.859
He didn't have this massive ego that needed the

00:28:31.859 --> 00:28:35.539
fame of being the guy who beat the NSA. The intellectual

00:28:35.539 --> 00:28:38.059
challenge was solved. That was enough for him.

00:28:38.490 --> 00:28:41.250
So he just went back to work on Unix. That humility

00:28:41.250 --> 00:28:43.690
seems to be the central theme of his life. He

00:28:43.690 --> 00:28:46.470
wins the Turing Award in 1983, which is... The

00:28:46.470 --> 00:28:49.390
Nobel Prize of Computing. The highest honor.

00:28:49.630 --> 00:28:51.789
He gets the National Medal of Technology from

00:28:51.789 --> 00:28:54.609
President Bill Clinton in 1998. The citation

00:28:54.609 --> 00:28:57.890
says he stimulated the growth of an entire industry.

00:28:58.599 --> 00:29:00.839
But he never really cashed in, did he? Never.

00:29:01.039 --> 00:29:03.920
He stayed at Bell Labs, which later became Lucent

00:29:03.920 --> 00:29:06.900
his entire career. He was managing a small research

00:29:06.900 --> 00:29:08.519
group towards the end, but he was still writing

00:29:08.519 --> 00:29:10.900
code. He wasn't on the board of directors. He

00:29:10.900 --> 00:29:12.700
wasn't doing a book tour or giving TED Talks.

00:29:12.740 --> 00:29:14.640
There's a visual description of him that I love

00:29:14.640 --> 00:29:17.460
from his colleagues. He was often just seen walking

00:29:17.460 --> 00:29:19.619
the halls in a simple striped sweater, sometimes

00:29:19.619 --> 00:29:21.920
with a big beard, looking like a slightly distracted

00:29:21.920 --> 00:29:24.920
but very calm professor. The calm genius archetype.

00:29:24.980 --> 00:29:27.400
Exactly. And he was incredibly generous with

00:29:27.400 --> 00:29:29.890
credit. Whenever people interviewed him about

00:29:29.890 --> 00:29:32.829
Unix or C, he would constantly deflect the praise.

00:29:33.170 --> 00:29:35.329
He'd insist that Unix was just a continuation

00:29:35.329 --> 00:29:38.789
of ideas from Multics and other systems. He refused

00:29:38.789 --> 00:29:42.509
to take sole credit. He always, always pointed

00:29:42.509 --> 00:29:44.490
Ken Thompson to Brian Kernighan to the whole

00:29:44.490 --> 00:29:46.710
collaborative environment of Bell Labs. Which

00:29:46.710 --> 00:29:48.569
makes the end of his life and the lack of public

00:29:48.569 --> 00:29:51.369
recognition even more poignant. We talked about

00:29:51.369 --> 00:29:54.089
the timing, October 2011. Yeah, it was a rough

00:29:54.089 --> 00:29:56.490
end. He had been in frail health for a while.

00:29:56.529 --> 00:29:58.730
He was... battling prostate cancer and heart

00:29:58.730 --> 00:30:01.769
disease. He died alone in his home. The news

00:30:01.769 --> 00:30:04.410
actually broke because Rob Pike, another former

00:30:04.410 --> 00:30:07.069
colleague and a giant in the field himself, posted

00:30:07.069 --> 00:30:09.789
about it on Google Plus Skip. Google Plus Skip.

00:30:09.849 --> 00:30:11.829
Wow, that dates it right there. It really does.

00:30:12.049 --> 00:30:14.910
And because the entire global media machine was

00:30:14.910 --> 00:30:16.789
in the middle of this week -long deification

00:30:16.789 --> 00:30:19.630
of Steve Jobs, the obituaries for Richie were

00:30:19.630 --> 00:30:21.710
small. They were footnotes. But the tech community,

00:30:21.950 --> 00:30:24.009
the people who actually build things, they knew.

00:30:24.309 --> 00:30:26.980
Oh, they knew. The tributes from that community

00:30:26.980 --> 00:30:30.779
were quiet, but so heartfelt. And they were geeky

00:30:30.779 --> 00:30:34.119
and beautiful. The Fedora 16 Linux distribution,

00:30:34.500 --> 00:30:36.740
which was released a month after he died, was

00:30:36.740 --> 00:30:39.779
officially dedicated to his memory. FreeBSD 9

00:30:39.779 --> 00:30:42.279
.0, another major open source operating system,

00:30:42.440 --> 00:30:44.960
was also dedicated to him. And my personal favorite

00:30:44.960 --> 00:30:48.680
tribute. The asteroid, yes. In 2012, astronomers

00:30:48.680 --> 00:30:51.380
Tom Glenos and David H. Levy officially named

00:30:51.380 --> 00:30:55.329
asteroid 294727 Dennis Ritchie. So he's literally

00:30:55.329 --> 00:30:58.109
floating out there in the cosmos. His legacy

00:30:58.109 --> 00:31:00.490
is in the sky and in the cloud that runs on his

00:31:00.490 --> 00:31:03.049
OS and in the phone in your pocket. He's everywhere.

00:31:03.269 --> 00:31:05.309
I want to circle all the way back to that comparison

00:31:05.309 --> 00:31:07.609
we started with, Jobs versus Richie. Now that

00:31:07.609 --> 00:31:09.730
we've gone through this whole history, how do

00:31:09.730 --> 00:31:11.549
you see it? It feels like we need both types

00:31:11.549 --> 00:31:14.609
of people, but our culture over -indexes so heavily

00:31:14.609 --> 00:31:16.750
on one of them. That is the perfect way to put

00:31:16.750 --> 00:31:19.789
it. We over -index on the visionary marketer.

00:31:19.970 --> 00:31:22.849
And Steve Jobs was a genius at that. Let's not

00:31:22.849 --> 00:31:25.230
take anything away from him. He understood human

00:31:25.230 --> 00:31:28.549
psychology. He understood desire. He knew how

00:31:28.549 --> 00:31:31.950
to package technology into a beautiful, simple

00:31:31.950 --> 00:31:33.970
object that we would fall in love with. He was

00:31:33.970 --> 00:31:36.910
a master of the user experience. But Ritchie

00:31:36.910 --> 00:31:39.509
was the visionary architect. He understood the

00:31:39.509 --> 00:31:42.150
structural integrity of the entire digital world.

00:31:42.329 --> 00:31:44.970
The Economist had that great line in his obituary.

00:31:45.269 --> 00:31:48.250
The gizmos of the digital age owe a part of their

00:31:48.250 --> 00:31:51.220
numeric souls to Dennis Ritchie. And the Deccan

00:31:51.220 --> 00:31:54.019
Herald, a newspaper in India, went even further.

00:31:54.200 --> 00:31:56.500
They just flat out said Ritchie was far more

00:31:56.500 --> 00:31:59.119
influential than Jobs. And you can make a strong

00:31:59.119 --> 00:32:01.259
case for that. What's the case? Here's the litmus

00:32:01.259 --> 00:32:04.240
test I always use. If Steve Jobs had never existed,

00:32:04.420 --> 00:32:06.259
your smartphone today would almost certainly

00:32:06.259 --> 00:32:08.559
look different. Maybe you'd have a physical keyboard.

00:32:08.619 --> 00:32:11.259
Maybe the interface wouldn't be as slick. But

00:32:11.259 --> 00:32:13.319
it would very likely still exist in some form.

00:32:13.440 --> 00:32:15.900
Another company would have figured it out. But

00:32:15.900 --> 00:32:18.079
if Dennis Ritchie had never existed... We might

00:32:18.079 --> 00:32:20.319
still be punching cards. It's a real possibility.

00:32:20.680 --> 00:32:23.900
Or, more likely, we would be stuck in a horribly

00:32:23.900 --> 00:32:27.180
fragmented world of proprietary, incompatible

00:32:27.180 --> 00:32:30.000
systems where nothing talks to anything else.

00:32:30.180 --> 00:32:33.740
The internet as we know it, which relies on open

00:32:33.740 --> 00:32:35.720
standards and portable software that can run

00:32:35.720 --> 00:32:39.140
on any machine, might have been impossible. Richie

00:32:39.140 --> 00:32:41.720
gave us the universal language and the universal

00:32:41.720 --> 00:32:43.880
blueprint. It really makes me think about where

00:32:43.880 --> 00:32:46.500
we are today in the tech world. Richie and his

00:32:46.500 --> 00:32:48.799
colleagues worked in this open, collaborative

00:32:48.799 --> 00:32:51.900
environment. Bell Labs shared the Unix source

00:32:51.900 --> 00:32:54.420
code with universities. For free, basically.

00:32:54.559 --> 00:32:56.240
They wanted people to play with it, to learn

00:32:56.240 --> 00:32:58.240
from it, to improve it. It was an academic project,

00:32:58.420 --> 00:33:00.759
not a commercial one. Exactly. And now you look

00:33:00.759 --> 00:33:03.200
at our phones. They are the definition of walled

00:33:03.200 --> 00:33:05.420
gardens. They have locked bootloaders. They have

00:33:05.420 --> 00:33:07.579
app stores that you cannot bypass. The hardware

00:33:07.579 --> 00:33:11.240
is sealed shut. That is the big, final, provocative

00:33:11.240 --> 00:33:13.680
question for you, the listener, to think about.

00:33:14.220 --> 00:33:17.279
We built this entire modern world on the back

00:33:17.279 --> 00:33:20.740
of Richie's open, modular, tool -based philosophy.

00:33:21.549 --> 00:33:24.670
But the dominant companies of today are increasingly

00:33:24.670 --> 00:33:27.490
locking that world down into closed proprietary

00:33:27.490 --> 00:33:31.970
ecosystems. Are we still funding the kind of

00:33:31.970 --> 00:33:35.190
fundamental curiosity -driven research that allows

00:33:35.190 --> 00:33:38.349
a Dennis Ritchie to play with a junker PDP -7

00:33:38.349 --> 00:33:41.089
for a year with no immediate commercial goal?

00:33:41.309 --> 00:33:43.769
Or are we just funding the next iteration of

00:33:43.769 --> 00:33:46.380
the shiny fashion item? Exactly. Are we building

00:33:46.380 --> 00:33:48.539
foundational tools for the future, or are we

00:33:48.539 --> 00:33:50.380
just building disposable products for today?

00:33:50.759 --> 00:33:53.440
Richie built tools, and tools are what empower

00:33:53.440 --> 00:33:55.140
the next generation to build something that we

00:33:55.140 --> 00:33:57.619
can't even imagine yet. That's a heavy, important

00:33:57.619 --> 00:33:59.759
thought to end on. I can guarantee that the next

00:33:59.759 --> 00:34:01.380
time I pick up my phone, I'm not going to see

00:34:01.380 --> 00:34:03.220
the screen and the apps. I'm going to be thinking

00:34:03.220 --> 00:34:05.400
about the engine underneath it all. Think about

00:34:05.400 --> 00:34:08.039
the Unix philosophy. Think about the C code running

00:34:08.039 --> 00:34:10.099
the kernel. Think about the quiet guy in the

00:34:10.099 --> 00:34:12.619
striped sweater. Think about Dennis. Thanks so

00:34:12.619 --> 00:34:14.400
much for taking us through this deep dive. It's

00:34:14.400 --> 00:34:17.199
always a pleasure. His is a story that needs

00:34:17.199 --> 00:34:17.780
to be told.
