Today’s reading material is about another ancient framework for software development — the finite state machine — but with a contemporary twist.
The finite state machine is one conceptual framework for breaking down a system or subsystem into modular, easily-testable, easily-maintainable pieces. It essentially consists of a graph of states and transitions. The machine is always in exactly one state, but inputs can cause it to transition to new states.
http://www.itl.nist.gov/div897/sqg/dads/HTML/finiteStateMachine.html
There are a number of ways of depicting finite state machines visually, but they typically involve a lot of bubbles and arrows, as in:
Edward J. Pring writes about using finite state machines to develop cutesy fading “tooltips” in JavaScript. The demo:
http://www.ibm.com/developerworks/library/wa-finitemach1/test_files/FadingTooltipTests.html
Although the end result is a bit glitzy for my tastes, the thought process that went into creating it is so common-sense it’s uncommonly brilliant.
http://www.ibm.com/developerworks/library/wa-finitemach1/
http://www.ibm.com/developerworks/web/library/wa-finitemach2/index.html
JavaScript has its flaws, but this article helped convince me that there is a little kernel of elegance to the language. The article might not convince you, but it may just give you some ideas on how to design your next GUI.
Happy reading!


