A journey through finite state machines and a DSL in Kotlin for implementing your own Finite State Machine.