My research activity is mainly located within the areas of Software Engineering and Programming Languages and seeks to identify efficient ways to develop software that behaves efficiently. Over the last few years, I have focused on the energy efficiency of software systems, in particular, on how exploiting the design diversity of preexisting software components can be an inexpensive way to save energy. Furthermore, I have been studying the causes and impacts of confusion in software development and maintenance. In particular, I have been investigating how programming language constructs, and simple code patterns can lead to confusion and how we can make tame that confusion by making code easier to read. My research is in part experimental and in part based on the analysis of large scale open source code repositories.