The calendar is gone.
Click here to view posts


Design patterns
I finished reading Design Patterns in Ruby[1] by Russ Olsen[1] on my safari account. Although it is informative, I am glad I do not own this book. Design patterns by nature are the common patterns that software engineers are faced with on a day to day basis.

If you program everyday you will find your self skimming chapters thinking "yep did it last week". There are canned examples that for the most part can not be used in the real world. Do not fear, Russ gives examples of these patterns in some of the most commonly used ruby libraries and applications. For example the template pattern with rdocs, composites with FXruby and the command pattern with Active Record. I wish there was more emphasis on the patterns ruby implement internally. The language has built in a lot of useful patterns that I take for granted. The book talks about using Observers, Forwardable and Singletons but, it does not address that there are other patterns that ruby just provides to you.

Overall it was a book that I would not read again. I would rather read the ruby garden examples[4](when the site works). If I wanted a design pattern book I would get the GoF book[3]. The part of the book that goes over ruby was a wash. Every ruby book as the same old same old in it. If someone is learning ruby they shouldn't start with a design pattern book. I guess they wanted to range this book skill set from beginner to advanced? I have strong feelings about meta programming and dsl that do not match the authors.[5] I really didn't have strong feelings against or for the book until I read "Blogs and Web Sites". It links to a person that I heard say "SVN just loses things some times". After that I read a Rakefile they were using that did svn moves and deletes instead of using the command line. This is a good example why I prefer to read books on line instead of buying them.

[1] Design Patterns in Ruby
[2] Russ Olsen
[3] GoF
[4] Ruby Garden
[5] Keynote Address: What makes code beautiful? Marcel Molina, Jr.