in books

Unix: A History and a Memoir, by Brian Kernighan

A while back I put together a computer history reading list of books I thought looked particularly interesting. Life being busy, as usual, it took me a while to get around to picking up any of the books on the list. But I finally managed to find some time to read again recently, and picked up Brian Kernighan’s recent memoir.

When I added Unix: A History and a Memoir to my reading list, I was concerned it would be a long, dry tome with a focus on technical minutiae. This turned out not to be the case: what arrived was a short book, less than 200 pages, and very readable. I’d describe it less as a technical history of Unix, and more as Kernighan’s story of working at Bell Labs — and where Unix happened to be a major project he was involved with.

A paperback copy of Unix: A History and a Memoir, by Brian Kernighan.

The book does go into some detail on the development of Unix, both in its origin and as it developed through subsequent editions. Two stories I found interesting in that thread of the book were the original motivation for the project, and its first “real” customer group.

The story of Unix as a platform to play the game Space Travel is well-known, but an interesting point from this book is that the project originated as a storage driver for the PDP-7’s disk drive, which was too fast for the computer to drive effectively and motivated Ken Thompson to write a new scheduling algorithm. Having written the new algorithm, he needed to write code to load data on the disk; and “at some point I realized I was three weeks from an operating system”, needing only an editor, an assembler, a shell, and an exec system call.

The other early story I found interesting was that the Unix group acquired its first PDP-11 system indirectly: the computer was purchased for the Bell Labs Patent department to help write patent applications, and the Unix team promised to write typesetting software for them. Much of the actual Unix development happened in support of that goal, or “off hours” when the Patent team wasn’t working.

More of the book is devoted to discussing the cast of characters at Bell Labs, though, and how they ended up relating to the projects. There are a lot of anecdotes of the general form of, “here’s what motivated Stu Feldman, who I met in college, to write the first version of make in a weekend”. The book also includes short (1-3 page) biographies of many key players, including Ken Thompson, Dennis Ritchie, and Doug McIlroy.

(Interestingly, the author of make identified the unfortunate syntax with the tab requirement as a flaw very early on, but was unwilling to push breaking changes to the user base, who were overall very happy and numbering in the dozens!)

Kernighan also discusses some of the reasons he thinks Bell Labs was so successful, mostly from a culture and management perspective. These added up to “stable funding and a willingness to take a long term view of success”, which allowed the Lab’s researchers to pursue their own research interests in many cases. The attachment to the telephone system was a constant source of new and interesting problems to work on, but many researchers clearly took their work in directions which were only tangentially related to telephony.

Overall, a highly enjoyable read — especially if you’re the sort of person who enjoys first-person engineering memoirs with a fun cast of characters. (Unsurprisingly, I do!) It proved to be an interesting story of the early development of Unix, mostly by talking about the people who did that development, and didn’t get bogged down in technical details.