Example code and slides showing how to implement a hypothetical photo storage service in a couple of different ways: using the (cats) Free monad and using "tagless final" style.
sbt console
and then
scala> :load presentation.txt
and then n <enter>
to proceed through the slides. p <enter>
to go back.
The slides are built using the excellent REPLesent.