Monday Question: What books changed your life?

Posted by larrywright

Monday Questions is a recurring series on Approaching Normal. For more questions like this, please visit the archives.

I’m an avid reader, if you haven’t guessed by now. So today’s question is What books have changed your life?

As always, post your answers in the comments below.

Book Review: Beginning Ruby: From Novice to Professional

Posted by larrywright

I think Beginning Ruby: From Novice to Professional is a better first Ruby book than the venerable Pickaxe.

The previous statement is almost heresy in the Ruby community. Don’t get me wrong, you should own the Pickaxe. It’s a great book and certainly lives up to it’s description as “the definitive reference to Ruby”. However it’s much more of a reference book than an introduction to the language. And it’s huge – 864 pages. This is not a book you can just throw in your bag and carry around with you. It’s a book you would keep at your desk perhaps, dog-eared and coffee stained. In this role, it is ideal. As an introduction to the language, however, it leaves something to be desired.

Beginning Ruby, on the other hand, is an excellent (and I would argue more approachable) introduction to the Ruby language, written by one of it’s more notable users. Peter Cooper is well known, in both the Ruby and Rails community. He runs the Ruby-centered blog Ruby Inside, and has developed a number of applications in Rails, including the Snippets code repository, which was subsequently sold to DZone. Peter also has done a fair amount of writing over the years for a variety of sites.

The book is broken up into three primary sections, plus a handful of appendices:

  • Part 1: Foundations and Scaffolding – This is an introduction to the Ruby language. Starting with installation, and going through the basic structure of the language and it’s elements: strings, containers, and the like. There is a chapter on building basic Ruby programs that puts all of these concepts together. One nice bonus was a chapter on the Ruby ecosystem, which covers the various websites, irc channels, and other resources for Ruby developers.
  • Part 2: The Core of Ruby – This section covers the meat and potatoes of Ruby. It covers classes, modules, libraries, debugging and testing, databases, and advanced features. This is all tied together with a nice example application that implements a text-parsing bot. I liked that this application included unit tests, but it would have been nice if the testing was done test-first. This is a personal preference, but I think it’s a best practice and would like to see it demonstrated more in books like this.
  • Part 3: Ruby Online – As you would expect, this section includes some coverage on Rails. Its not exhaustive, and isn’t intended to replace a full-blown book on Rails. It does offer a thorough overview though. That’s not the sole focus of this section, however. Ample coverage is given to FTP, HTTP, and email, as well as raw TCP sockets and other networking type things. There is also a good chapter in here called “Useful Ruby Libraries and Gems”. The chapter itself is a bit misplaced as it has very little to do with the internet, but it is a very useful overview of a lot of the third party gems that you can install. I found myself using this section regularly on a recent project.

In addition to these sections, there are three appendices. The third appendix, called “Useful Resources” contains pointers to a lot of online resources which would likely be unknown to someone new to Ruby. I didn’t find much in there I hadn’t seen already, but I’ve been using Ruby for a little while. The first two appendices are a primer and reference for Ruby. These are both very good, and would be useful as references for a new developer (or someone who doesn’t have the entire ruby syntax committed to memory yet, like me).

Weighing in at over 600 pages, this is a comprehensive book. At the same time, it’s quite a bit smaller than the Pickaxe, which makes it much more portable (there’s also a PDF version available for $10 if you’ve purchased the dead-tree edition, for the ultimate in portability).

As with the last book I reviewed, this one appears to have been well technical reviewed. I didn’t notice any errors. I also enjoyed Peter’s writing style, which is concise but not dry.

In summary, if you want to learn Ruby, Beginning Ruby: From Novice to Professional is the book to buy.

Disclaimer: I received a free copy of this book from the publisher in exchange for a review. There were no conditions other than that, but in the interest of full disclosure, now you know.

Book Review: Practical Rails Social Networking Sites

Posted by larrywright

Summary

Rails Social Networking Sites walks you through the process of building a Web 2.0 social networking site (something like MySpace), called Rails Coders that includes the features you would expect in that sort of site:

  • User signup and management (based on restful_authentication)
  • Content management
  • Blogging (with web services)
  • Markup languages like Textile and Liquid
  • Mashups using Google Maps and Flickr
  • photo management (attachment_fu and RMagick)
  • Tagging

This book is not, of course, about building social networking sites, though that does serve as the exercise in the book. It’s about going beyond the basics with Ruby on Rails, and building something useful.

Rails Social Networking Sites is targeted at developers who have some experience with developing Rails applications. That said, you don’t need much. If you have read one of the other books on Rails or developed a couple of play applications, you’ll be fine.

Pros

There’s a lot to like about this book. It’s well written, and covers a broad range of useful topics. Here’s the things I really liked:

  • It covers useful topics in the context of a real-world application. Most of the Rails books out there (at least the ones I own or have looked through) cover the basics of Rails, and maybe a few additional plugins. Anyone building a real-world application will need to scour the internet for help with the other plugins available to do things like handle file uploads, user authentication, and the like. While this book doesn’t cover everything you could possible want to do, it covers a lot.
  • There is a very big emphasis on testing. It’s not TDD (see my note in the cons below), but in every chapter you will be shown how to build something, and then how to test what you built.
  • It’s current. The application is built in a RESTful style, and there is frequent mention of the changes/deprecations coming in the Rails 2.0 release.

Cons

There’s really very little wrong with this book. It appears to have been technical reviewed thoroughly, and as a result I didn’t find any glaring technical errors. That said, there are a few things about the book that I took some issue with:

  • The book frequently references blog posts as resources. This seems like a bad practice to me, as these urls tend to have a short lifespan. It’s very likely that many of these urls will be dead links within a year or so. To be fair, this is a book covering a rapidly moving technology, and it’s likely to be largely out of date in 18-24 months. Therefore, this may not be much of an issue. Still, it might be a better idea to link to the book’s website instead.
  • While the book does give ample coverage to testing (more than most books), it would have been nice if the testing was done Test First, rather than bolted on after the fact

All in all, these are really minor points.

Conclusion

Overall, I really liked this book, and I believe it will be very useful to anyone developing with Ruby on Rails. Whether you’re on your first application or you’ve been developing for a while, you will find useful information in Rails Social Networking Sites.

Disclaimer: I received a free copy of this book from the publisher in exchange for a review. There were no conditions other than that, but in the interest of full disclosure, now you know.

Monday Question: What are you reading?

Posted by larrywright

I’m going to start posting questions for my readers every Monday. At least until I run out of questions.

Last week, I posted a collection of mini book reviews. I have a bit of an addiction to books, which should be obvious by now. So today’s questions is: What are you reading? Doesn’t matter whether it’s fiction or non-fiction, technical or biographical. Let us all know what you’re reading (or have read recently).

What I've Been Reading

Posted by larrywright

Never Eat Alone: And Other Secrets to Success, One Relationship at a Time by Keith Ferrazzi and Tahl Raz

Geeks are, generally speaking, much better with technology than people – I’m no different. But the fact is your ability to build and maintain relationships with other people will take you farther in life than any technical skill you can acquire. For a lot of people, myself included, these are just not skills that come naturally. Fortunately for us, this book was written. Never Eat Alone does a very good job of explaining the hows and whys of developing and maintaining relationships over the long term. The book is a quick read, but explains very well some important concepts of “networking” (I term I don’t care much for, but that’s neither here nor there). Mr. Ferrazzi discusses why it’s important to build a network of associates, and then immediately delves into the the how. He also explains how to leverage your network when you need to, like looking for that new job, or when you need the help of a friend of a friend of a friend to close a big deal. This book is written in a casual style, and is peppered with real-world examples of what works and what doesn’t. If developing and maintaining relationships with people is not something that comes naturally to you, then you need to read Never Eat Alone

Developing The Leader Within You by John C. Maxwell

John Maxwell is one of the best authors on the topic of leadership. Developing The Leader Within You is easily the best book I’ve read on leadership. Mr. Maxwell covers how to develop influence with people, creating positive change, problem solving, and developing people – among other things. If you were to only read one book on the subject of leadership, this is the one I would recommend. Developing The Leader Within You covers the fundamentals of leadership, does it well, and does it in an easy to read manner. If you are (or aspire to be) a leader, you need to read this book.

Founders at Work: Stories of Startups’ Early Days by Jessica Livingston

This book is, very simply, a collection of interviews with the founders of successfull internet companies, such as del.icio.us, 37Signals, Craigslist, Flickr, and more. As such, it’s easy to read this book in small chunks – most interviews are only 3-4 pages long. It was written by Sarah Livingston, who is one of the founding partners at Y-Combinator, best known as “that VC firm Paul Graham runs” (Paul is one of the interviews in this book, naturally).

I really enjoyed reading this book. It gives a rarely-seen perspective on what it’s like in the early days of a startup. If you’re interested in starting a startup of your own (or even joining one), buy this book – it’s always better to learn from other people’s mistakes.

Note: The links to Amazon are affiliate links. If you buy a book, or anything else (need a copy of OS X – Leopard or a MacBook Pro to run it on?), I get a small commission. You too, can help feed my book addiction :)