Getting to know UNIX and Linux
Michael Kerrisk is a freelance trainer, writer, and consultant who has been using and programming on UNIX systems since 1987. He is the author of The Linux Programming Interface, a book widely-acclaimed as the definitive work on Linux system programming. As a contributor and maintainer of the Linux man-pages project, he has been actively involved in the Linux community for more than 20 years, performing testing, design review, and documentation of Linux APIs. (He also wrote many of the manual pages that are consulted on a daily basis by thousands of programmers around the world.)
Widely recognized for his Linux work, Michael is a regularly invited to present at Linux and free software conferences. A sought-after teacher, he conducts training courses for companies and governments across Europe and elsewhere around the world.
Michael holds a BSc(Hons) degree in Computer Science as well as a BA in Psychology and Art History, both from the University of Canterbury (NZ).
My exposure to UNIX came in bits and pieces; I first encountered UNIX culture a few years before I actually met UNIX itself.
While I was doing my first (Computer Science) degree, I was introduced to regular expressions via chef, a prettied-up version of the early UNIX editor, ed, which had been ported to the PRIMOS system at the university. (At the time, PRIME Computer was a significant manufacturer of minicomputer hardware, and a notable competitor to Digital.) At the same time, I met Robert Biddle, then a graduate student fresh from the University of Waterloo. Waterloo had a fairly famous Computer Science department (it was the home of WATFOR, a popular FORTRAN compiler of the day), and was much closer to the UNIX wave that was then sweeping academia than New Zealand computer science departments, where UNIX had still to make a widespread appearance. Robert told intriguing stories of UNIX, C, and Ratfor.
The next step on the way to meeting UNIX came when I met emacs after taking up a position teaching Computing at the University of Technology ("UNITECH"), in Lae, Papua New Guinea. Although emacs is nowadays most often associated with UNIX, it ran on many other operating systems as well, and so my second meeting with a "UNIX" editor was once more on a PRIMOS system. Once upon a time, I could hack up reasonable LISP macros for emacs. However, after I left PNG, I didn't see emacs again for several years, and forgot most everything; so, for a long time, I generally stuck to vi(m). Later, driven by the need to maintain my sanity while working on large LaTeX/Beamer presentations, I rediscovered the joys of emacs.
In 1987, I finally met UNIX and C in person. After a spell of traveling, I ended up in England. There, a friend studying at the University of Sussex had access to a suite of HP Bobcat workstations running HP/UX, and the university library had a copy of the first edition of Marc Rochkind's wonderful Advanced UNIX Programming. For the next several weeks, I was glued to the workstation with AUP, Kernighan and Ritchie's The C programming Language, and a printed copy of the C shell man page at my side, writing a multitude of scripts and programs to test how things work. By the end of that time, I'd acquired a reasonable understanding of UNIX, C, and shell scripting.
Soon afterward, I got a job at Digital Equipment Corporation (UK), and soon moved into their training branch, where I was the founding member of what soon became a small group of ULTRIX trainers. I specialized in system programming training, and traveled quite a bit around Europe running system programming courses for Digital employees and customers.
A return to New Zealand, a second degree (Psychology plus a good measure of Art History, which gave me a lot more practice writing), and a short spell working on MS Windows applications took me away from UNIX for a few years. I first got interested in Linux when I picked up some Slackware CDs in the mid-1990s, but didn't do any serious work again with it until the late 1990s, when I moved to Munich, where my first job was at a company whose infrastructure was entirely Linux-based. Since then, all of my day jobs have employed Linux.
Soon after I began using Linux in earnest, I noticed errors and deficiencies in the system call and library function man pages. Eventually, I started sending notes, and then patches to the maintainer of the man-pages project, Andries Brouwer. When, in 2004, after more than 9 years as maintainer, Andries retired from the project and asked me to take over maintainership of the project, I accepted.
Although Andries did much good work, man-pages was a largely invisible project when I took over. One of my goals was to turn that around. Under my maintainership, man-pages acquired:
As of man-pages-5.13 (August 2021), when I ceased to maintain the project, I had made a total of 196 releases of man-pages (based on about 22k commits). I'm also the author or coauthor of around 440 of the approximately 1060 pages in the project. Working on man-pages is much more than writing documentation: any useful documentation involves spelunking in the kernel and glibc source code, a lot of testing (the list of kernel bugs I've found while testing kernel and glibc interfaces has become quite long), and review and critique of the design of new and proposed interfaces.
Most of my work on man-pages has been on a private basis, and though documentation is a task dreaded by many, some people like what I do: conference paper selection committees seem to favor presentations on documentation and interface testing and design review; I was four times invited to the Linux Kernel Summit; and for some months in 2008-2009, I was a paid Fellow of the Linux Foundation, working full time on the project.
I'm a New Zealander, but have lived in quite a few places around the world, including Papua New Guinea, England, Switzerland, the USA (California), and for a short while Colombia (no, not DC). These days, I live in Munich, Germany. While I miss spending more time in New Zealand, Germany—Munich in particular—is a great place to live.
Once upon a time, I was a frequent movie-goer and used to be able to participate in informed critical discussions of a wide range of contemporary films, but these days I don't get along to the cinema quite so often, and—thanks to movie trips with my daughter Cecilia, to whom my book is dedicated—my best critical overview is of children's films.
When I find time (not so often these days), I'm happy to get lost in a book—mainly history, politics, biography, popular science, literary fiction, and some genre fiction. Otherwise, my interests include photography and travel (I come from an island and have visited quite a few others; I've also traveled in all continents except Antarctica).