Learn to program - Pine, Chris (The facets of ruby series, 2005)