So where does runtime vis fit: if tracing helps us understand how a process works, vis helps us understand what the process produces. These are both important! If I just show the data, the process is obscured, and vice versa.
-
-
Replying to @wcrichton @geoffreylitt
For example, I played with a Rust game engine (Bevy) recently. Lots of complex interlocking runtime pieces, so my first instinct was to build a visualizer for the world state. Then I ask "where does this Light get a Transform component?" And then I'll start tracing the codebase.pic.twitter.com/mxDGV9Rmll
1 reply 0 retweets 2 likes -
Replying to @wcrichton @geoffreylitt
It's fundamentally hard for runtime vis to capture time, causality, dataflow, abstractions, etc. in a way that's (IMO) easier to see in a program text. Sorry the explanation is a bit sprawling
but that's my general sense.1 reply 0 retweets 1 like -
Replying to @wcrichton
yeah lots of good points. reminds me of
@joshmpollock's PLATEAU paper about how program vis needs to explain "why" / "how" state changes, in addition to just "what" the state ishttps://drive.google.com/file/d/19ippGZyZXEZSzWjW5zeSnm-zuqvZRD4T/view …1 reply 0 retweets 3 likes -
I totally agree that "show the data" is insufficient on its own. But more broadly, I want tools that leverage runtime data to help us answer these questions w/o manual tracing. Whyline is one great example of this -- assisting a task that would normally take lots of tracing
1 reply 0 retweets 1 like -
Abstraction is indeed tricky. Interesting to think about type systems in this context. Can catch issues, but I often have to manually trace to localize the problem. WM aids can help -- eg, hover on variable to see its type
1 reply 0 retweets 1 like -
Based on personal experience, having the code + granular example state available is often a nice combo to understand a process. I can start w/ examples, assume certain generalizations, and then check against the actual code
1 reply 0 retweets 0 likes -
Random example. I personally find this "to_s" method for printing a tic tac toe board hard to read at a glance. But once I've seen an example, I can easily grasp what it does. Don't understand the precise mechanism, maybe cog sci has something to say https://www.geoffreylitt.com/margin-notes/#essay:~:text=Reading%20code%20with%20Margin%20Notes …pic.twitter.com/VywttVjd2l
1 reply 0 retweets 2 likes -
I vaguely remember seeing some work that said most students learn better inductively. Interestingly, example-based teaching isn't just "here's an input/output pair", it's all about "here's some intuition for how this process works, in this concrete context"
1 reply 0 retweets 2 likes -
Replying to @geoffreylitt @joshmpollock
My hypothesis: understanding a procedure requires a mental image of the data. For me, "http://squares.map do |row|" conjures a grid with a highlighted rectangle labeled "row" that slides down. Generalization of data vis for concrete values creates abstract mental images.
1 reply 0 retweets 2 likes
But generally, I agree that connecting program state to program text is a key part of future programming tools. My big thing is that statically inferred properties (eg types) are abstract program state, and similarly need to be visualized effectively.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.
cognitive psychology. PhD