My Workshops

TDDing Functional Web Apps

Get some theoretical and practical overview of the TDD approach & Functional Programming by creating a multiplayer Pac-Man game server.

  • First steps in Scala and Scalatest.
  • Letting the tools help you (linting, scalafmt).
  • Test Driven Development (baby steps, starting with the game logic and moving towards HTTP).
  • Purely functional approach (separated data and behaviors, no exceptions, ADTs, Options).
  • Modeling using immutable structures.
  • Separating the concerns by using functions as input parameters.
  • Using Monix Atomic to handle state.
  • Using optics to deal with immutable changing data.
  • Making impossible states impossible (design, refined types).
  • Using function composition to connect all the dots.
Run at

Akka in Scala

Get some theoretical and practical overview of the actor model and asynchronous programming.

You will learn how to program real applications using Akka and Scala. Throughout the day we will switch between quick introductions of the core features and longer step-by-step exercises. This will expose you to all features and tools needed to create and maintain production applications. [Details]

Run at

Functional Architecture based on Free

Learn how to cut your applications into isolated, independent pieces using free monads. The session is based on a multiplayer, purely functional version of Prisoner’s Dillema.

You will learn how to program real applications using Free monad. Throughout the day we will switch between quick introductions of the new concepts and longer step-by-step exercises. This will get you an idea of how real-world purely functional applications look like. [Details]

Run at

Building Snake using Streams

Learn how to create a real Snake game in the browser from scratch using reactive approach, immutable data structures, composable components and event streams.

I will show you how to create views without touching browser’s DOM, how to define app model without any mutable data structures and how to transform event spaghetti into nice declarative streams. And all that by implementing a game in the browser using React and Bacon, on top of fresh JavaScript specification (ES6). [See the code]

Run at
  • SFI (March 2017)