It will probably never be a popular party game, but here goes: #1: Ivan Sklyarov's Puzzles for Hackers. This is laid out like most other programming puzzle books, except all the puzzles in this one involve breaking codes, hiding files (or finding ones that have been hidden), and so on. Working through them is very much like riding in an original World War II Jeep: bumpy, often bone-jarring, and exhilirating. I haven't had this much fun with a book in a while; recommended. #2: Forbes' Imitation of Life. An increasing number of computer systems draw on biological analogies: entire businesses are now built around self-healing systems, genetic algorithms, and fighting viruses. At the same time, computing has given us new ways to look at living organisms---it's no longer considered strange, for example, to ask what and how a cell computes. This survey, which is written at the same level as the typical Discover article or Nova episode, does a good job of tying these topics together. The prose flows smoothly, the illustrations are nicely chosen, and the author's enthusiasm for the subject comes through clearly. Also recommended. #3: Hunley's Using Open Source Web Software with Windows. This is one case where first impressions are correct: everything in this book can be found on the web fairly easily. Hunley's contribution is to pull it all together, organize it, and fill in some of the potholes that often trip up novices. If you already have Apache and PHP running on your XP machine, you're well beyond what this book covers; if you're about to do it for the first time, this may save you considerable grief. #4: Pugh's Prefactoring. While well-written, it struck me as a case of the whole being less than the sum of its parts. Pugh touches on a wide range of developer-oriented issues, ranging from eliciting requirements to the right way to document to aspect-oriented programming. The whole is supposed to be tied together by a running example (a CD rental business), but it just didn't work for me: every single piece of advice is well-founded and worth following, but I never felt like I knew where the author was taking me. #5: Moyle and Kelley's Cryptographic Libraries for Developers. Having worked on a security product for several years, I firmly believe that the real reason so much software is insecure is that the APIs and documentation developers have to wade through makes security several times harder than it ought to be. I therefore had high hopes for this book, both because of its cross-library approach, and because it promised to cover the context in which crypto libraries are used. Unfortunately, the first third of the book nearly put me off it---paragraphs that run for a page and a half, and poorly commented five-page code samples, are not the way to engage a reader's interest. Once past that, though, the book does pick up and offer a well-informed look at several major libraries. I think there's room for improvement, but until then, this one is worth having on your shelf.
Nancy Forbes: Imitation of Life: How Biology is Inspiring Computing. MIT Press, 2005, 0262562154, 171 pages. Eric Hunley: Using Open Source Web Software with Windows. Charles River Media, 2006, 1584504307, 334 pages. Ed Moyle and Diana Kelley: Cryptographic Libraries for Developers. Charles River Media, 2006, 1584504099, 464 pages. Ken Pugh: Prefactoring. O'Reilly, 2005, 0596008740, 220 pages. Ivan Sklyarov: Puzzles for Hackers. A-List, 2005, 1931769451, 336 pages.