top | item 40495351

(no title)

MikeSchurman | 1 year ago

I love this. Probably because I've been thinking of similar ideas for what seems like the last decade, I just have coders block when it comes to actually implementing it. Seeing it (well something like it) actually implemented makes me happy.

My use-case would be a "real-time" debug tool of sorts, that would allow the viewing of trees as they have, but also the modification of them, and the values at the nodes (think the hierarchy+inspector of unity3d, but a remote tool).

Anyway this post is food for thought and I'm going to read more about how it was done. I like the API they've created for sending views, really interesting.

discuss

order

wormius|1 year ago

I think this is possibly related to something I was thinking about when dealing with graph traversal in Python, wanting a debug tool that let me snapshot each step but then diff the watched variables. Being able to move back and forth to see the state change, and the connections so I could determine what was influencing the state. This was because no matter how hard I tried, I kept running into variables that I was watching that appeared to be the same reference, have different values (so I know I was referring to something wrong, but could not for the life of me figure it out, and though if I only had a way to step/trace and do this visually like an AST that highlights changed values and you could see back to its root where it's actually being modified visually)

I found out there's a thing called "deterministic debugging" (and the biggest known example afaict is rr: https://rr-project.org/

Apparently MS has a time-travel debugger... I pictured the AST being populated and repopulated via the steps, and the ability to diff changes over time.

Here's a wiki on various systems, though most of these seem to be typical text based "trace" options.

https://en.wikipedia.org/wiki/Time_travel_debugging (I hazard that this may be similar to some of the power of Common Lisps REPL, but could be wrong)

I found a professor at one point doing some research and he seemed to have given up without more funding. I thought I had it bookmarked, but am unable to find it right now. If I can remember (ha) I'll see if I can find it tomorrow. He had the most interesting approach that seemed closest to what I think you (and possibly I) are thinking, with propagation through the tree (I don't think I was picturing editing the graph directly per se - but that would be a cool idea).

Have you looked into LightTable or Brett Victor's work at all? http://lighttable.com/ (somewhat tangentially related, I think?)

Sorry this is so scattered I need to hit the hay LOL.

MikeSchurman|1 year ago

Yes, I'm a big fan of Bret Victor's work. I share his Inventing on Principle talk on a near yearly basis.

I've seen light table years ago and thought it looked really neat, but I haven't looked into it much as it wasn't directly applicable to my environments. But, probably worth a look for ideas.

On the topic of time-travel debugging, have you seen the demo: https://www.youtube.com/watch?v=72y2EC5fkcE (Tomorrow Corporation Tech Demo) Very impressive, worth a watch.

anonzzzies|1 year ago

Ah thanks, I was trying to remember Lighttable; there must be emacs plugins for CL for that I guess? As some type of more addition to the REPL functionality; having it more automated?

slifin|1 year ago

Clojure has a practical time travel debugger

I use it a lot at work it's fun

worthless-trash|1 year ago

I have something written which does 'real time graphing' of data, its so stupid.

I'd much prefer to use more mature code, but I haven't seen anything similar.

MikeSchurman|1 year ago

Same! I did this in unity3d, but also want to add this to my remote tool. Where can I find the motivation? :)

This is also a very handy idea...