Notes on Metaprogramming Ruby by Paolo Perrotta