Making direct manipulation diagrams fast to develop.
So this work was motivated by "
Where Should Visual Programming Go?". I kinda thought dataviz driven development was a step in the right direction but some people here though unidirectional was too limiting. So it made me think about what a bidirection diagram was.
Grammar of graphics provides a nice abstraction of what a scale actually
is. It's a mapping from dataspace to pixel space. A bidireciton diagram might go in the other direction, mouse movements (actions) are mapped back to changes in data space. Once you consider libraries like Plot are very liberal on what scales they support: non-linear, categorical etc. then the ability to manipulate data points through a diagram is pretty compelling. You stop thinking about data as external data but as control surfaces that live in a weird high dimensional configuration space of your choosing.
Inverting scales is reasonably easy, once that general primitive is in place then you get a shit ton of possible gizmos that take very little time to make look good and work because all the heavy lifting is done in the other direction using an off-the-shelf dataviz library.
Full explanation and code in
a notebook although the one-weird invert trick is quite general.