At the Forge - 2010 Book Roundup
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.
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.
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.
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.