Fragment of Your Imaginat
|Column Tag:||Book Review
Code Fragments Explained
A shared library of procedure pointers for the resourceful programmer
By Mike Scanlin
A Fragment of Your Imagination:
Code Fragments and Code Resources for Power Macintosh and
copyright line:By Joe Zobkiw
Addison-Wesley, 1995. ISBN 0-201-48358-0.
500 pages (softback with CD ROM). $39.95.
Have you looked at how big the complete set of Inside Macintosh books is nowadays? My incomplete set is over two feet wide and growing. (I prefer paper to on-line help.) Does the very voluminosity of this documentation, as Frederick Brooks of Mythical Man-Month fame would say, represent some new kind of incomprehensibility? Im not sure. While I find Inside Macintosh indispensable, I also find it somewhat unwieldy at times. Fortunately, there are other, more readable sources of truth available. A Fragment of Your Imagination is one such source.
This book is a kind of a Cliffs Notes for the Code Fragment Manager. It presents you with discussion and source code for any type of code fragment you might want to write: LDEFs, CDEFs, WDEFs, INITs, XMCDs, cdevs, thngs, plug-ins, etc. As do most programming books, it comes with a CD-ROM bearing all the source code in the book plus a version of CodeWarrior Lite.
Theres little doubt that anyone who wants to write a 68K, PPC or fat code fragment would find it useful to have a piece of working sample code to start with. Thats the primary purpose of this book. It gives you examples of each type of code fragment (LDEF, CDEF, etc.) for each environment (68K, PPC, fat). When you think about it, theres not much that can be said on the subject of stand-alone code fragments. Once youve written one or two you pretty much get it and youre on your way. But its nice to have some hand-holding for that first one, and thats what this book does.
I like the fact that this book focuses on useful examples. The entire second half of the book is source code listings. The first few chapters cover the basics of the Mixed Mode Manager, Universal Procedure Pointers and Shared Libraries. After that, the author gets right into it by showing you how to write a fat INIT called MenuScript that allows you to replace any menu item in any program with an AppleScript. Each of the next eight chapters covers a different type of code resource, explaining the special cases that come up for each kind of code fragment, along with some example source on how to deal with it.
The examples in the book are reasonable. They are one or two steps above minimum working examples, which is what you want in a code example. If youre trying to learn how to patch a trap, for instance, you dont need 1000 lines of unrelated code. You just want the minimum to get the job done, plus a little visual feedback code to make sure its being called. The author starts most sections by giving you the bare minimum of code necessary to write a particular type of code fragment. He explains how this bit of glue code makes the code fragment work. Then he adds a bit of unrelated code that does something visual so youll know the code is being called and working. Its a good way to learn what the minimum code for a particular fragment type is.
While I liked the straightforward examples, completeness and screen shots, there are some things I did not like. There are too many cute expressions and attempts at humor. For example: The termination routine couldnt be much simpler without breaking a law or two. I guess the author is trying to make the book friendly or funny, but there are so many of these lines that they come off as a bit childish.
After reading the book I couldnt help but think that it was physically much larger than it needed to be. The outer margins are over two inches wide, but that space is never used for anything. And the leading (vertical space between lines) in the source code examples is too large. Id rather see more lines of code on the same page so I dont have to turn so many pages when studying it. By the same token, the commenting style he uses in the second half of the book really spaces the code out vertically. Id rather have it more compact. Overall, I couldnt help but feel that the author was told to write a 500-page book and was only able to produce 300 or so pages.
Despite my nit-picking, I have to say this book does the job it set out to do - inform Macintosh programmers (who have a bit of Mac programming experience already) on how to write many kinds of code fragments. Its a nice distilled version of the relevant tech notes, DTS examples, and Inside Macintosh. I would definitely recommend it for your first or second code fragment. But if youve already done a few of those you probably wont get much out of this book.