9 ms·
Show HN: Lucidity – an interactive program-state visualizer
- Gehinnn 7y agoThis reminds me very much of my debug visualizer extension for vs code: https://marketplace.visualstudio.com/items?itemName=hediet.debug-visualizer https://marketplace.visualstudio.com/items?itemName=hediet.d... We have different approaches though.
- emmanueloga_ 7y agoTangent; a small detail of your extension: I really like that tree widget you used, it traces the path from the root of the tree to the selected leaf. I wish all tree widgets looked like that. For instance, the VS Code file tree is awful: I always need to look thrice in order to double check which folder a file belongs to, specially when there are a ton of folders.
- Gehinnn 7y agoThanks ;) It took me a great amount of effort to implement that tree widget as I had to combine absolute positioned svg elements with relative positioned divs to get that effect.
- westoncb 7y agoAuthor here btw. Happy to answer any questions.
- hooande 7y agodo you have a github repo? if not, why did you choose to self host? edit: ok, sorry I missed the whole section of your website that answers this. let me rephrase as, "can you say more about why you chose not to open source?"
- westoncb 7y agoThere is a github repo for the project, it's just private still. I don't have any real experience with open sourcing projects outside releasing a few small things with MIT licenses (none of which had any real activity from others)—so while there's a good chance I will open source this, I just don't know at this point if there are things I need to take into consideration that I'm unaware of. Hoping to get some feedback on that by posting now. Edit: haha, okay, answering the revised question: It's roughly the same thing: lack of knowledge of how open source projects 'work'. I guess I have a number of probably unfounded paranoid concerns about what would happen if I were to open source—which I'm actually less concerned about now, but early on I had some ideas about turning the software into a business, and I've had the perception that you need to know what you're doing to run a business around an open source software product.
- dandelo1953 7y agoYo! I'm willing to volun-tribute my time to play MITM between you and GOOG queries to do the grunt work in researching options in how best to open this thing up. I've got some big plans that I am hoping to get my employer on board with so I can finally make my first attempt at spinning up my current variation of the always just out of reach, Tantalus's unicorn. Not sure if my contact is retrievable thru my public HN acct bits. If not, I'll check back here and provide if there's interest in at least shooting the shinola with another like mind for a minute. CHeeers
- westoncb 7y agoHey dandelo, thanks for reaching out. Let's talk in email. I couldn't find your contact info. I have some here: http://symbolflux.com/contact http://symbolflux.com/contact
- hooande 7y agothis product looks interesting. just my unsolicited opinion, but if your goals are wide adoption and/or monetization you're probably better off open sourcing this. I can't say how useful it is or isn't without playing with it on my projects. but if it's as good as it looks and easy to use, you'll see stars on github and that will open up a lot of options
- ptrott2017 7y agoFirstly, congrats on an interesting project with clearly a lot of thought and time investment. At end of article you request feedback on should you open source - in that respect: There is clearly some interest in this area e.g. DS-PITON project (See https://bit.ly/35Eq35R https://bit.ly/35Eq35R) or the Jive project for java (https://cse.buffalo.edu/jive/ https://cse.buffalo.edu/jive/). Another would be Glamours Toolkit for Pharo Smalltalk (https://gtoolkit.com/ https://gtoolkit.com/) - though it has a larger scope. If you do not have time or funds to continue it in its current form and you do not have any 3rd party at this point interested in sponsoring development in some form, and you cannot see how to leverage it in the future - what do you have to lose by open sourcing it? At worst - it languishes, and no one uses it but it will give you a referenceable open source project for your CV that may help attract work in this or a related area. At best, the project sees adoption and opens new opportunities for you. Given the quality on display in the articles and videos I would expect the project to get some interest especially amongst IDE and program visualization communities. If you do decide to open source the project be careful on licensing choice (to encourage adoption in a manner you want) and copyright notices to ensure you are associated with it. Do expect to have to invest a little time in documentation and code clean up before making it available - but think of that as future advertising for your own capabilities. Good luck
- westoncb 7y agoThanks for the feedback ptrott. > ... - what do you have to lose by open sourcing it? That's pretty much my line of thinking as well. It seems like not much. Thinking about it more, part of what I've wanted to figure out by posting: 1) How much interest is there (so will it be worth my time to do the documentation, etc.) 2) What's the minimum set of tasks I'd need to do in order for it to have some likelihood of getting picked up by others. 3) Is there some clearcut business usecase that I've never considered that someone on HN might bring up.
- ptrott2017 7y agore: min set of tasks - Obvious list: 0. Decide how you want to license codebase and how much you care about post-release adoption. 1. Write enough documentation to understand what the project is and can be used for (i.e. an edited version of what you have already posted) 2. Minimal demo project / app that the can be build so a prospective user can understand the application / library (probably updated example you already have) 3. Clear repeatable build instructions for demo app/ lib etc 4. License and Copyrights clearly stated and in codebase. 5. One or two paragraph guidance on contributing to the project or using the project. 6. Plan on where to announce, announcement msg and follow up so you can monitor interest. 7. If you decide you do care about adoption, plan on some regular but minimal effort after release to write updates/project blogs so folks can see what is happening and encourage interest. *i.e. dont just throw it public, do no marketing or launch effort and expect people to magically find it and adopt it - some sustenance effort will be necessary. If you don’t care, but just want to release it so its out there – then this step is obviously not necessary. Finally, perhaps, an alternate way to get people interested in Lucidity and demonstrate Lucidity's benefits would be to package up Lucidity and look to contribute new features / functionality that leverage a subset of Lucidity to an existing project that would benefit from those Lucidity's features. Whatever you decide, Good luck.
- emmanueloga_ 7y agoHey, this looks very cool. Is it a Java app by any chance? Curious to know what kind of "stack" you use for your apps.
- westoncb 7y agoHey Emmanuel. Yep, it's a Java app. Pretty much just Java and OpenGL (via LWJGL—same lib minecraft used). It's built on top of a simple application framework I wrote largely in order to build Lucidity on top of: https://github.com/westoncb/Domain-slash-Converter https://github.com/westoncb/Domain-slash-Converter I should have written it in a more prototype-y way, but I naively built it on something like a custom engine from scratch in opengl :/ (I figured my rendering requirements were specialized enough I should roll my own: after all its just boxes + quads + text) There's also source available for doing the 'monitoring' side of things in javascript: https://github.com/westoncb/JS-Watcher https://github.com/westoncb/JS-Watcher (though I've been informed since that I might be better off using an existing lib—Immer, I think—rather than writing the stuff to monitor property changes myself.)
- emmanueloga_ 7y agoVery interesting. From a quick read, I feel like the domain/converter pattern has elements in common with flow based programming, is this close? I've came another repo that reminded me of some of the goals of your projects, If I get it right. Lava [1], according to the author, it is an architecture to solve "classic software problems" that includes visualization tools. 1: https://github.com/LiveAsynchronousVisualizedArchitecture/lava#tools https://github.com/LiveAsynchronousVisualizedArchitecture/la...
- iCarrot 7y agoIs it cross-platform or MacOS only? Which languages does it support?
- duncancarroll 7y agoVery cool! Looks very promising and something I'd use often if it were connected to IntelliJ. I'd been toying around with a similar idea of doing a similar "visual debugger" but within VR (not that it needs to be, but 3D is fun. I've never found time to execute on it however.
- westoncb 7y agoThanks, and glad to hear! Yeah... having it connected to IntelliJ was something that seemed always 'around the corner' for years. I think I will forever be annoyed working on projects without having something like this around—so hopefully someone will get to it eventually. It seems like there is more interest in this 'direction' these days though: I saw something new from the Firefox dev tools the other day whose time-navigation felt very similar (I'll see if I can find it), and the Clojure REBL project feels philosophically aligned. And I've seen a few others. Using it in VR would be awesome :D Edit: I think this was the Firefox devtools thing I was thinking of: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/WebReplay https://developer.mozilla.org/en-US/docs/Mozilla/Projects/We...
- capableweb 7y agoThis should not be a Show HN as there is nothing you can actually try. > Show HN is for something you've made that other people can play with. HN users can try it out, give you feedback, and ask questions in the thread [https://news.ycombinator.com/showhn.html https://news.ycombinator.com/showhn.html] If you upload binaries for the various platforms somewhere and link on the page, maybe mods be nice enough to let the post stay here? Because the project looks awesome and I would to try it out in order to give feedback and use it myself.
- westoncb 7y agoHmm, I guess it depends on how letter vs. spirit you'd like to interpret that in. It is still a project I spent years working on that I'd like to share with the community and get feedback on, so that I can potentially make it available. Unfortunately at the moment there isn't really a reasonable way for me to make binaries available that would be useful for much. I'm going to go make a sandwich and then think a bit more about whether there's something I can do, though. I assume the mods are fine wit it since they've already revised the title once.
- rl3 7y ago>This should not be a Show HN as there is nothing you can actually try. You're technically correct.[0] That said, I was extremely pleased to just have a glimpse at this project and would rather have it be a Show HN than not. Upon further reflection I usually just look at most Show HNs without interacting, and I suspect many people are the same way. [0] https://news.ycombinator.com/showhn.html https://news.ycombinator.com/showhn.html
- proc0 7y agoI've always wanted a runtime visualizer, and/or a static analysis visualizer. With a couple of exceptions I was unable to find a suitable library and it seems for some reason this hasn't been built yet. So I also decided to take a stab at this, and hopefully will share if I get anything useful. I'm using Haskell + Diagrams to construct a JS parser (to begin with) that will do static analysis and render a graph of whatever you need. The simple use case I've always wanted was just a slice of the graph of the function calls, perhaps with some information on context variables. Seeing this visually would help me get up to speed with any codebase and would allow extremely fast contributions.
- westoncb 7y agoI do wonder why more work hasn't been done in this area—especially on the run time side. I actually think a big part of it is something like a fixed perspective on what the process of computer programming has to be like that comes from an era before it was possible to do such a thing well. One of the skills a programmer always implicitly learns is to imagine the data their code is operating on—and only to occasionally peek into it with e.g. printlns and debuggers. There's something about the seeming necessity of that that keeps people away from tackling the problem directly. It may be a fish not being able to see the water kinda thing. (At least that's my read on it :)
- fungicide 7y agoWhat the hell is water?
- shalabhc 7y agoPerhaps a combination of cultural and technical feedback loops? Technology selects folks that like 'playing computer in your head' as Victor said [1]. This grows a culture where tools that help you avoid mentally simulating the computer are devalued. This selects more people even better at playing computer in their heads, etc. [1] https://www.theatlantic.com/technology/archive/2017/09/saving-the-world-from-code/540393/ https://www.theatlantic.com/technology/archive/2017/09/savin...
- Martin_Scrafalo 7y agoDid anyone find this inadvertently funny.
- Martin_Scrafalo 7y agoHipster.
- gyanchawdhary 7y agoAwesome ! Can it show DS modification from a memory corruption ? Would be super helpful in exploit development
- mansard 7y agoI hope you find some way to proceed with Lucidity, I have once in a while whished for something like this, the potential seems to be huge. Good luck!
- lanbanger 7y agoThis is absolutely spectacular, I love it. Have you thought about approaching a programming tools company like Jetbrains to licence/sell it to them? They would have the resources to turn it in to a viable commercial product.
- mettamage 7y agoIf I could download it, I'd use this to better prep for data structures and algorithm style interviews.
- mettamage 7y agoA use case I think that's awesome for this project is YouTube educational videos about programming.