Many people helped me write this dissertation. I want to thank the Department of Defense and the Fox Project for funding me. I picked Peter Lee as my advisor because he works on programming languages without losing touch with reality. I made the right choice for the wrong reason: more than anything else, Peter's dedication to teaching and his faith in The System pulled me through. The quality of my writing reflects his high standards and willingness to read many, many drafts. The rest of my committee consisted of Andy Witkin, Bill Scherlis, and Olivier Danvy. Andy advised me when I first arrived at CMU, and continued to support me with access to the animation lab and all its fine equipment. I remember my first meeting with Bill because he was the first faculty I met who also believed the promise of program transformation. Later, we concentrated on writing strategy and he helped me find my voice. Olivier proved to be an excellent outside member. First, he invited me to Denmark where I wrote my first paper. Second, he actually read my work and gave me detailed feedback while tolerating my lack of formality. Besides my committee, I received plenty of technical assistance and education from the CMU-SCS community at large. I am especially grateful to the Zephyr community for their humor and helping me typeset this document. Finally, I want to thank my friends, loves, and family.
There is another, much larger community that also deserves acknowledgement: the free software community. This document and the research it describes were produced with software that is freely available with source code to everyone. In particular, I used linux, emacs, scheme48, gcc, sml/nj, scsh, tex/latex, dot, gnuplot, jgraph, xfig, ghostscript, and xdvi. I used a custom markup language to generate the printed and online versions of the thesis from the same source. The artifacts of my dissertation (including the markup language) are on my web home page, where anyone can download them, verify my results, and (I hope) improve them.