About

My research interest are programming models to program distributed, parallel, or concurrent or systems conveniently, efficiently, and correctly.

I am particularly interested in the following topics (from more recent to less recent):

  • Programming Elastic Services using Virtual Actors
    (see the Orleans project)
  • Eventual Consistency, and Consistency in Distributed Systems
    Check out my book! (free download on publisher site)
  • Touch-enabled scripting languages for mobile+cloud
    (see the TouchDevelop project)
  • Programming with Concurrent Revisions
    (see the Revisions project)
  • Verification and Debugging Tools for Concurrent Programs
    (see the Cuzz and CHESS projects)

Projects

Cuzz – Concurrency Fuzzing

Established: February 6, 2012

Cuzz is a very effective tool for finding concurrency bugs. Cuzz works on unmodified executables and is designed for maximizing concurrency coverage for your existing (unmodified) tests. It randomizes the thread schedules in a systematic and disciplined way, using an algorithm that provides probabilistic coverage guarantees. Cuzz is very scalable and can run on large programs that create lots of threads. It is available as part of AppVerifier. You can find out more about Cuzz from…

Orleans – Virtual Actors

Established: October 14, 2010

Project "Orleans" invented the Virtual Actor abstraction, which provides a straightforward approach to building distributed interactive applications, without the need to learn complex programming patterns for handling concurrency, fault tolerance, and resource management. Orleans applications scale-up automatically and are meant to be deployed in the cloud. It has been used heavily by a number of high-scale cloud services at Microsoft, starting with cloud services for the Halo franchise running in production in Microsoft Azure since 2011. The core…

Concurrent Revisions

Established: September 15, 2010

The Revisions project introduces a novel programming model for concurrent, parallel, and distributed applications. It provides programmers with a simple, yet powerful and efficient mechanism (based on mutable snapshots and deterministic conflict resolution) to execute various application tasks in parallel even if those tasks access the same data and may exhibit read-write or write-write conflicts. To find out more about the basic idea and how it works: Read our OOPSLA 2010 paper (links for all publications…

CHESS: Find and Reproduce Heisenbugs in Concurrent Programs

Established: October 1, 2008

CHESS is a tool for finding and reproducing Heisenbugs in concurrent programs. CHESS repeatedly runs a concurrent test ensuring that every run takes a different interleaving. If an interleaving results in an error, CHESS can reproduce the interleaving for improved debugging. CHESS is available for both managed and native programs.

Publications

2017

2016

2015

2014

2013

2012

2011

2010

2009

2008

2007

2006

Other

Brief Publication List

For a quicker overview, here a slightly shorter list of my publications.