Creating Interactive Software Objects with Clojurescript
For a few years, I've been trying to create UIs that have a consistency,
tangibility, and predictability akin to that of physical objects. I
think this results in software that is easy for the average person to
use and understand.
The only way I know how to describe the kinds of behaviors that result
in the physicality I seek is with state machines. I've built a library
called Plastic that lets me define state machines composed of pure
functions triggered by DOM events. This allows me to express the
behaviors making up the UI in almost exactly the same way I design them
with pen and paper, all the while hiding mutation in the implementation
in fine Clojurian fashion.
In this talk I'll describe my philosophy of UI design in more detail,
provide some examples of the physicality I'm aiming for, and show how
one is implemented using Plastic. If time and enthusiasm allows, we can
collaboratively define another simple software object using Plastic on
the fly, to get a bottom-up perspective in addition to the top-down
perspective of the scripted talk.
I hope to see you there.
P.S. I am amused to be delivering a talk in defense of objects, but
these are strange times we live in.