I'm a Ph. D. candidate in programming languages at MIT, where I work on making program transformation and synthesis tools easier to build and more general ("programs that write programs that write programs"). I also teach software engineers how to be better at software design ( www.jameskoppelcoaching.com ) and blog about how to write better code ( www.pathsensitive.com ).