These are some of the projects I’ve worked on. You can find a complete list on my GitHub profile.

  • zkStream

    zkStream is a framework for trustworthy stream processing, developed as part of a paper. It leverages signatures and Zero-Knowledge Proofs to add trust to streaming applications, guaranteeing data confidentiality, provenance, and computational integrity. The published implementation uses the ZoKrates language for ZKPs, but we have developed several prototypes internally using other languages (Circom, Lurk, and Rust-based zkVMs) as well.

  • World Wide Streams

    World Wide Streams (WWS) is a platform for real-time stream processing, developed by our team at Nokia Bell Labs. It is focused on dataflow applications that are geographically distributed and deployed on cloud, edge or device. Applications that run on WWS are written in XStream, a DSL for stream processing with support for common stream processing operations (e.g. map, filter, partition, join) as well as external operators written in other programming languages (e.g. for video processing).

  • Chocola

    Chocola is a Clojure library for concurrent and parallel programming, that provides futures, transactions, and actors. It is unique in ensuring that these three models work correctly even when they are combined. It combines my previous work on transactional actors and transactiontal futures, and is the result of my PhD.

  • Transactional actors

    This is a fork of the programming language Clojure, extending it with “transactional actors”. Transactional actors are a combination of Software Transactional Memory and actors. They make it possible to share memory between actors using transactions, and to send messages to actors in transactions.

  • vacation2 benchmark for transactional actors

    vacation2 is a simulated reservation system for hotels, flights, and rental cars. I used it to evaluate the applicability and performance of transactional actors.

  • actors4clj: actor library for Clojure

    actors4clj is a very simple actor library for Clojure. It implements the actor model directly in Clojure, using macros, in fewer than 100 lines of code.

  • Transactional futures

    This is a fork of the programming language Clojure, extending it with “transactional futures”. Transactional futures are a combination of Software Transactional Memory and futures, making it possible to introduce parallelism in a transaction.

  • Labyrinth, Bayes, and Yada benchmarks for transactional futures

    Labyrinth, Bayes, and Yada are three applications from a benchmark suite that I ported to Clojure and used to evaluate the performance of transactional futures.