Welcome. My name is Jimmy Koppel, and I am improving the world’s software quality. I am currently focused on my business training professional software engineers how to write better code, and my blog on software design. Outside of this, I conduct research in advanced programming tools as a Visiting Scientist at MIT, where I recently completed my Ph. D. in programming languages.
My research focuses on making programming tools easier to build and more general, including automatically generating parts of program transformation and synthesis tools (“programs that write programs that write programs”). I also have a secondary focus on the application of causal inference to program analysis; I write more about both on my interests page. My largest project to date is the Cubix project, which allows you to build a single program transformation tool that works on multiple languages. I am a member of the Computer-Aided Programming Group, advised by Armando Solar-Lezama.
I also have a side interest in reverse engineering and binary modification. Since 2010, I have been the leader of Project Ironfist, a mod for the classic PC game Heroes of Might and Magic II, and built the core technology needed to modify the game without access to its source code. In early 2020, together with my colleague Michael Specter, we reverse-engineered Voatz, a voting app being used in the US Primary elections. This resulted in a little bit of media attention; caused several municipalities, including the state of West Virginia, to drop support for the app; and yielded public praise from Senator Ron Wyden.
I spent my time prior to grad school in the startup world, and still keep one foot there. In 2012, I received the “20 Under 20” Thiel Fellowship and founded Tarski Technologies, a startup building program repair technology (“automated bug fixing”). In 2014, I became the third employee of Apptimize, where I worked primarily on their visual editor for A/B testing mobile apps, now used by apps totalling well over a billion installations. I continue to consult for several companies, both in software development and developer training.
I enjoy random E-mails from strangers about startups, research, and life in general.