Crafting elegant code with ruby DSLs

Meta-programming