Mon Aug 28 11:55:32 EDT 2017

Final word on user interfaces

1. Model View Presenter (MVP).  Main point is that model and view are
   unaware of each other.

2. Use a fully declarative presentation tree model, and base the view
   updates on PM tree diff.  Structure PM such that diffs correspond
   to updates of view widgets.

This is MVP (presentation model, isolated M,V) and also unidirectional
UI (data flows from ui events through model update to ui updates).

I believe there is a continuum between diffing the presentation model,
and diffing the declarative form of the final layout (e.g. React).

Diffing is the bridge between declarative and imperative, which in
reality has to always happen somewhere unless you always redraw
everything (e.g. OpenGL animations).