article: spells of metaprogramming ruby