I am

What I do

I research and develop programming languages and new methods for concurrent/distributed programming and software integration.
Essentially, I develop models and techniques for building software that runs on networks (for example, the Internet), with the following objectives:
  • Critical software does not go into unexpected errors. For example, the software running on a plane should not crash (and make the plane crash).
  • Network software is sufficiently efficient. For example, messages about money exchanges should be delivered in due time.
  • The complexity of network software, even over thousands or millions of involved parties, is kept maintainable and affordable. For example, services for broad public audiences should not be overly expensive due to the big user base. Also, it must be possible to reuse systems developed previously in new systems when tackling new ideas and requirements.
  • New software should be able to seamlessly integrate with existing systems, even when using multiple different data formats or communication protocols.
More technically, my main efforts focus on:
  • Language primitives for communications over networks (virtual or physical), in particular based on Choreographies and Business Processes.
  • Runtime execution techniques for sessions and multi -process/-threaded applications.
  • Static analyses for deadlock-freedom and formal protocol compliance.