This is a review I wrote on Amazon for Programming Collective Intelligence by Toby Segaran. I decided I should post a copy of it here for safe keeping. I hope to write a more detailed review of it at some point, but we'll see how far that idea gets.

I first learned of this book just a few weeks ago, shortly before it was available. I immediately read the sample chapter on the publisher's website and was certain I had to get a hold of a copy.

I was not in the least bit disappointed with what I found. It has been quite a while since I've looked at any Python code (I'm more of a Ruby fan, personally), but the code is easy to follow and it's a simple matter to extract the basic concepts into any language.

I have spent quite a few years now watching the field of machine intelligence from the sidelines, occasionally reading the odd technical write up or wikipedia article, trying to wrap my brain around the basic ideas. The thing is, it's not clear to me that in some regards, it's not that complex. It's just that most of the existing books and articles are written for those immersed in the field. This book is not like that. It explains things in clear language that is easy to follow, using simplified examples and making excellent use of graphics to "show" you how it works.

If you really want to dig in deep, Segaran provides exercises at the end of each chapter and gives you an appendix full of mathematical formulas (the "pure" representation of the algorithms).

Finally, I should mention that the last chapter does what so many other technical books should but don't: it clearly summarizes everything he has shown you. He does this in a straightforward way so that you won't have to go searching through the book, rereading everything again, to put these techniques into practice.

This is a brief review I wrote of Practical Ruby for System Administration by André Ben Hamou. I was going to try and have it published elsewhere, but decided I should post it here.

Ruby has been growing at a staggering rate of popularity over the last couple of years. In particular, its use as a web-programming language has probably not failed to get many peoples' attention. However, given the precedence set by languages like Perl and Python for use in systems administration related work and the undisputed reality that Ruby has been influenced by these predecessors (in particular Perl), it should come as no surprise that its growth in the sysadmin world has been similarly on the upswing. It should also be no shock to see books like Practical Ruby for System Administration, by André Ben Hamou, starting to appear on the shelves.

The Good


This book attempts to give a brief introduction to the capabilities of Ruby as applied to the varied needs of the system administrator. While this is a large and complicated field and the book is relatively slim at 239 pages (including the index), André manages to squeeze in a basic if not complete introduction to Ruby. He also covers some of the more useful tricks such as metaprogramming and the large variety of options available for the ruby command line. Related to this, one particular highlight is the section in chapter 2 on one-liners: those incantations that are such a common feature in the sysadmin's toolbox.

André discuss performance concerns, which one would tend to think aren't generally an issue for administrators, but he points out some good examples of why this might be worth considering. He also provides solid discussions of object storage and retrieval, file management, testing and documentation; all important topics for writing production worthy and maintainable code.

In addressing areas of practical application, he discusses data access (including retrieval from web-based systems), general networking and network monitoring. His chapter on network monitoring is especially relevant as he demonstrates how to access device information over SNMP, a mainstay of systems management.

The Not-so Good


Overall this book leaves me feeling a bit like it's missing some major pieces and takes a particularly slanted view of the world of system administration. Among other things, he dismisses LDAP outright (how many sysadmins are going to have to integrate with Active Directory at some point?).

There is also a heavy focus on Rails. Mind you, this book is not called Practical Rails for System Administration. Its focus is purported to be about using Ruby for everyday tasks, yet, he has the reader install the entire Rails framework just to use the ActiveRecord (AR) object-relational mapping library for database access. The code needed to access AR without Rails is marginal at best, but he doesn't even mention it.

Overall, I can't say exactly that I'd recommend this book. It's useful and has a lot of good information, but I feel it could lead someone in the wrong direction on a lot of issues and it fails to address some important points. As an introduction to the world of Ruby from a sysadmin perspective, it might serve some utility, but I would hope the reader finds other sources of information for most of their daily chores.