Radsoft
 About | Buy | News | Products | Rants | Search | Security
Home » Resources » Red Hat Diaries

Red Hat Diaries/0042

Richard Cory

They say that Richard Cory owns one half of this whole town
With political connections to spread his wealth around
Born into society, a banker's only child
He had everything a man could want, money grace and style

The papers print his picture almost everywhere he goes
Richard Cory at the opera, Richard Cory at a show
And the rumor of his parties and the orgies on his yacht
Oh, he surely must be happy with everything he's got
  -- Paul Simon

I rarely hate an author. I rarely hate a book. I once tried to read Lolita by Vladimir Nabokov, and quickly came to the conclusion that Nabokov was a twit, but I didn't hate him. I find Faulkner much too wordy, but I don't hate him either. I find Hemingway not wordy enough, but I don't hate him - almost. I think Brian W. Kernighan is the finest software author going, and I almost love him. I think I really might hate Bjarne Stroustrup, but he really tries hard to be hated, so he's excused. In short, one does not normally get a gut reaction of hate about an author. Which brings us to this remarkable volume 'Building Cocoa Applications' by Simson Garfinkel and Mike Mahoney. Try as one may, it's impossible to not hate them.

The book is a heavy one - over 600 pages. Right there the promise is good. But the warning lights go on almost immediately. The preface says:

'Building Cocoa Applications' is a no-nonsense hands-on book that's intended for serious developers.

Right there you have to wonder: Why is it necessary to point out that the book is 'no-nonsense'? Shouldn't all books of this type be 'no-nonsense'? The only reason for mentioning this that comes to mind is that the book is in fact filled with nonsense - a suspicion that is borne out as the reader proceeds.

Further down in the same preface:

If you carefully read this book from cover to cover and diligently build the sample applications with us, we're confident that you'll soon be writing your own sophisticated Cocoa graphics applications.

'Graphics' is an operative word here. No such limitation is written into the book title or any advance blurb about it, but a quick perusal of the table of contents shows that this is true: 'Building Cocoa Applications' does not get into the nitty-gritty of building real world applications, but concentrates on three extremely trivial projects, a calculator, a 'math paper', and a graph program. Most of this is totally irrelevant for the professional application developer.

One of the most ubiquitous controls in modern GUI programming, the table, or what Microsoft calls the listview, or what NextStep calls NSTableView, is not even mentioned here. Almost all programs of today do some kind of rudimentary data processing, putting information into records displayed as rows and fields displayed as columns. Windows Explorer uses this control all over the place. The Windows desktop is precisely such a control. All the Open and Save As dialogs in Windows, as well as the corresponding dialogs in OS X, use the table. Yet authors Garfinkel and Mahoney omit the table entirely.

Instead they proceed to - to put it succinctly - waste the reader's time (and money). Despite a few preliminaries in the introductory chapters, the book does not really begin until page 141 - scrap one quarter of the book right away. What do the authors take up in those first 140 pages? Why a sightseeing tour of the Aqua interface is what, and from an end-user standpoint to boot. While there are many GUI programming courses that waste students' time by dragging them on a sightseeing tour of the programming interfaces, 'Building Cocoa Applications' has got to be the first book that wastes students' time by dragging them on a sightseeing tour of the end-user interface itself. The first words of the authors, expounded in their preface, come back to haunt.

A no-nonsense book for serious developers.

But the authors don't stop there. They waste a whole chapter on a less-than-trivial history of Unix and Darwin, and they continually fill their pages with idiotic instructions which serve a single purpose: fill out the pages. Adding insult to injury, they haven't even bothered to update all their illustrations, with many of them still exhibiting the NeXTSTEP interface used back in 1992 when they wrote their first book in this vein.

Good materials will set prerequisites. If they are intended for 'serious developers', they will not waste the reader's time with fluff interesting only to those that are not. Good materials will offer predominantly real world examples. The reader should be able to address a real world programming assignment with 'now I know how to write this kind of program.'

But this book devotes a third of its 600+ pages to matters interesting only to those who cannot hope to be called serious developers, and even more to outright 'filler'. As it is patently obvious - at least to this reader - what the score is, and as the intention of filler is to fool the reader, and as the authors must have believed they could fool their readers, the authors cannot be particularly intelligent - their massive array of academic degrees nonwithstanding.

And this book, as Hillegass's, excels at providing programming samples which have no relevance in the real world. Serious developers are not going to be writing calculators or graphic programs that can draw squares which turn into hexagons at the drag of a slider. Serious developers cannot use this book as the foundation for serious development - there is nothing to build on, and providing materials which so completely avoid the real world is so difficult that one must wonder whether the authors are inept or just plain devious.

It's one thing to be handed a trout for dinner, but it's quite another to be taught how to catch your own. And the latter is infinitely better not only because you will know how to get your dinner tomorrow and every day after that, but more importantly because the trout you've just been handed might smell fishy.

This book has a strong fish smell about it. It's impossible to not hate the authors when they perpetrate a game like this.

But I work in his factory
And I curse the life I'm living and I curse my poverty
And I wish that I could be, oh I wish that I could be
Richard Cory

Click here »

About | Buy | News | Products | Rants | Search | Security
Copyright © Radsoft. All rights reserved.