
The Unix-Haters Handbook (1994) [pdf] - imran3740
http://web.mit.edu/~simsong/www/ugh.pdf
======
mtraven
I founded the mailing list the book was based on. These days I say, Unix went
from being the worst operating system available, to being the best operating
system available, without getting appreciably better. (which may not be
entirely accurate, but don't flame me).

And still miss my Lisp Machine. It's not that Unix is really that bad, it's
that it has a certain model of computer use which has crowded out the more
ambitious visions which were still alive in the 70s and 80s.

Much as the web (the Unix of hypertext) crowded out the more ambitious visions
of what computational media for intellectual work could be (see the work of
Doug Engelbart and Ted Nelson). That's a bigger tragedy IMO. Unix, eh, it's
good enough, but the shittiness of the web makes humanity stupider than we
should be, at a time when we can ill afford it.

~~~
marmshallow
Do you have any suggested reading to learn more about the more ambitious
visions from the 70s and 80s, and why they didn't pan out?

~~~
KineticLensman
Well in some cases it was because conventional hardware caught up. When I
arrived at my first job in 1998 we were using Symbolics Lisp machines. Two
years later we were using TI microexplorer Lisp cards that were hosted in a
Mac IIFx (something like [0]). When I left, two years after that, we were
running Procyon Common Lisp on the IIFx itself, with no Lisp co-processor. The
old Symbolics machine was booted up occasionally, and in fact had the best
diagnostics for the climate conditions in the server room. If the air con
failed, the Symbolics would send temperature reports to a remote console
before gracefully shutting down while the Sun workstations would just overheat
and randomly fail.

[0] [https://imgur.com/gallery/Vw5agg5](https://imgur.com/gallery/Vw5agg5)

~~~
lispm
Lots of people used Macintosh Common Lisp on Macintosh IIFX machines and
later. The 68030 in the FX also enabled a better garbage collector for MCL.

~~~
KineticLensman
We used Procyon Common Lisp because it was very nicely integrated with the
Macintosh - especially for graphics - and had a great CLOS implementation. I
used it to reimplement a clunky VAX-based FORTRAN modelling environment that
had been developed in-house into a smooth Macintosh app with a graphical node-
graph editor. In all of the system development I've done, this had the biggest
'awesome gosh wow' reaction I've ever received from the users.

~~~
lispm
I have used it, too - but not for long. Usually I thought MCL then was better
- Apple also bought it and then released it via their developer channel.

Unfortunately Procyon Common Lisp was taken off the market, when it was bought
by Franz, Inc. They used the Windows version of Procyon CL as kind of a
starting point for their Windows offering of Allegro CL, IIRC.

------
charlesism
Dennis Ritchie's "anti-preface" to this handbook contains the hard-to-forget
metaphor:

    
    
        your book is a pudding stuffed with apposite observations, 
        many well-conceived.  Like excrement, it contains enough 
        undigested nuggets of nutrition to sustain life for some.  
        But it is not a tasty pie

~~~
delish
And:

> Your sense of the possible is in no sense pure: sometimes you want the same
> thing you have, but wish you had done it yourselves; other times you want
> something different, but can't seem to get people to use it; sometimes one
> wonders why you just don't shut up and tell people to buy a PC with Windows
> or a Mac. No Gulag or lice, just a future whose intellectual tone and
> interaction style is set by Sonic the Hedgehog.

~~~
eternalban
"a future whose intellectual tone and interaction style is set by Sonic the
Hedgehog"

Ironically, Unix won yet here we are..

~~~
77pt77
And sonic died...

------
jayalpha
Tue, 15 Mar 1994 00:38:07 EST Subject: anti-foreword

To the contributers to this book:

I have succumbed to the temptation you offered in your preface: I do write you
off as envious malcontents and romantic keepers of memo- ries. The systems you
remember so fondly (TOPS-20, ITS, Multics, Lisp Machine, Cedar/Mesa, the
Dorado) are not just out to pasture, they are fertilizing it from below. Your
judgments are not keen, they are intoxicated by metaphor. In the Preface you
suffer first from heat, lice, and malnourishment, then become prisoners in a
Gulag. In Chapter 1 you are in turn infected by a virus, racked by drug
addiction, and addled by puffiness of the genome.

Yet your prison without coherent design continues to imprison you. How can
this be, if it has no strong places? The rational prisoner exploits the weak
places, creates order from chaos: instead, collec- tives like the FSF
vindicate their jailers by building cells almost com- patible with the
existing ones, albeit with more features. The journalist with three
undergraduate degrees from MIT, the researcher at Microsoft, and the senior
scientist at Apple might volunteer a few words about the regulations of the
prisons to which they have been transferred. Your sense of the possible is in
no sense pure: sometimes you want the same thing you have, but wish you had
done it yourselves; other times you want something different, but can't seem
to get people to use it; sometimes one wonders why you just don't shut up and
tell people to buy a PC with Windows or a Mac. No Gulag or lice, just a future
whose intellectual tone and interaction style is set by Sonic the Hedgehog.
You claim to seek progress, but you succeed mainly in whining. Here is my
metaphor: your book is a pudding stuffed with apposite observations, many
well-conceived. Like excrement, it contains enough undigested nuggets of
nutrition to sustain life for some. But it is not a tasty pie: it reeks too
much of contempt and of envy.

Bon appetit!

~~~
mcguire
Dennis Ritchie, ladies and gentlemen.

------
darkpuma
Much of the book is very dated, complaining about things that have been
rectified many years ago.

However I think it still has a valuable lesson that many, particularly young
CS students, would benefit from: Unix is not the perfect fundamental model for
computing. C is not the gospel. Their prevalence today is as much a historic
and economic accident as a rational consequence of their objective merits.
Both are social artifacts, not manifestations of fundamental truths.

Worshipers of Bell Labs (such as the cat-v or suckless folks) don't get this,
and I've seen them pull a lot of people down that rabbit hole with them,
particularly young and inexperienced students.

~~~
jcranmer
> However I think it still has a valuable lesson that many, particularly young
> CS students, would benefit from: Unix is not the perfect fundamental model
> for computing. C is not the gospel.

The problem is, this book doesn't actually motivate that lesson. Instead, it
spends a lot of its time sniping rather than arguing for why the entire
philosophy is perhaps misguided or outright wrong. And sometimes, even the
snipe targets are pretty idiotic: when complaining about C++ syntax, for
example, the target isn't the incomprehensible nature of template rules [1],
but one C++ compiler doesn't lex //* correctly.

[1] I'm not sure anyone actually understands how name lookups work when
templates are in play. Instead there's a lot of guesswork and don't-shadow-
names-if-it-might-matter going on.

~~~
darkpuma
> _" The problem is, this book doesn't actually motivate that lesson. Instead,
> it spends a lot of its time sniping"_

Yes but that sniping does a good job of deconstructing the historical
revisionism that Unix was some beautifully architected thing, rather than
something that's become less shit over time.

------
yebyen
I've just skimmed the TOC and, having never seen this book before, I'm a
little in love. Here's why

It's a cynical UNIX manual from the 1990's. Here:

> 14 NFS..............283

> Nightmare File System

> Not Fully Serviceable............284

> No File Security...........287

> Not File System Specific? (Not Quite)..........292

Here also:

> The Oxymoronic World of Unix Security .......243

> Holes in the Armor ........244

> The Worms Crawl In ..........257

I work in IT systems development in a University IT department. I want to read
this take on UNIX from 1994, just to see how much better things haven't
gotten.

OK, the state of the art has gotten better, but if I compare _my work
environment_ which is byzantine complexity and full of bespoke garbage
sometimes, to _the hells apparently described herein_ , I bet I can find more
similarities than differences.

And that will hopefully make me a more effective communicator about how to
make things better with modern convenience technologies that we're not using
enough. (Dare I say Kubernetes is the one big thing that is actually majorly
different today, compared to UNIX in the 1990's.)

~~~
marcosdumay
> I bet I can find more similarities than differences.

Most of what's on the book has been fixed (not NFS, this one is forever), and
we have an entirely new set of things to worry about.

The book is funny, but every part of it feels old.

~~~
hyperion2010
Rereading the section on NFS again, I suddenly realize that I was foolish to
have skipped it as out of date. Since my last read I have encountered some
incarnation (heh) of every single one of the problems listed in that chapter.
I'm betting v4 isn't much better either. Is there a good network file system
solution!?

~~~
shaklee3
What's wrong with nfs v4? It was quite a bit faster than the alternatives last
I checked.

~~~
marcosdumay
As the book says:

> There’s only one problem with a connectionless, stateless (file) system: it
> doesn’t work.

> Example #1: NFS is stateless, but many programs designed for Unix systems
> require record locking

> Example #3: If you delete a file in Unix that is still open, the file’s name
> is removed from its directory, but the disk blocks associated with the file
> are not deleted until the file is closed.

(Example #2 is a non-issue)

The security is still lacking, and the system still can't handle failures.

Yet, yes, it's faster, easier to set-up, and more widely supported than the
alternatives.

~~~
JdeBP
One of the saddest to see edits to Wikipedia is this one to its article on
NFS.

* [https://en.wikipedia.org/w/index.php?diff=385927363&oldid=38...](https://en.wikipedia.org/w/index.php?diff=385927363&oldid=383258055)

There has been a lot of literature published on the problems with NFS, and the
mismatch with POSIX file semantics, since 1988. Some of it was even in the
original paper from Sun, in fact. To this day, Wikipedia has nothing on the
subject. The words "stateful" and "stateless" appear once each in the entire
article, with no indication of their pivotal importance, made much of in the
actual literature on the subject.

* [https://news.ycombinator.com/item?id=17950343](https://news.ycombinator.com/item?id=17950343)

------
_kst_
[https://homes.cs.washington.edu/~weise/uhh-
download.html](https://homes.cs.washington.edu/~weise/uhh-download.html)

"We wrote the contract with our publisher to have the copyright revert to us
once the book went out of print. So yes, we have the right to publish it
online. Feel free to mirror it where ever you want, print it out, and bind
it."

------
alwillis
I loved this book back in the day—it even came with its own barf bag.

But how things change. This was before macOS became BSD-based and before I
really got into web development because today, I spend so much time at a shell
prompt inside of the Terminal app. I certainly appreciate the elegance of Unix
a lot more today.

------
Smithalicious
I always have a very conflicted feeling about the Unix-Haters Handbook. It's
clearly intended to make legitimate criticisms, but then there is a kind of
tongue-in-cheek exagerrated part to it, but then behind that there's clearly a
lot of very real bitterness and barely controlled anger.

I think it's a good book and worth reading still, if not especially, in the
modern world where to many people Unix and its family are the hot
"alternative" that is often favourably compared against Windows and its ilk.

But I also think that Ritchie's "anti-preface" was already quite on-the-nose
when the book came out and has only become more true over time.

------
vermilingua
"C++ is to C as Lung Cancer is to Lung" has to be the best chapter title I've
ever read.

------
mcguire
P. 124:

" _We have tried to avoid paragraph-length footnotes in this book, but X has
defeated us by switching the meaning of client and server. In all other client
/server relationships, the server is the remote machine that runs the
application (i.e., the server provides services, such a database service or
computation service). For some perverse reason that’s better left to the
imagination, X insists on calling the program running on the remote machine
“the client.” This program displays its windows on the “window server.” We’re
going to follow X terminology when discussing graphical client/servers. So
when you see “client” think “the remote machine where the application is
running,” and when you see “server” think “the local machine that dis- plays
output and accepts user input._”

Sigh.

------
etaioinshrdlu
I think the success of Unix is much better explained by "Worse is Better" than
the modularity/composability of little utilities called the Unix philosophy.

~~~
mixmastamyk
And DOS was a lot worse than Unix.

~~~
etaioinshrdlu
I love DOS and how utterly terrible it is :)

------
GnarfGnarf
This is a hilarious book, even if you're a *nix supporter.

Highly recommended.

~~~
mehrdadn
There's this relevant joke about Linux which is that Linux is very user
friendly... it's just very picky about who its friends are.

~~~
DonHopkins
Linux is only free if your time is worthless. ;)

~~~
sls
Windows 10 Pro is only $200.00 if your time is worthless, is the flip side.

~~~
TeMPOraL
If your time is worthless, Windows can - and always could - be free. But if
your time is worth something, it's better to shell out that $$$, and also be
legally and morally on the safe side.

~~~
mruts
Pretty sure installing Kmspico is faster than buying a serial key.

~~~
0w4u2a
Or changing the KMS server to a "customised" one that accepts all activation
attempts. Much more secure than giving root to kmspico.

Find a proper key for your edition here: [https://docs.microsoft.com/en-
us/windows-server/get-started/...](https://docs.microsoft.com/en-us/windows-
server/get-started/kmsclientkeys)

slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

slmgr /skms kms.digiboy.ir _# just an example of many KMS servers that exist_

slmgr /ato

~~~
gnu8
What can the operator of a KMS server do to my computer though?

~~~
0w4u2a
1\. If you use a custom KMS server like that, I don't know what they can do to
you. Maybe a KMS server can send arbitrary commands to a client by design? I
don't know. Even if it can't, there could be a bug like a buffer overflow in
the KMS client that might allow the server to execute code on your client
machine. Since you are only supposed to connect your client to Microsoft's KMS
server (I don't believe other alternative and supported implementations of the
server exist), maybe the client is not as battle-tested and hardened as it
should.

2\. Installing kmspico requires admin access to your machine. What kmspico
does is that it installs a local KMS server which works the same way the
remote KMS server I've suggested to use does: it activates everything you
throw at it. But as I said it needs admin access to your machine, and it's up
to you whether you trust kmspico or not.

------
Naac
This is one of my favorite books, and I own the hard-copy. As I was reading
it, I found that a lot of the problems mentioned seem to be affecting Windows
and macOS, while Linux based distros have them resolved.

I found the commentary and history both hilarious and informative. The anti-
forward by Dennis Ritchie is also very funny.

If anyone has found similar CS style humor books, please let me know!

~~~
depressed
I enjoyed "How not to program in C++". It's a collection of find-the-bug
puzzles, and has hilarious war stories at the bottom of every other page.

------
gerbilly
I bought this book in print 20+ years ago.

It came with a vomit bag.

~~~
77pt77
You can buy this in print?

Like, an actual book! Not just printing it yourself?

~~~
jasongill
Yes, there are people selling copies on Amazon

------
rcarmo
I read this when it came out, and it's only improved over the years. At the
time we were just graduated and it felt otherworldly and futuristic,
especially considering we had been taught to use VAXen and used 680x0 Macs...

------
waynecochran
I think it was jwz who said “Linux sucks, it just sucks less than everything
else.”

~~~
dredmorbius
"All mail clients suck. This one just sucks less."

[http://www.mutt.org](http://www.mutt.org)

~~~
aboutruby
Reminds me of "Democracy is the worst form of government, except for all the
others"

------
iheartpotatoes
I expected this to be tongue-in-cheek. Hoo boy was I wrong.

------
fromthestart
Amusing read. Most of this material is before my time.

But in geoscience grad school just five or so years ago, a number of older,
but technically minded professors were still using Sun machines, and most of
the manuals for geoscientific software tend to provide supplementary
information for other modern exotic systems/OSes, so I wonder: has windows
replaced Unix as the technically inferior/evolutionary superior champion?

------
phil9987
This book is hilarious, love how the frustration is underlined with email
conversations and just the right amount of sarcasm.

------
wazoox
Indispensable website of the handbook, with the HTML version of the book, and
the fantastic "unixux" server:
[http://www.art.net/~hopkins/Don/](http://www.art.net/~hopkins/Don/)

Try unixux. Really.

------
vagab0nd
Great book.

And what's funny is, some of the things it criticizes are features I'd not
heard of and actually learned from the book itself. E.g. bare double dash.

------
moomin
I still own my copy, and highly recommend reading it in conjunction with a
more conventional text on operating systems design. It’s quite illuminating.

------
pts_
I learned a lot about unix like systems and loved them even more after reading
this, ironically. Or maybe because it's sarcastic.

------
nickpsecurity
ESR did a modern review on this:

[http://esr.ibiblio.org/?p=538](http://esr.ibiblio.org/?p=538)

------
dboreham
Still have my copy..

------
systemBuilder
This is a tongue in cheek but also piece of shit MIT propaganda piece mostly
written by the clowns who created the abortions that were Multics and LISPMs.
Like as if every software engineer should start their next project by warming
up their soldering irons to add obscure new features to their CPU's!

I know because I attended that school and worked with the fathers of Multics.
The sad fact is that MIT produces extreme bloatware that nobody understands
nor needs (gnu emacs _cough_ _cough_ ). MIT has almost ruined unix with
bloatware like 'configure' and gcc 'extensionettes'. The repeated rant about
memory mapped files (a Multics bedrock feature) has been refuted as
showboating hundreds of times by OS designers like my manager at Xerox OSD,
the designer of Pilot, and an ex-MIT professor who never drank that Kool aid!

What's happening in OS's right now is that European bloatware is strangling
Linux ... The reason Unix got people so thrilled is that it could 'terminate
and stay resident' in one single human mind!

~~~
cyberpunk
I'll assume you're talking about systemd here? How is linux being strangled?
How is it Europe's fault? As far as I can see linux is booming and almost
ubiquitous as far as backend OS's go...

~~~
systemBuilder
Operating systems reflect the cultures that created them. UNIX was a reaction
to the enormous overcomplexity of Multics and other operating systems (OS/360)
of its day. One file type, one record type ("THE BYTE"),one device driver
model, NFA research (~1 pattern language vs zero in other operating systems)
and a way to plug together pipeline programs on the command line not seen
before.

UNIX succeeded precisely because it was powerful and yet so simple a person
could read any part of it and change it.

However, the kernel of UNIX is now beyond ken for most developers precisely
because the developers pursued complexity and marginal features for marginal
benefits, something very common in European governments and a part of that
culture.

The shell commands went from maybe 50kloc to millions of lines precisely
because the Linux developers were desperate for contributions and let MIT
bloatware people control that part of the source code, strangling Linux with
MIT culture.

~~~
cyberpunk
Kernels do a lot now that they didn't used to. I'm not sure what marginal
features you're talking about, can you share some with us? The ABI may look
the same as it was in the 1990's but thing under the hood have gotten a lot
smarter, and that smarts requires more code.

As for userland.. Even OpenBSD, my personal preference of operating system and
one which is known for its 'lean'ness of base userland has 10x this kloc in
/bin/ and /usr/bin:

    
    
      # find bin usr.bin | egrep '\.c$|\.h$' | xargs wc -l | tail -1
        689562 total
    

Coreutils, by comparison:

    
    
       coreutils$ find . | egrep '\.c$|\.h$' | xargs wc -l | tail -1
         91991 total
    

(The difference is because coreutils doesn't contain everything obsd's /bin
and /usr/bin does I suppose, openssh, tmux etc)

Either way, that's not a mad amount of code imo... Which parts of this are
'MIT bloatware' ?

------
towaway1138
I bought this when it came out, but thought it was horrible. The only good bit
was the preface by one of the Unix authors (Ritchie?). The rest just seemed
like whining by people that didn't really get the Unix philosophy.

~~~
mruts
I mean, you could say that everyone hates Nazi's because they don't really get
Nazi philosophy.

Both your statement and my statement don't really mean anything.

