Research

I am currently applying for academic and research jobs. Check out my CV and full Research Statement.

My research focuses on understanding the impact of static analysis tools in practice. Static analysis tools can identify defects in software applications without running them, but using these tools effectively presents some challenges. Through my research, I am learning how real organizations deal (sometimes unsuccessfully) with these challenges. I study developers directly by observing, interviewing or surveying them, and indirectly by examining artifacts such as code repositories, bug databases or documentation. These studies have led me to develop “best practices” for software teams and identify ways to improve tools. In particular, I am developing a novel approach to teach a static analysis tool to find more defects by providing examples and counterexamples. The goal is to make it simple for non-expert developers to extend tools and find custom bug patterns. In the future, I hope to apply lessons from this research to other programming language technologies. For example, I would like to study domain specific languages (DSLs) in practice to identify common problems in their design and usage, and to learn from the experiences of organizations that have adopted this technology.

My previous research includes work on unit testing concurrent abstractions, information visualization, noise reduction in hearing aids, machine learning and data mining.