My research passion is to make software development better. Most often, I apply techniques from formal logic to design algorithms and build tools that tell you something about your programs. I care about not only techniques that derive facts about your programs but also those that interact with you to make such information actionable. I believe foremost in problem-driven research, but I often make use of theories and methodologies such as logics, semantics, abstract interpretation, symbolic execution, and type analysis