Speakeasy: Privacy Preserving Programs, Composed in the Real World

2021-11-04, ScalaCon

In B.C. (before Corona) we presented a domain-specific language and a compiler for secure multi-party computation (MPC). The compiler targets a state-of-the-art backend that specializes in low-level numerical computations. While the DSL helped to focus on the critical MPC domain, for a practical system we needed a way to easily connect with the outside world. This would enable us to compose multiple MPC programs as well as intertwine them with business logic.

Today we present Speakeasy, a library for composing privacy-enhancing technologies. It allows you to express the general flow of secret and non-secret data as a logical graph, and then offers a way to analyze this graph and execute it on different backends depending on the need. As a result, a user not only gets domain-specific annotations and error-messages for the privacy-preserving part of their code, they can also run full pipelines of non-trivial programs defined in a single, cohesive environment.

Our talk will focus on presenting the foundations of this library as well as discuss the Scala 3 features which make it possible and user friendly.

slides [pdf] | video

From Zero to Three - Building a User Friendly DSL with Scala 3

2021-02-13, Scala Love in the City

At Inpher, we have built a domain specific language (DSL) for modelling privacy preserving computations. This DSL is targeted at cryptographers who are not necessarily familiar with Scala at all, yet it is written entirely in Scala 3! In this talk, I will present some of Scala 3’s new features that were used to make the DSL powerful while keeping it very user friendly. I will share some experiences we’ve had as early adopters of Dotty, as well as some lessons learned while introducing the DSL to complete newcomers of the language.

slides [pdf] | video

Compiling to Preserve Our Privacy

2019, ScalaDays

Move over data analytics, secure machine learning is here. As privacy becomes an increasingly important concern, so does the need to analyze data securely. Secure multi-party computation (MPC) is a promising solution that helps different entities collaborate in training ML models, while also keeping their data private.

For applications to truly scale, we need to implement models in a high-level language, abstracting away the low-level MPC details: we need a compiler! In this talk we describe the unique aspects of writing a compiler so that developers and data scientists need not be crypto experts.

slides [pdf] | video

Channeling the Inner Complexity


An essential requirement for writing programs that scale is to have constructs to model concurrency in an understandable, safe, and efficient manner. This talk presents an overview of various such models available in Scala, and their impact on program structure and complexity. It then explores a way to model concurrency with less complexity with an implementation of Communicating Sequential Processes (CSP), heavily inspired by goroutines, scala-async and Clojure’s core.async.

slides [pdf] [html] project escale

Project Condor

Building a DIY quadrotor. This talk gives an overview of all steps necessary in building a drone from the ground up, with off-the-shelf parts from the hardware store and hobby electronics. It describes the evolution of Project Condor, presents its software architecture from base station to on-board flight stack, and summarizes engineering tradeoffs.

slides [html] project website