Josh:

I mentioned this in a previous episode, but in college I participated in some

hacking competitions. There's something that I learned in one of them that I

will never forget. A hacker breached our network and dropped a payload on the

system. No matter what we did, we couldn't remove the file. We used sudo, we switched to root,

but still could not delete it. We checked it with ls-l, it looked like a normal file.

Nothing should be preventing us from deleting it. After the competition, they did a Q&A where you

could ask questions to learn what happened. That's when I learned about the immutable bit.

If you are on a Linux computer, you can run chatter plus i followed by the file name.

This will set the immutable bit on it. Adding this prevents the file from being

deleted or modified in any way, even by root. And ls-l won't show it.

You need to run ls adder on the file to see it. It's an extended attribute and ls doesn't list those.

You can remove it easily with chatter minus i, but if you don't know it's there,

you might spend hours wondering what's going on.

That all happened on a Debian-based server running the Linux kernel. But today isn't

about Linux, it's about Unix. It's about an underappreciated legend in the tech community.

It's about Ken Thompson. From his early work at Bell Labs to co-creating the Go programming

language on this episode of In The Shell.

We'll see why we're not shipping Windows 98. Absolutely.

Mr. Jobs, you're a bright and influential man. Here it comes.

It's sad and clear that on several accounts you've discussed, you don't know what you're

talking about. The key to success is developers, developers, developers, developers, developers,

developers, developers, developers, developers, developers, developers, developers.

Jens and I don't own phones. Neither should you people, if you have any common sense.

My name is Josh, and I'm able to keep this podcast independent and advertisement-free

because of support from listeners like you. If you are finding value in what I'm doing here,

consider becoming a paid supporter at members.sideofburritos.com. And as a thank you,

members get early access to new videos, ad-free versions of everything, bonus content,

and access to a live monthly Q&A. Thanks for considering. Now let's get back to the show.

Ken Thompson was born in New Orleans in 1943. As a child, he showed an early fascination with logic.

He once recalled that in grade school, he would do arithmetic problems and binary just for fun.

This innate curiosity for how things worked set the stage for his future in computing.

Thompson went on to study engineering at the University of California, Berkeley,

earning his bachelor's degree in 1965 and master's in 1966 in electrical engineering and computer science.

Armed with these degrees and a love for coding, he headed east to join one of the most legendary

research centers in history, AT&T's Bell Laboratories. In 1966, Thompson was hired by Bell Labs,

the research arm of AT&T, known for massive innovations like the transistor and satellite communications.

At the time, Bell Labs was collaborating on an ambitious project called Multics,

a cutting-edge operating system intended to serve hundreds of users on a giant mainframe.

Multics was revolutionary in concept, but had become unwieldy in practice. Famously,

it struggled to support even three simultaneous users due to its complexity.

Frustrated with Multics' bloat, Bell Labs pulled out of the project in 1969,

leaving Thompson with both the experience of what not to do and an opportunity to do something different.

Around this same time, Thompson had written a simple computer game for fun called Space Travel.

After Multics was gone, he still wanted to play his game, but the only machine available

was an obsolete Digital Equipment Corp PDP-7 minicomputer

with no operating system of its own. So in a move that would become legendary, Ken Thompson set out

to build his own operating system from scratch. Working essentially alone on the PDP-7 in 1969,

Thompson designed and coded a new far simpler OS that he initially just wanted for personal use.

As one historian described it, in a burst of productivity, he just sat down and wrote the

Unix operating system in four weeks in assembly. This new system was elegant and minimal by

necessity. The PDP-7 had only four kilobytes of memory, a ridiculously small amount even for the

time, which forced Thompson to keep the design lean and efficient. He wrote a basic kernel,

a command line shell to run commands, an editor for text, and even an assembler to translate code.

was a time-sharing operating system that allowed multiple users to interact with the computer

and run multiple programs at once, a feat typically reserved for much larger systems.

Thompson's colleague, Dennis Ritchie, soon joined in the effort, and together they continued to

improve this new OS. By 1970, at the suggestion of a co-worker, Brian Kerninghan, they named it

Unix as a pun on the overly complex Multics project. If Multics aimed to do everything,

Thompson's Unix would do just a few things extremely well. Working with Ritchie and a small

team, Thompson's Bell Lab group introduced several fundamental ideas in the early Unix system.

They implemented a hierarchical file system, organizing files and nested directories,

the concept of treating hardware devices as special files,

EFFORTS

11

10

12

12

14

15

14

16

16

16

and the notion of processes, programs that could run concurrently, which was key to multitasking.

They even devised pipes, a mechanism for chaining programs' outputs to inputs,

enabling small tools to be combined flexibly.

These ideas formed the now-famous Unix philosophy of building simple, modular programs that can work together.

As author Peter Salas put it,

the Unix philosophy consists of maybe two or three notions.

The first is that everything is a file.

Second is that you write programs that do one thing well.

Another key to Unix's success was Thompson's creation of a new programming language called B in 1970,

which he used for early development of Unix.

B was a simplified language, and Thompson named it B after his wife Bonnie.

As Unix...

grew, B's limitations became apparent, so Dennis Ritchie developed a successor language, C, in 1971.

In 1973, Thompson and Ritchie boldly rewrote the Unix kernel in C, turning Unix into a portable

system that could be adapted to run on different computers rather than being tied to one type of

hardware. This decision to make Unix hardware-independent was hugely significant. It meant

their operating system could spread far and wide. And spread it did. Thompson gave the first public

presentation on Unix in 1973, and soon universities began requesting copies. The source code was shared

for a modest license fee with academic institutions, which was possible because AT&T, under a consent

decree, wasn't in the computer business and thus allowed...

to be distributed for research. The University of California at Berkeley was one of the first

places to get Unix. Thompson even spent a sabbatical year there in 1975, helping students

install and enhance it. This led to the Berkeley Software Distribution, BSD, lineage of Unix.

Back at Bell Labs, Thompson and the team continued refining Unix through the 1970s.

In 1983, Thompson and Ritchie received the ACM Turing Award, often called the Nobel Prize of

Computing, for their development of generic operating system theory and the implementation

of Unix. Despite his towering achievements, Ken Thompson was and remains a rather modest,

quirky engineer. In the early days, he would personally hand-cut Unix distribution tapes

for users, signing them.

off with a cheerful note that read, Love, Ken. Stories like this underscore that Thompson wasn't

motivated by fame or fortune. He simply loved creating elegant software. If you listened to

episode 1 of season 2 on Minus Torvalds, you might be wondering how Unix and Linux relate.

Here's a simple way to think of it. Unix is the original. Ken Thompson, along with Dennis Ritchie,

created Unix at Bell Labs in 1969. It was a proprietary, though widely shared operating

system that introduced the core ideas mentioned earlier. AT&T eventually offered Unix commercially,

and several flavors of Unix emerged over the years, like BSD, mostly maintained by companies

or universities. Linux came later as a reinvention. In 1991, about

20 years after Unix's birth, a Finnish student named Linus Torvalds wrote a new kernel that

imitated the functionality of Unix. This became Linux, which was essentially a free open-source

clone of Unix, created from scratch. Linus's goal was to have a Unix-like system he could

run on his own personal computer, an Intel 386 PC, because at the time, true Unix was

expensive or limited to big institutions. Unix laid the foundation, and Linux followed the same

architectural plan, with the key difference that Linux was openly shared as source code

for anyone to use or modify. Everything that makes Linux possible, from the C language it's written in

to the concept of multi-user, multitasking OS, goes back to Unix. So while Linus Torvalds rightfully

gets credit for Linux.

open-source movement it fueled, he stands on Ken Thompson's shoulders.

Ken Thompson's story doesn't end with Unix. He continued to push the boundaries of computing

and the decades that followed, both at Bell Labs and beyond. In the 1980s, Bell Labs embarked on

a new project to build a successor to Unix. Thompson was a key player in designing Plan 9

from Bell Labs, an operating system that took Unix's core ideas and extended them even further.

While Plan 9 never became a mainstream OS, it introduced concepts ahead of their time,

and its influence can be seen in later systems. One very practical innovation from Plan 9 was the

creation of UTF-8, a universal text encoding that Thompson co-devised with Rob Pike in 1992.

If you've ever seen an emoji or any text

in English, or any other language, display correctly on different devices, you can thank

Ken Thompson for UTF-8. I'm reading a book right now called Code, and one of the topics it covers

is how encoding works, converting bits into human-readable text, and vice versa. It's a great

book on different computer science topics, written in an easy-to-understand way. After a storied 34-year

career, Ken Thompson retired from Bell Labs in late 2000. By that time, Bell Labs had changed,

AT&T spun it off to Lucent Technologies in the 90s, and the golden era of the lab was winding down.

But Thompson wasn't done creating. In the mid-2000s, he moved to California and joined Google as a

distinguished engineer. There, even in his 60s, he once again made a mark on software history.

Thompson became one of the co-creators of the Go programming language, also known as Golang, which Google introduced in 2009.

Go is designed to be simple, efficient, and scalable for building modern software.

It's used in many large cloud services today.

Even beyond these headline projects, Thompson's fingerprints are on countless aspects of computing.

He played a role in defining regular expressions for search patterns in text, which have become an everyday tool for programmers and users.

And if you've ever used GREP, Thompson wrote the original version.

While Ken Thompson might not be as much of a household name as Steve Jobs or Bill Gates, his influence on technology is arguably deeper and more pervasive.

As one writer aptly observed, Thompson is perhaps an even greater unsung hero.

whose name may be forgotten by all but the curious.

We will reap from his intellectual gifts forever,

and most of us will likely never know who he is.

Indeed, billions of people use devices and services every day

that rely on Thompson's creations,

whether it's Unix or Linux powering servers,

the C language and its descendants like C++ and Java running apps,

or UTF-8 enabling global communications,

all without realizing the debt we owe to this one engineer.

In the Shell is written, researched, and recorded by me, UID0.

If you are listening on an app that lets you rate shows,

please take a minute to rate this one.

I would truly appreciate it.

That's it. Take care, and I'll see you next time.

time