22 Jul 2003 mbp   » (Master)

dmullen asks of Aaron Swartz:

What, precisely, is so awful about TAOUP? Personally, I consider it to be one of the best books ever written on programming in general, let alone Unix programming. I found useful information and advice on every page.

I think TAOUP is a pretty nice book, and I will probably buy a copy when it comes out, and recommend it to my friends.

However, I don't think it is perfect, or above criticism. It might be in my top 20 books on programming but I don't think it would make my "top few".

What's wrong? Here are some complaints I prepared earlier.

I guess overall it seems to focus too heavily on "things the author thinks are interesting/funny". (I think that's a failure of later versions of the Hacker's Dictionary too.) Don't get me wrong: I'm all for authorial voice, and I know it's impossible to suppress completely. But in TAOUP's current draft, I think it is too obtrusive.

For example, a fair number of the examples are taken from esr's own projects, such as fetchmail. But I don't know anybody aside from esr, who would say fetchmail is a really prime example of Unix design! Why not pick an example that really is broadly recognized as brilliant?

Has esr been lazy in just using examples from his own home directory? Or is he suggesting that his own designs are sublime and perfect examples of Unix? The kernel hackers who make special mention that that esr's CML2 system was *not* merged might disagree. Either way it's a bit irritating.

One thing that sprang to mind is that rusty's "iprint" (apt-get install iprint) is probably more Unixy than esr's "ascii". (iprint's smaller :-)

Now certainly looking at the design of your own programs is easier, but if you're aiming to be the definitive work and explicitly comparing yourself to Knuth then I think you are obliged to go further afield. (Does The Art of Computer Programming deal mostly with code from TeX? No.)

Similarly, his discussion of the history of Unix, or of Unix compared to other operating systems, seems really skewed to his personal views. You can see his position on the open source/free software kerfuffle intruding. Of course history is shaped by the historian, but I think he does it more than is really needed or helpful.

Most of the problems seem like they could be fixed by more editing and constructive criticism before it's released. I wouldn't be surprised if a second edition, if there is one, is better. (Perhaps esr's trying for early-and-often in books?) Now it is perhaps a bit unfair to criticize it for this when it's not in print yet, but the web page gives the impression that it is nearly a final draft.

The tone and level is a bit uneven too. Sometimes it is very jokey and sometimes moderately formal. Some examples are a bit labored and some parts that I think ought to have examples are missing.

TAOUP does deal with a topic that has not been fully explored before, which makes a nice change from the two shelves of "C++.NET in 24 Hours for Complete Morons" at my local bookstore. It's not quite the only one there: The Practice of Programming, Patterns of Software, Code Complete, and Unix Network Programming approach different parts of the topic. If TAOUP irritates Swartz enough that he's motivated to try to do better then I think that's a good thing.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!