Notes on Design Patterns in Ruby by Russ Olsen