6 ms·
I worked on something like this a few years ago, only in VR so you could walk around the visualization and use your spatial recognition abilities in 3D. One pa
by akdas 5y ago
I worked on something like this a few years ago, only in VR so you could walk around the visualization and use your spatial recognition abilities in 3D.
One part we struggled with was evolving the visualization with the codebase. I see in the demos at the bottom that small changes to the codebase can have a large impact on the visualization (unless I'm missing something), making it difficult to treat the visualization as a fingerprint over time. I wonder if there are plans to address this.
This is an area I'm very interested in, happy to chat about it any time.
- dale_glass 5y agoThat sounds interesting, can you give more details about that? I work on Vircadia (https://vircadia.com/ https://vircadia.com/) and have been thinking for a while that it would be cool to have in-world visualizations of things like the project's structure and github activity. It's a big one, so perhaps the right 3D representation would make the project's structure more understandable at a glance.
- akdas 5y agoI haven't worked on the project in a while, so I can't comment too much on the current status. But I'm happy to talk about what I learned, the challenges I faced, etc. if you have any questions about those. The multiplayer aspect is immensely valuable. Having multiple developers walk around the same codebase together, discussing the architecture and the code, is helpful for debugging, onboarding, brainstorming, all the different ways we collaborate as developers. This kind of visualization is not a solo activity, so I can see where Vircadia would come in.
- dale_glass 5y agoI have no idea of which project you're talking about, so I think it would help if you explained what it looked like. Do you have any screenshots? How do you navigate it? How do you search for text in VR? What do you visualize exactly? Is it a static or a dynamic display? Can you drill down to actual lines of code? How do you deal with large projects? Vircadia has 400K LOC and 11K files.
- breck 5y agoMy big bet (10% confident it's correct and will be world changing), is that having languages that rely on spatial position of tokens in a 2D or 3D grid will be a big leap forward and make 3D visualizations quite natural. I think 3-D visualizations of 1-D languages (all our current programming languages are 1-D) will not be so helpful, as you will be looking at transformations, not the actual code as it exists. If anyone is intrigued and wants to write a function that takes as input a parsed Tree Notation program (https://jtree.treenotation.org/designer/ https://jtree.treenotation.org/designer/) and outputs a a https://www.mecabricks.com/ https://www.mecabricks.com/ file, get in touch! I could even fund something like that, if needed. Such a function would then be able to generate a LEGO version of any program written in a Tree Language. From there, I think there could be interesting discoveries to be made related to future version control systems and collaborative editing algos (I think you could beat CRDT/OT/et al).
- akdas 5y ago> I think 3-D visualizations of 1-D languages (all our current programming languages are 1-D) will not be so helpful, as you will be looking at transformations, not the actual code as it exists. This is the part that I disagree with. The source code is linear, sure, but the structure that ties the different components in a codebase together is high-dimensional. For example, the symbol usage graph is really useful to visualize in 3D, as is the general package structure. And most of these visualizations we see don't even touch on runtime analysis like I was working on! There, seeing different types of data arranged either by where the data is coming from in the source code or where the data is coming from at runtime (analogous to lexical vs. dynamic scoping) is a visualization that benefits from 3D.
- breck 5y agoYes, I'd agree with you. My wording was poor. I should have said something like "will be helpful, but far more complex to build and use, as they will have to rely on abstract transformations, rather than the natural shape of the code". I could still be wrong, and really need to get those experiments going again! Thanks for pushing back on that and causing me to think harder. P.S. I also think runtime analysis is an even more complex problem, and applaud you for attacking it!