Electronic Review of Computer Books

[ ERCB Home | New | Feature | Brief | DDJ | Letters | Links ]

[an error occurred while processing this directive]

More Summer Reading

Review by Gregory V. Wilson
Copyright © Dr. Dobb's Journal, August, 1998

After reading one of my columns in this magazine last year, a friend said, "You really don't like a lot of books, do you?" I replied, a bit defensively, "No, there's a lot that I like, there's just more that I don't."

That exchange, and the survey I did of great books in computing (http://www.ercb.com/feature/feature.0013.html), got me thinking about what it is that makes a book great. I finally decided that I didn't know, but that I did know what can spoil a book. Getting the technical details wrong, leaving holes between the topics being covered, mislabeling diagrams, including buggy or badly written code samples, writing ungrammatically, messing up the index, and trying too hard to be funny or profound are among the most common mistakes.

The last of these is particularly common in books about 'fuzzy' topics such as user interface design and software engineering. Not having theorems to prove or an API to document, many writers retreat into new-age guruspeak, and start talking about the Zen of X or a paradigm shift in Y. The mere act of writing a book betrays a deep need to be taken seriously, but few people are capable of profound insight, and even fewer of communicating it without being banal. Instead of coming across as wise, many writers wind up sounding fuzzy and pretentious.

Authors that manage to avoid this trap often do so by steering their readers in the direction of revelation using the details of particular cases. One of the best examples of this is Stewart Brand's wonderful How Buildings Learn. Brand starts by observing that most architects spend their time reworking or extending existing buildings, rather than creating new ones from scratch. However, the way buildings change (or, to adopt Brand's metaphor, the way buildings learn from their environment and from use) is all but ignored by most architecture schools and theorists. By presenting examples ranging from the MIT Media Lab to a one-room extension to a house, Brand encourages us to see a deeper pattern that has no simple written description. At the same time, he uses those insights to argue that since buildings are always going to be modified, they should be designed to accommodate unanticipated change.

Of course, the same is true of programs, and that's one of the reasons this book made such a deep impression on me. If Brand had used "program" instead of "building," and "programmer" where he'd used "architect," everything he said would have been true of computing as well. A lot of software engineering books try to convey the same message about allowing for change, but few do it so successfully.

In much the same way, Jeff Taylor's Tools of the Trade is ostensibly about carpenter's tools, but is really about how the tools and materials we use to build things can teach us how to build things better. Anyone who's thinking about writing a book about programming in the first person should read Tools of the Trade first, in order to see how such writing ought to be done.

Malcolm McCullough's Abstracting Craft: The Practiced Digital Hand is another book about tools, but one that is directly related to computing. According to McCullough, craft lies between art and manufacture; where art creates unique objects with no practical utility but a lot of aesthetic appeal, and industrial manufacture creates an arbitrary number of identical, useful objects, craft creates useful things in small batches by hand. Two of the key aspects of craft are the physical feedback that comes from working materials such as clay or wood, and the way in which the quality of the final product depends upon the personal skill of its creator.

McCullough argues that CAD packages and imaging tools like Photoshop satisfy these criteria, and that desktop publishing is a 21st Century craft in the way that carpentry was one in the 19th Century. All that's really missing is tactile feedback of the kind that guides potters and chefs, but the next generation of input devices will probably provide that.

This book says a lot of thought-provoking things, but I came away feeling that they could have been said in about half as many pages. To be fair, however, the author's audience is not the craftspersons he is writing about, but his fellow academics, and they probably wouldn't take him seriously if he didn't meet a quota of hyphenated neologisms.

Darwin Among the Machines: The Evolution of Global Intelligence is another thought-provoking book about computing in the wider sense. Two quotes from the preface give a feeling for its scope:

"In the game of life and evolution there are three players at the table: human beings, nature, and machines. I am firmly on the side of nature. But nature, I suspect, is on the side of the machines...

"This book is not about the future. Where we are at present is puzzling enough. I prefer to look into the past, exercising the historian's privilege of selecting predictions that turned out to be right...The future is where we see questions to which the answers are up to us:

"Do we remain one species, or diverge into many?

"Do we remain of many minds, or merge into one?" 

It would have been very easy to write a bad book about these topics, and when I read the publisher's blurb (which mentions the World Wide Web in the first sentence), I was afraid that Dyson had done so. Instead, he has given us an intellectual history of the idea of global intelligence. He touches on Hobbes' analysis of society as an organism, on Darwin and the theory of evolution, on Turing and von Neumann, on neural networks and cellular automata, on game theory, cybernetics, the origin of life, and Olaf Stapledon's science fiction novels.

Dyson doesn't add many new ideas to this rich stew, but instead traces connections, particularly ones that are only evident in hindsight. What he has produced is an introduction to the necessary texts of the digerati, a guide to books and names and ideas that are fashionable among those who like to think that they're creating the world that will exist a century from now (rather than merely getting rich). That is, I think, the reason for this book's greatest weakness: its Anglo-centrism. People who didn't write in English are very thinly represented, and those who are not presently fashionable are not seen at all. For example, Marx's theories of societal evolution are at least as interesting in this context as Hobbes', but Marx doesn't even appear in the index. Teilhard de Chardin is also missing, perhaps because his optimistic view of the divine as an asymptote seems sophomorically naive at the end of this brutal century. Still, if I were twenty-one again, I would devour this book, and use its bibliography as a road map for further reading.

Of course, once all the deep thinking has been done, you've still got to roll up your sleeves and get stuff built. McCormack and Jones' Building a Web-Based Education System is about exactly that. The authors teach computer science in Ireland and Australia respectively, and this book is about what they've learned from trying to do their jobs over the Internet. After an overview that looks at why you might, or might not, want to try putting your class online, the book talks about analyzing and prioritizing needs, designing an interactive web site, preparing content, distributing that content, communicating with students, assessment, other management issues, tools, and the nuts and bolts of setup and maintenance. If it sounds comprehensive, it is -- basic pedagogical principles are mixed in with bits of JavaScript and discussions of computer security.

That mix is the book's greatest weakness as well as its greatest strength. Simply put, you'd have to be a pretty good programmer to make heads or tails of some of the things the authors say: w3-mSQL, Perl, and some clever HTML are presented with little or no explanation. If your background was education, rather than computing, you'd find the material on preparing lesson plans as slow as the source code is opaque. I think there's a real need for a book on this subject, but unfortunately, I think that most of this book's potential audience will find it hard to use.

Similarly, one of O'Reilly's new Windows books also is not really what its intended audience would want. I was hoping that Windows NT in a Nutshell would give me a road map for Windows in the way that an earlier O'Reilly book explained UNIX. A comprehensible explanation of NT security and file permissions would have been enough to make me happy. Instead, the first six chapters (of seven) gave me splay diagrams showing where to find things in NT's system menus, along with a point-by-point summary of what those menu items did. This is useless: If I don't know exactly what I'm looking for, I'm not going to be able to find it in a book that's organized this way, and if I do know what I'm looking for, I can probably find it in the online help just as easily.

Windows NT in a Nutshell was only partially redeemed by Chapter 7, which finally started to talk about how everything fits together. If its brief overviews of software installation, system administration, and the hundred and one headaches that are Windows networking had each been blown up into a complete chapter, the result would have been a book worth buying.

In contrast, Windows Annoyances is a bargain, even though most of the material it contains is available online at http://www.annoyances.org/win95/. This book is about how to get things done with Windows, or, more precisely, how to get things done despite Windows. The book's scope is made clear by its opening sentences:

"Microsoft has inflicted Windows 95 and (for the brave) Windows NT 4.0 upon millions of unsuspecting users. Your mission, should you decide to accept it, is to create a usable operating system from what you've been provided."

Want to know how to back up and restore your registry, so that if a software upgrade fails to install properly, your machine won't be completely crippled? That's in here. Want to delete some of those undeletable icons on your desktop? That's in here too. Want to print a directory listing (it's a 12-step process)? That's on page 102, which I've photocopied and taped on the side of my machine. In short, if you want to make Windows work for you, instead of wasting time finding ways to work around Windows, you should either buy this book or spend a few hours browsing its web site.

And speaking of web sites, have you heard that HTML is obsolete? This is the Web, remember; "forever" is Webbish for "the next six months," The Winter 1997 issue of O'Reilly's World Wide Web Journal (which is printed in book form) is devoted to XML, the eXtensible Markup Language. As the scale of web sites has grown, so has frustration with HTML's rigidity. Since there is no standard way to define new tags, there is no way to mark up pages with semantic tags like PART-NUMBER instead of presentation tags like TT. XML provides that extensibility by incorporating many of the features of SGML (the Standardized General Markup Language) that were left out of HTML. New styles can be specified in a variety of ways, along with new behaviors for links and other active elements. The result is a way of defining content and layout that ought to be able to carry the weight of ever-larger web applications for several forevers.

This W3J issue contains the then-current spec for XML, some notes on its history and likely future development, and some technical papers that show off XML's capabilities, or, in the case of Nelson's "Embedded Markup Considered Harmful," look at some alternatives to the direction XML is taking us. The only thing that's missing is a discussion of XML processing tools -- the title of one article, "XML: Can the Desperate Perl Hacker Do It?" is one sign that stream-based tools have reached their limits, and that something more sophisticated is needed (http://www.ercb.com/feature/feature.0012.html#stwww). Overall, the level, depth, and quality of the articles in this issue is variable, but until the inevitable tsunami of XML books hits the stands (and even after it does), this is a pretty good resource to have handy.


How Buildings Learn: What Happens After They're Built
Stewart Brand
Penguin USA, 1995
0-140-13996-6

Building a Web-Based Education System
Colin McCormack and David Jones
John Wiley & Sons, 1998
0-471-19162-0

Windows Annoyances
David A. Karp
O'Reilly & Associates, 1997
1-56592-266-2

Windows NT in a Nutshell
Eric Pearce
O'Reilly & Associates, 1997
1-56592-251-4

XML: Principles, Tools, and Techniques
Dan Connolly (ed.)
O'Reilly & Associates, 1997
World Wide Web Journal, Vol. 2, No. 4
1-56592-349-9

Tools of the Trade
Jeff Taylor
Chronicle Books, 1996
0-8118-1273-1

Darwin Among the Machines: The Evolution of Global Intelligence
George B. Dyson
Helix Books/Addison-Wesley, 1997
0-201-40649-7

Abstracting Craft: The Practiced Digital Hand
Malcolm McCullough
MIT Press, 1996
0-262-13326-1


Copyright © 1998 DDJ Electronic Review of Computer Books
Created 7/11/1998 / Last modified 7/11/1998 / webmaster@ercb.com