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