• MikeSchurman a 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.

    • wormius a 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 a 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.

        • homedirectory a year ago

          Thank you for sharing this demo. Amazing stuff! Inspired me to start working on improvements to the development environment of my team.

        • anonzzzies a 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?

          • wormius a year ago

            Oh Sorry I don't know if there's more functionality - didn't mean to imply something like LightTable exists for it, but for some reason I thought it allowed you to step back and forward in the execution to watch things (still based in text, etc... I have SBCL on my system but never really played with it beyond "hello world" so have never actually used the full power of the REPL).

            AFAIK it doesn't have any sort of extension like this though. But maybe someone with more CL experience can advise! Hopefully someone has a better idea for you :)

            I see the stuff in the parent post but not sure exactly what it can do vs what I envision or you may be picturing...

            • wormius a year ago
            • jpmonettas a year ago

              Have you seen http://www.flow-storm.org/. It does time travel debugging for Clojure and has a bunch of features.

            • slifin a year ago

              Clojure has a practical time travel debugger

              I use it a lot at work it's fun

            • worthless-trash a 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 a 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...

            • pard68 a year ago

              This looks great. I'd love to try it and see where it can go. My two favorite development features are using slime/sly for lisp development and Elm's visualization of state and time travel. Put those together and you'd get a language I'd never want to leave!

              • mindcrime a year ago

                I gotta say, that's pretty damn cool. It reminds me that I've been meaning to take up Common Lisp for, like, forever. But finding time to invest in learning the language / ecosystem is the perpetual challenge. :-(

                • anonzzzies a year ago

                  Just do AoC in CL; start at the first year and do 1 per day. When reaching the following year (first day puzzles are much easier than the last one you did), add visualisations etc. When you reach AoC ‘24, you’ll be flying.

                • lispm a year ago

                  one can easily miss the linked examples, here are the links from the GTFL page:

                  http://www.martin-loetzsch.de/gtfl/application-example-1/

                  http://www.martin-loetzsch.de/gtfl/application-example-2/

                  • atgreen a year ago

                    I've just added this to the ocicl repo, in case you are using that instead of quicklisp.

                    • worthless-trash a year ago

                      Thanks. I use OCICL so this makes it a little easier.

                    • agumonkey a year ago

                      There's something brilliant about the visual ergonomics of his renders. Light, dense, complex yet simple.

                      • jshaqaw a year ago

                        I want this mostly so I can invoke an output function as GTF(Lisp)-Out

                        "gtfl-out &rest expressions => no values"