I am a tool maker. The focus of my research is to understand and improve the human aspects of technical work, like software development, machine learning, and data science, with the goal inventing better tools.  To create tools, I believe strongly in user-centered design. First, I directly engage with the technical workers I aim to help, for example through observations, interviews and surveys. Next, I design and prototype new tools, often in collaboration with their earliest adopters. Finally, I evaluate the (hopefully positive) effects the tools have on the work, which kicks off another iteration of study.

Most of my career I have focused on tools for software development. Because software development is both collaborative and complex, developers often have questions and stall in their work until they get answers, frequently from their colleagues. That is, a developer's work day involves three interrelated activities: information seeking (to pose questions), multitasking (to manage blocked work), and communication (to learn answers and unblock work). One line of my research documented this behavior and created tools to support multitasking, particularly by taking advantage of spatial memory (Debugger Canvas, Code Canvas, Code Thumbnails) and to get answers from a recommendation system (Team Tracks). One important case of information seeking is learning to use third-party libraries (application programming interfaces, or APIs). Another line of my research documented the barriers to learning APIs and investigated moving some rules for using APIs into the programming language (Code Contracts, Boogie, Fugue, Vault). My earliest line of research helped novice and end-user programmers learn to create interactive experiences (Alice).


Machine Learning on the Edge

In a few years, the world will be filled with billions of small, connected, intelligent devices. Many of these devices will be embedded in our homes, our cities, our vehicles, and our factories. Some of these devices will be carried in our pockets or worn on our bodies. The proliferation of small computing devices will disrupt every industrial sector and play a key role in the next evolution of personal computing. Most of these devices…


Established: September 19, 2013

Trill is a high-performance in-memory incremental analytics engine. It can handle both real-time and offline data, and is based on a temporal data and query model. Trill can be used as a streaming engine, a lightweight in-memory relational engine, and as a progressive query processor (for early query results on partial data). You can learn more about Trill from the publications below, or from our slides here pdf | pptx.


Established: September 12, 2013

Tempe is a web service for exploratory data analysis. Below are images of the notebook pages mentioned in our submission to ICSE 2014.

User Experience with Big Data

Established: May 24, 2012

Big data analytics requires new workflows: high latency queries, massively-parallel code, and cloud computing infrastructures all make handling a big dataset different (and harder) than working on a local machine. We are exploring user experiences for analysts, and thinking about new ways to deal with big datasets. BigDataUX: building a better user experience for Big Data. Lots of different definitions can be found for "big data," but they all have one aspect in common: big…

Debugger Canvas

Established: May 16, 2011

Microsoft and Brown University have collaborated to create Debugger Canvas, a free Power Tool that adds Code Bubbles™ to Visual Studio for a new way to debug. Debugger Canvas has now been released publically on DevLabs! Please check out the download links, videos, documentation, and forum available there.

Code Canvas

Established: June 14, 2010

Code Canvas is a new user experience for Visual Studio 2010 that provides an infinite zoomable surface for software development. A canvas both houses editable forms of all of a project’s documents and allows multiple layers of visualization over those documents. By uniting the content of a project and information about it onto a single surface, Code Canvas is designed to leverage spatial memory to keep developers orient-ed and to make it easy to synthesize…


Established: June 11, 2004

Spec# is a formal language for API contracts (influenced by JML, AsmL, and Eiffel), which extends C# with constructs for non-null types, preconditions, postconditions, and object invariants. Spec# comes with a sound programming methodology that permits specification and reasoning about object invariants even in the presence of callbacks and multi-threading. Spec# is a research vehicle that has been used to explore specifications and the dynamic/static tools that make use of them.










Social Media for Software Engineering
Andrew Begel, Rob DeLine, Thomas Zimmermann, Tom Zimmermann, in Proceedings of the FSE/SDP Workshop on the Future of Software Engineering Research (FoSER), Association for Computing Machinery, Inc., November 1, 2010, View abstract


















Link description

Data visualization


May 14, 2013


Rob DeLine, Maria de Oliveira, and Rob Fatland


Microsoft, (ICMC-USP), Microsoft Research Connections Redmond


To make a prairie it takes a clover and one bee,—
One clover, and a bee,
And revery.
The revery alone will do
If bees are few.
— Emily Dickinson, 1830-1886

Curriculum Vitae (including complete publication list)