An under-used programming technique is writing programs that generate programs or program parts. Covers: why metaprogramming is needed, some components of it, building a code generator; language-sensitive macro programming in Scheme. IBM developerWorks.