Explaining meta-programming by analogy
john.freml.in