Channels ▼
RSS

Design

Two and a Half Books


Gregory V. Wilson is a contributing editor to Dr. Dobb's Journal. He can be contacted at gvwilson@cs.toronto.edu.


Release It!: Design and Deploy Production-Ready Software
Michael Nygard
Pragmatic Bookshelf, 2007
326 pp., $34.95
ISBN 0978739213

Programming Collective Intelligence: Building Smart Web 2.0 Applications
Toby Segaran
O'Reilly Media, 2007
192 pp., $39.99
ISBN 0596527055

The Myths of Innovation
Scott Berkun
O'Reilly Media, 2007
192 pp., $24.95
ISBN 0596527055


Part way through Tracy Kidder's classic look at the computing industry, The Soul of a New Machine, one of the hardware team burns out and quits. After months of worrying about clock ticks and microseconds, his intent is to think about nothing shorter than a season. When I first read the book, in the summer of my 20th year, I pitied him; now, at 44, with the leaves turning orange and my daughter turning six months, I feel rather envious.

That's one of the reasons I read as much as I do: It gives me an excuse to slow down a little, and to think about something more interesting than the grant application deadline that's about to whoosh by. Michael Nygard's Release It! is a perfect example. It is full of useful information and practical advice, interspersed with war stories that help ground the general in the specific. As the blurb on the back cover says, Release It! is about designing applications to deal with the things that don't happen in the classroom or the lab: load fluctuations, power outages, upgrades, tangled configurations, and the fact that Firefox sometimes sends two HTTP requests when you click on a link once. (Okay, that's not in this book, but it's the problem the DrProject team is wrestling with right now, and this book has given me a couple of ideas for dealing with.)

Nygard's focus is on how to make enterprise-scale applications work in the real world. He assumes his readers are familiar with something like J2EE, and with server farms, web caches, and industrial-strength databases; what he explains is how to use them more effectively. As an example, the chapter on capacity patterns talks about connection pooling, the importance of building a flush mechanism into every cache, when precomputing content will pay off, why you should tune garbage collection, and why object pooling no longer makes sense (if in fact it ever did). The rest of the book is equally practical, and just as well written. It would make a great text for a second course in web programming, and ought to be read by everyone tasked with building an e-commerce site capable of handling a customer's rush season.

Toby Segaran's Programming Collective Intelligence is equally practical, though its subject is very different. The book is an introduction to the machine learning techniques that have helped make Google and Amazon household names. In Chapter 2, for example, Segaran explains how recommendation engines work by building a simple one in Python. In Chapter 3, he implements some simple clustering algorithms; in Chapter 4, he covers page ranking, and so on. Later topics include optimization, spam filtering, decision trees, and many other goodies.

Segaran's examples are all interesting, and both his explanations and his code are exceptionally clear. Some readers will find there's more math in the book than they'd like, but given the subject matter, that can't be helped. With a few more exercises at the end of each chapter, it'd be a great textbook; as it is, it's an excellent introduction to a topic that grows more important every day.

Last up this month is Scott Berkun's The Myths of Innovation, which, I'm sorry to say, left me cold. It's partly my fault: I didn't subscribe to the myths Berkun set out to debunk, so there weren't any "ah ha!" moments as I read it. I'm also instinctively sceptical of "big picture" overviews: whenever someone makes a sweeping general claim (and Berkun makes a lot of them), my first reaction is to say, "Yes, but." As an undergraduate, I would have considered this book a life-changing experience. As a middle-aged first-time father with two-and-a-half startups behind me and grant proposals to write, I didn't feel bad about setting aside to finish another day.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video