A very good book! I enjoy reading it, and i finally got to learn about free monads in real action.
I noticed the author is using org.joda.DateTime in the events. Would it not be beneficial to use an Instant instead, so you don't have to provide timezone information when creating the event. (And one could use java.util.time.* as well)