Essential Effects

How to safely create, compose, and execute effectful Scala programs using the Typelevel Cats Effect library.

Overview

Essential Effects teaches how to control effects such as concurrency and resource use in a safe and simple way using Cats Effect.

Side-effects are a huge source of errors in our programs. Mutable state can change without our knowledge, and concurrency can obfuscate how our programs will execute at runtime. At the same time, built-in solutions like scala.concurrent.Future are problematic because they are eagerly evaluated, and thus we cannot effectively reason about them (that is, they are not referentially transparent).

In contrast, an effect separates the description of a computation from its execution: effects are values that can be safely composed and reasoned about. Essential Effects teaches how to safely create, compose, and execute effectful programs using the Typelevel Cats Effect library, and how to integrate these concepts and techniques into your projects.

Pre-requisites

Attendees should be proficient in Scala fundamentals, such as those taught in our Essential Scala course.

Duration

The course runs over 1 day when delivered onsite. Online we recommend two sessions of 4 hours each.

Curriculum

  • Understand the meaning and role of side-effects and effects.
  • Understand how to encapsulate side-effects in a safer form.
  • Use parMap and other combinators to run effects in parallel.
  • Integrate callback-based code, like scala.concurrent.Future, into a safer, effect-based interface.
  • Fork independent work into concurrent tasks, then cancel or join them.
  • Learn how to separate CPU-bound work from blocking, IO-bound work.
  • Build and combine resource-leak-proof dependencies for applications.
  • Learn how to test code that performs multiple effects like concurrency and I/O.

Duration

The course runs over 2 days, when delivered onsite. When delivered online there is more flexibility. We usually recommend three sessions of 3.5 hours.

Complete update of services

Register for our course or check our upcoming events calendar: