Monday, May 18, 2009

On Ambient Visualization

I want visualization to be less a part of a specific application that I go to and to be more of a natural extension to the computer itself, available from everywhere.  I want visualization to an ambient experience.  When I encounter any table of data in any document container I'd like to be able to quickly view it as a column chart without starting up a chart-making or data processing application, without shuffling around through copy & paste.  I just want to select rows and columns an pop a "window" with a chart in it in one easy step.  If I can recognize with my eyes that a table contains place names or lat/lon pairs then a computer ought to be able to map it with minimal intervention on the part of the user.  I should also be able to put my selected, obviously geospatial data on a virtual Earth model.  With just a little more imagination I can see turning lists and tables into nodes and edges, viewable with graph layouts.  Think Enso for visualization.  I might want to do more than just look at my chart, map/Earth model, and graph.  I might want to start to interact with these views (assume independently for now).  It starts to seem like I need an application to do that, but I'm not ready to jump the gun.  This is still in the realm of a capability and not necessarily an application.  Applications start to assume containers and domain-specific use cases.  Most visualization techniques have standard, "off-the-shelf" things you can do with them given basic commands or input devices.  Charts can be sorted and transformed into different layouts.  One can pan, zoom, and rotate maps and terrain.  The technique of "drill-down" and "roll-up", which can be applied to any visualization technique, is nothing more than navigation of linked data at multiple levels of detail and sometimes across multiple view contexts.  At what point do is a specialized application needed more than a capability?  We may be overly conditioned to assume the application model when we think of software as having utility.  This is changing rapidly on the web.  (It was always thus on the Unix command line, yes?)  Visualization ought to change with it.  Leave the application building up to subject matter experts with an application domain, not to software programmers.  Ah but wait, lest too much be read into a passing editorial remark.  Obviously software programmers play a key role here.  The tendency among programmers who attempt to answer that call is to build an "application building framework."  Again, the assumption is that subject-matter experts always need an app to make use of viz.  I wonder why visualization software shouldn't be a part of an operating system; a core capability for any application or purpose.  There have been wonderful advances made through web browser extensions, but even here visualization is at best an after thought applied to a mostly universal application.  (I say "mostly" b/c there are no less than 3 different web browsers installed on my one operating system.)  What happens when someone emails me some data in a flat file that I open in a text editor?    Instead what is need are document object models for visualization techniques and runtime software that can parse viz documents on the fly.  The runtime is optimized for robust interaction and attribute manipulation of high level visual artifacts, not application-specific tasks.  This runtime can be invoked from a background process or "embedded" (contained in, called from) an application runtime.  Devices having different display and user interfaces can choose how to represent what are otherwise well understood visual metaphors.  Data can be more easily passed around and visualized simply by passing text documents describing interactive, dynamically updatable (or not) views.  (This seems inherently more secure, too.)  Only this way is ambient visualization possible; something that is available everywhere on my computer, no matter what kind of computer/device/hardware platform I am using.