At the Forge - 2010 Book Roundup

Reuven shares his list of favorite Web/database books from the past year.
New Languages

It's nice to work with languages that you already know, but there's a lot to be said for learning and working with new languages as well. Each language teaches you something new and (I would argue) improves your understanding of other languages you already know. So, I was pleased to discover Seven Languages in Seven Weeks by Bruce Tate, published by the Pragmatic Programmers. The book reviews (as you might expect) seven programming languages, each quite different from the others: Ruby, Io, Prolog, Scala, Erlang, Clojure and Haskell.

I had been meaning to learn several of these languages for the last year or two, and although I didn't take seven weeks to read through the book, I did use it as a way to familiarize myself with several of these languages and where they might be useful. (I'm particularly interested in Clojure and Scala, in no small part because of the possibilities for Web development in those languages.) I found the writing to be clear, the examples good, and perhaps most important, the comparisons with other languages were useful. Even if I'm not going to program in Io, for example, it's interesting to see how the data types work and how a prototype-based language operates. As the author himself writes, Io gave him a new perspective on JavaScript, undoubtedly the most popular prototype-based language in use today.

Another popular language, although we might not think of it as such, is SQL, the query language used in all relational database systems. Just as there are books and tutorials about “design patterns”, examples of how you can and should structure your code, a growing number of articles and books talk about “antipatterns”, examples of how you should not structure your code. The book SQL Antipatterns by Bill Karwin, published by the Pragmatic Programmers, introduces a number of ways people should not use SQL and relational databases, and then it shows ways in which database tools can and should be used. I was very happy to see that he recommended against using the “float” type, against searching through textual columns with patterns like '%target%', and against storing multiple values in a single column. I have seen these (and more!) on many projects, and it's nice to have a checklist for what to avoid. I largely disagree with the author's argument in favor of putting images and other large binary objects inside BLOB columns. That said, he made a fairly convincing argument for his case and acknowledged that this is a subject of great controversy. Especially if you're fairly new to database and query design, this book might well come in handy.

World-Wide Web

When Steve Jobs publicly announced that there would be no support for Flash on iPhones and iPads, many people wondered what the alternatives were. Jobs told everyone that HTML5 offers most or all of the same capabilities. My response was, “Hmm, I guess HTML5 is further along than I thought—I'd better check it out.” I've since been reading up on the various parts of the emerging HTML5 standard, and I must admit that it seems very compelling, at least at this stage.

My main source of information is Mark Pilgrim's Dive into HTML5, published both for free on-line and also as a book from O'Reilly. I have long found Pilgrim's writing to be clear and entertaining, and I was not disappointed by his description of HTML5. The Web version of his book has the advantage of being able to demonstrate the features alongside the description, letting you see what your browser can do, with graphical depictions of what other browsers would show instead. If you are a Web developer of any sort, you should read Pilgrim's book, and then bookmark it as a reference to which you will turn many times during the coming years.

Drawing on the deserved praised for Douglas Crockford's JavaScript: The Good Parts, O'Reilly is publishing more books of this type. Crockford's volume is still the biggest bang for the buck, in no small part because he manages to tell you what parts of JavaScript you should avoid. But another book in this series, HTML & CSS: The Good Parts by Ben Henick, is readable, interesting and has given me the confidence to (once again) try to use CSS for something more advanced than basic boxes.

A surprisingly interesting book, also published by O'Reilly, is Web Reputation Systems by Randy Farmer and Bryce Glass. My dissertation software includes a rating system, so I was interested in what these authors had to say on the subject. I didn't expect there would be enough to fill an entire book, but I found that they provided interesting food for thought, as well as practical considerations for the implementation and incorporation of rating systems into a Web site. If you're considering the inclusion of such a rating system into your Web application, this book is worth at least a look.