Let it Flow: Dataflow abstractions for interactive distributed applications
Interactive distributed software ranging from multi-user collaborative apps (e.g., Google Docs) to software for real-time organizations (e.g., Uber apps) typically rely on centralized data storages and callback-driven interactions to enable lively collaborations. However, callback-driven interactions are infamous for leading to complexity hell and centralized storage of data is deficient in terms of offline availability, low latency, user-control on data privacy and overall architecturally not a good match in the era of programmable network devices and powerful mobile end-devices. On the other hand, while decentralized storage of data seems a natural choice for handling the problems with offline availability, low latency, and data privacy, when building decentralized applications developers cannot anymore rely on solutions for fault-tolerance and concurrency control built-into centralized data storage systems and would have to treat those at the application layer. In the talk, I will argue for the effectiveness of declarative programming abstractions inspired by the functional reactive programming not only in managing the complexity that comes with enabling interactivity and real-time liveness without the callback hell but also in enabling the language runtime to automatically handle intricate aspects of distributed decentralized software such as concurrency control and fault-tolerance with strong “out-of-the-box” consistency guarantees. I will do so by introducing such abstractions in the context of REScala, a library-based extension to the Scala programming language.
I am a Professor of Computer Science at the Technical University of Darmstadt, Germany.
My research focuses on software development paradigms and tools.
On the paradigms side, I develop programming languages to enable the visions of “software as a service (SaaS)” and “software product-lines” by providing large-scale module concepts with built-in support for adaptability and extensibility.
On the tools side, I work on intelligent software-development environments that guide developers to increase the development productivity and the software quality. Such environment leverage web-based resources to automatically generate and recommend established programming rules and patterns; they also enable architects to explicitly specify such patterns to be enforced during development.
I have (co)authored over 100 scientific publications in renowned publication venues in software engineering and programming languages. I regularly serve on steering committees, program committees, and editorial boards of top tier conferences and journals in software engineering and programming languages.