Finite State Machines (FSMs): an old, yet brilliant idea in computer science that unfortunately has been nearly forgotten. The gist of FSMs is that you define a set of legal states, the possible transitions between those states, and the prerequisites for making those transitions. This is a terrific aid in controlling the rampant problems with uncontrolled side-effects due to poorly defined handling of state that haunt applications today. It also turns out to be a remarkably good fit for the web: you structure your web application as a state machine, and allow the client to drive the transitions of that state machine through links. The different HTTP methods, in conjunction with hypermedia controls to specify inbound data, allow for precise definition of the semantics for transitions between various states. Moreover, the dynamic nature of hypermedia messages allows the state machine to evolve over time, without impacting clients and causing versioning headaches. To illustrate the approach, we will use a simple text based adventure game implemented using hypermedia documents and representational state transfer defined using FSMs.