Concurrent and distributed development has always been notoriously difficult to test. Methods like ad-hoc correctness proofs, temporal logic and model checking have been used for decades, but have always had downsides which prevented them from going mainstream. In this workshop we build on the theory presented in 'why are actors terrible' and teach a more efficient and effective method for building testable actor based systems. The approach presented uses some properties of the actor model and builds on TDD, property based testing and model checking in order to allow effective testing of distributed systems.
The workshop will include some hands on development using java+akka (or scala+akka if preferred). Attendees will have to use their laptops or work in pairs. We will try to build and test a correct implementation of a simple distributed algorithm such as the two phase commit. Ideally it should be 4 hours but we can adapt. Attendees will learn how to take advantage of the benefits of the actor model.