tl;dr:State machine are fun to design and implement, they (1) have tidy interfaces, (2) require few resources, (3) hold no opinions about input and output (4) have a concise implementation (5) are easy to reason about. There are many practical examples (traffic lights, regex). Chris runs through an example.