I am an associate professor at Brown University's Computer Science Department.
My work revolves around distributed systems, networking, and operating systems. Broadly, I am interested in understanding the behavior of systems with many components for enabling new functionality, and making sure they work as they should. In particular, I'm interested in how to build, operate, and diagnose large scale Internet systems; and in networking and power management in embedded distributed systems such as sensor networks.
I'm updating this page. Take a look at my CV for the authoritative information.
The PANE project aims to allow end-user applications to help in the configuration of a network. PANE is both a paradigm and a prototype SDN controller that solves the problem of privilege delegation and conflict resolution when unprivileged users are given read and write access to network services, configuration, and state. Read more...
We are interested in improving the battery life of mobile devices. Today's mobile devices' need for energy far surpasses their battery capacity to allow for unrestricted use and long battery life. Users must prioritize their usage to avoid running out of battery. However, for a user to do this efficiently is almost impossible: it requires knowledge of the energy and power characteristics of the applications and of the hardware components of the particular phone. This leads to a poor experience and to frustration. We propose an OS abstraction, Application Modes, that allow applications and the OS to collaborate in exposing to the user only what she cares about and understands: the tradeoff between battery lifetime and functionality. Read our HotMobile paper for an introduction to our approach.
Distributed systems are growing ever more complex, spanning many layers of abstraction, machines, and administrative domains, and integrating code written, deployed, and operated by different people. In these scenarios it becomes increasingly difficult to understand how a system behaves, and, especially, how and why it fails. Causal tracing is a technique that captures the causality of events across all of these components, layers, and machines, and eases the task of understanding complex distributed systems. There are a multitude of causal tracing systems and frameworks, including many research and industry projects. Examples include our own X-Trace project [GitHub], as well as systems such as Google's Dapper, Twitter's Zipkin, and Cloudera's HTrace.
We are interested in how to extract information from both complex individual traces and across traces, to identify root causes of problems, detect unexpected anomalies, and make tracing more efficient, by biasing trace sampling and detail capture to maximize trace information on a fixed performance budget.
Fine-grained tracking of energy usage in wireless sensor networks, Quanto determines which applications used how much energy on each hardware component, even for applications that span multiple network nodes.
Robust all-to-few routing in wireless sensor networks, CTP is de-facto routing protocol for TinyOS 2.x, and formed the basis for IETF's RPL (Routing over Low Power and lossy networks) - RFC 6550.
BVR is an anchor-based pseudo-geographical any-to-any routing protocol for wireless sensor networks.
You can find some of my photography as @319studio on Instagram, or at 500px. I almost never tweet as @rodrigo_fonseca.
My wife Paula runs an amazing party design business, Festiva Party Design, check it out!