My research area is programming languages with an emphasis on static analysis/control-flow analysis, syntax and parsing, compilers and optimization, generic and meta-programming, and next-generation languages.
In my vision of an ideal future, programmers would be able to communicate their intent to a computer (i.e., write programs) as quickly as and at the same high level that they can communicate to other programmers, and the resulting software artifacts would be clear and concise enough that they obviously have no bugs instead of having no obvious bugs.
My research is aimed at achieving this future. As such, the thread that connects all of my research is language tools and features that enable programmers to write clear, concise and elegant code and do so without sacrificing other things like performance. I view this as key to improving programmer productivity and code comprehension and allowing programmers to more effectively design and implement programs. These also have positive effects on other research areas. For example, better languages and tools can make it easier to detect security vulnerabilities or prevent them in the first place, and better languages and tools can also make programming more approachable and aid in computer-science education. The future I describe is a ways off, and I might not see it in my lifetime, but it is a future that I am excited to work towards.
I graduated from Indiana University under the supervision of R. Kent Dybvig and did post-doctoral research on (in reverse chronological order):
I’ve been also involved in the development of a number of languages and compilers, including: