Research

My research is about programming languages and tools that help developers build reliable concurrent and distributed software. As head of the DisCo research group, I lead work across programming abstractions, security, and debugging for systems that span cloud services, mobile and edge devices, and the Internet of Things.

My current research follows three closely related directions:

  • Replication and consistency. We study programming abstractions for applications that replicate data across distributed systems. This includes replicated data types and consistency mechanisms that help developers balance availability, coordination, and application correctness, including in geo-replicated systems.
  • Debugging and tool support. We develop tools that help programmers understand and debug concurrent and distributed applications. Our work explores interactive debugging for actor-based concurrency and techniques for diagnosing behavior in data-intensive systems.
  • Secure programming technology. We investigate ways to specify and enforce application-level security policies, including for web applications and software that combines multiple languages and components.

These directions build on my earlier work on ambient-oriented programming. During my PhD, I studied programming abstractions and debugging support for mobile ad hoc networks, where partial failures and network disconnections are common. I have also worked on meta-level interfaces that connect programming models with the tools needed to inspect and debug them.

DisCo’s research overview describes the group’s topics, projects, and grants.