two main things here:
- visualization (charting) as a way to see and understand the data
- solving things by means of drawing/sketching - diagrammatic/geometric thinking
for the first one:
- visualization is a macroscope - allows us to work with/look at complex ideas:
(source: Model Driven Management of Complex Systems)
- we have a lot of tools for creating them in software, but no "silver bullet"
- I have a feeling that there are important primitive interactions/UIs missing for creating a generic data-visualization-building software
for the second one:
Bret Victor makes a point that programming is currently blindly manipulating symbols - visualization is a solution for this blindness
the author sees and manipulates indirect symbolic representations, and must imagine how they give rise to dynamic behavior
diagrammatic/geometric thinking seems to be an important skill in problem-solving, a cognitive style (after Seymour Papert) which allows us to work with the ideas visually, usually by sketching
- Dynamic Medium could be great for thinking this way - if only we had proper tools!
3Blue1Brown's YouTube math explainers are very visual, and seem to give great intuitions into mathematics because of that
can I imagine a tool for directly manipulating them into existence?
- Chalktalk by Ken Perlin seems to be one such imagining (with actual implementation)
- Apparatus by Toby Schachman is another one (later productised into Cuttle)
- would such imaginary tools be good only for transferring knowledge, or also for gaining new knowledge? - in other words would I invent calculus just by having access to a Dynamic Medium that works this way?
Point of View Is Worth 80 IQ Points
— Alan Kay
- we can provide new point-of-views in software through (data) visualization
So far, I haven't actually made much use of intersections, but it's likely that I'm not yet "thinking geometrically" enough.
— Drawing Dynamic Visualizations Addendum - Bret Victor
- Bret mentions "thinking geometrically" a bunch of times in this article, I think it's an important insight of feedback loops between tools we use, and styles of thinking that they promote (Tools Building Us)
Sanjay had a neat trick of using GraphViz to debug his compiler by outputting and laying out various compiler graphs (e.g. CFGs). It is obvious when you think about, but a normal compiler dev wouldn't think to do that.
Visibility is everything. In many cases the most effective person isn't the smartest or even the most qualified, it's the person who has visibility into the problem. Learning to make things visible gives you a superpower.
Debugging may simply involve carefully watching for an unexpected change
— Aesthetics of Computation - Unveiling the Visual Machine
- if we have perfectly visual systems, we can "See Everything" and just watch for what's going on, and notice when things don't work