My research is in the general intersection of software engineering with dynamic, resource constrained networks. I focus on programming abstractions, middleware, models, and tools that ease the programming burden in these complex, dynamic, and unpredictable environments. Here, I provide a highlight view of some current projects; for more information, please see the webpage of my research group, read some of my papers, or contact me directly.

Child Independent Mobility

Child independent mobility (CIM) refers to the freedom of children to move about their neighborhoods without direct adult supervision. It is widely accepted that CIM is essential to emotional, social, and physical well-being, yet CIM has dramatically declined. My group is using the Internet of Things (IoT) to foster CIM using local community resources, made available using device-to-device wireless links. Given the ability to efficiently discover other nearby devices, we are exploring the ability for parents and other caregivers to define declarative policies for community data. These policies allow the creation of rules for assessing the state of a child's IoT device to ensure that desired safety conditions are satisfied.

Continuous Neighbor Discovery

Identifying “who is around” is key in a plethora of smart scenarios. We are using off-the-shelf devices and technologies (e.g., WiFi direct and Bluetooth Low Energy) to enable lightweight and energy efficient device-to-device continuous discovery. While many solutions exist, they often take a theoretical approach, reasoning about protocol behavior with an abstract model that makes simplifying assumptions about the environment. Our work, in contrast is focused on solutions that can be realistically implemented and deployed on real devices and to supportof real applications in a way that honestly considers real-world constraints. For instance, our approaches consider the very real effects of packet collisions. Our ultimate goal is to directly empower developers with the ability to determine the optimal protocol configuration for their applications.

Grapevine

Grapevine is a framework developed for succinctly summarizing and efficiently sharing context information in pervasive computing environments. Grapevine focuses on entities in pervasive computing networks formulating localized views of context and enables coordinating entities to generate a view of their shared situations through efficient and expressive automated aggregation of individual context measures.

Warble

Advances in sensing and networking along with ubiquitous Internet connectivity have paved the way for today's massive Internet of Thing (IoT) market. Despite the vast potential of connecting to myriad devices across homes, office buildings, and public spaces, there is still a large need to unify the scattered protocols, hubs, and cloud services while personalizing end user experiences. Enabling personalized IoT experiences requires an open infrastructure, backed by expressive and flexible middleware that enables developing applications to address diverse individual needs. Warble is a middleware for personalized IoT applications that encapsulates device and protocol complexities, abstracts communication and IoT devices' impacts in physical spaces into flexible programming abstractions, and enables applications to learn from their prior interactions in the IoT.