Aug
24
Recommended Ruby and Rails books (August 2009)
Filed Under Books, Merb, Ruby, Ruby on Rails | 7 Comments
I finally got around to updating the Ruby and Rails book pages. The existing list was getting a bit obsolete and I didn’t like the idea of recommending old books to newcomers. I also had some interesting new entries.
Without further ado:
A few people may disagree with the choices, but I think most experienced Ruby and Rails programmers, who’ve read those books, will concur with my recommendations. I’m quite confident that these are, all things considered, some of the best books available on the subject.
A word to the publishers
As tempting as it is to collect Ruby and Rails books, these days I don’t feel I can economically justify the act of purchasing every Ruby or Rails book put out there. So if you are a publisher or an author, and you’d like for me to consider your book, you are certainly welcome to send me a review copy. I will definitely read it, but only include it on these lists if it’s either outstanding or as good as the existing ones. If it’s a programming book that’s not related to Ruby/Rails, yet is really good, I would consider reviewing it on my blog.
Aug
15
Do programmers still buy printed books?
Filed Under Books, General | 39 Comments
Yesterday I published a post titled My latest order of programming books, which received a fair number of comments both here and elsewhere online.
Aside from a few good suggestions for other must-read books for programmers, there were several comments about how buying hard copies of books in this day and age is stupid. A few advocated piracy as an alternative to buying books, printed or not. Aren’t we supposed to be a group of professionals? Do we really believe that pirating books is the right answer to our profession’s need for knowledge?
The most sensible recommendations concerned the use of legally free, available material online, as well as suggestions that the $250 could be spent on services like Safari Books Online.
I love Safari Books Online. I used to have an extended trial account for a few months, and utilized it constantly. I have access to Books24×7, an alternative, less extensive service as well.
Safari Books is ideal when used as a reference. You have access to thousands of books from major publishers, so virtually any search will lead you to a few relevant volumes dealing with the subject you’re looking for. It’s also great for keeping up to date with technology, thanks to “Rough Cuts” which are books that haven’t been completed yet.
It’s an extremely valuable service and I would recommend it to anyone in a heart beat. However, there a few reasons why I still buy hard copies.
I spend long hours working and staring at the computer screen. A printed book is a chance to take a break at night, and let my eyes rest a little. I find it refreshing. And let’s face it, for extensive reading, paper is much easier to read from than the screen.
Likewise, when I’m holding a book or have it open on my desk, I’m in “book reading mode”, which makes it far easier to immerse myself in it. This means that I’m focused on the task and can proceed quickly. The only context switch that happens is between the book and the editor/shell, if it’s the kind of book that warrants typing along. If you are reading a book in a browser tab, it’s very easy to think, “I’ll just check my email for a second”, or introduce similar distractions. I’m sure I’m not alone in this respect.
When I buy a physical copy of a book, I feel psychologically more obliged to at least try to get through it. Online I experience a paradox of choice of sort. With hundreds of interesting books available there in front of me, I’m more inclined to excessively multitask, and end up checking out different books while I should still be reading the current one.
And let’s not forget that not all books are legally available online. I’ve found that many advanced computer science books are not yet available on Safari Books or Books24×7. For example, The Art of Computer Programming, Purely Functional Data Structures, Types and Programming Languages, Programming Pearls, and other worthy suggestions that were made in response to my first post, are all not available on Safari Books. As well, mathematical books that can be of use to the serious/discerning programmer are also not included (understandably).
Lastly, and I realize that this is a “vanity point” and perhaps the most irrational one on this list, I like to have a beautiful collection of books on my bookshelves. If I’m going to spend $xxx a year on books, I’d prefer to have something to show for, beside my newly acquired knowledge.
However, the sheer volume of free available content has slowed down the number of books I’ve purchased in the past few years. And I’m thinking about re-joining Safari Books Online nevertheless, as I see it as being complementary to printed books. The Safari Library option is somewhat expensive ($42.99 per month), but for the price of an extra printed book per month, I gain full access to a huge catalog of programming books and a growing list of “Rough Cuts”.
With the amount of free knowledge available, useful paid services, research papers, and relatively good deals on printed copies from Amazon, the real constraint remains time not money. But claiming that purchasing hard copies is obsolete or worse, stupid, is… well, asinine, in my opinion.
What’s your take? Do you think Safari Books Online is worth it? Do you still buy printed copies of your professional books? Do you even read programming books at all these days?
Aug
14
My latest order of programming books
Filed Under Books, General, Reviews | 12 Comments
A few days ago it was my birthday. This year I decided to reward my aging self with some books I’d had my eyes on. My budget was roughly $250, nothing to snicker at, but programming and computer science books aren’t exactly famous for being inexpensive.
The hardest part was shortlisting only a few titles, out of a substantial number of books that interest me. This ruthless streamlining was not solely motivated by cost either. Time is by far the most non-negotiable constraint, and as pretty as certain books may look on my shelves, I’d rather get titles that I know I will reference often or read cover to cover.
Last night I finally placed my order on Amazon. Narrowing down my choices wasn’t easy, but I think I was able to get a lot of bang for my buck, so to speak. I’m sharing the list of books I ordered, and my rationale behind selecting them, in the hope that some readers will find this information useful. You’ll probably find one book at least that tickles your fancy.

1) Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
Very high-level languages have major advantages, but they tend to conceal many details. As a result these low-level details are often forgotten, overlooked or no longer taught. I’m talking about gates, bit manipulation, etcetera. Ten years have passed since I last sat in a computer architecture class or programmed in the MIPS assembly language, so I see this book as a refresher about this sort of interesting details that lay between hardware and software.

2) Programming: Principles and Practice Using C++ by Bjarne Stroustrup
I’ve been meaning to get more serious about learning C++ for a while now. The fact that I chose this book may seem odd. After all, it’s a C++ book for CS 101. I’m fully aware that I won’t find many new concepts in it and that the pace will probably be very slow to me at time, as it’s aimed towards newcomers. I opted for this book, among other reasons, because it’s very recent and was written by Bjarne Stroustrup (C++’s creator) himself. It’s a modern overview of C++ today and should cover all the essentials of writing portable code with a slant towards real world work, including parts of the STL. I’m interested in revisiting well known concepts from the perspective of C++, and this title should work as a good introduction before I switch to The C++ Programming Language, Effective C++, More Effective C++, Exceptional C++, and other advanced books. Lastly, I chose it because a good friend suggested it to me.

3) Processing: A Programming Handbook for Visual Designers and Artists by Casey Reas
Processing is another language I’m interested in. The idea of creating fancy visualizations of data is very appealing to my statistical side. This is probably another “basic” book, but I wanted to have a detailed tutorial on the subject. It’s also a very beautiful book. (Remember that deep down we are all hedonists.)

4) Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
I love “Uncle Bob”’s writing style and this book is, according to many, a wonderful addition to any software engineer’s collection. Apparently it’s Code Complete meets Refactoring meets Test Driven Development: By Example, all wrapped up in a single book. As much as that’s possible, naturally.

5) The Little Schemer (4th Edition) by Daniel P. Friedman
This is the first little volume in the “The * Schemer” trilogy. I’ve heard great things about this unusual Q&A book that straddles the border of functional and logic programming. I’m not new to functional programming, but I’m certain that this book will be an eye-opener nevertheless. There should be plenty of fun exercises inside. If I enjoy it as much as I hope, I’ll also get The Seasoned Schemer and The Reasoned Schemer, down the line to bring my understanding to the next level.

6) Introduction to Algorithms, Third Edition by Thomas H. Cormen
I own the second edition of this book, but guess what? They just released a revised edition with updated content, new algorithms and it’s been expanded to take the world of multiple processors into account. If you are not familiar with this classic, don’t let the title mislead you, this is no “introduction”. It’s an excellent, rigorous tutorial and reference that every programmer should own.

7) Elements of Programming by by Alexander Stepanov
The toughest book of the lot. This newly released theory of computation book has incredible reviews. It should be a rigorous handbook of the mathematical foundations of programming. And at this price it’s a bargain, in my opinion. The examples are in C++, so I’ll quote part of the review by Bjarne Stroustrup.
“Elements” is a great book in that it can change the way you think about programming in fundamental ways: If you “get it” programming will never be the same again for you.
Reading “Elements” requires maturity both with mathematics and with software development. Even then it is so different from most books on programming that it can be hard going. The frequent comparisons of “Elements” to Knuth’s “The Art of Programming” is well earned.
— Bjarne Stroustrup
What are your thoughts on this list? I think I could have done a lot worse with my modest $250 budget. And as you can imagine, I’m pretty excited about their arrival and am looking forward to diving into them.
On a side note, this reminds me that I should start writing detailed reviews for the most interesting books I’ve read over the past few years, not just for Ruby books (recently updated) and Rails ones (to be updated soon).
Disclaimer: The links to Amazon have my referral. It’s a small contribution to this blog that won’t cost you a dime. If you are opposed to me making a few cents from my posts, feel free to select, copy and then paste the title that interests you into Google.





















