To build more powerful user interfaces, we need more powerful models. Constraint programming provides one useful tool: removing the distinction between input and output.
My talk from JSConf 2013 on constraint programming in the browser is now online:
To learn more about the Cassowary algorithm, read The Cassowary linear arithmetic constraint solving algorithm.
To learn about core.logic, watch David Nolen’s talk from StrangeLoop 2012.