## Build and visualize finite state machines in Go

Wikipedia describes Finite State Machines (or FSMs) as a mathematical model of computation of an abstract machine that can be in exactly one of a finite number of states at any given time. It can move between states as a response to some stimulus (an event); such a change is known as a transition. So, how exactly does this concept in computing translate over to the software development realm? Often, we model software around the objects from the real world, and the behavior of these objects can seem quite complex when the environment interacts with them asynchronously....