Wow. What a huge difference the GitHub could use some visuals that entice you to wanting to try it, a README on GitHub is as much a marketing page as the official site itself. If you can wow me from a GitHub readme you have me sold. Usually some videos / screenshots help in this regard. I'm definitely going to download this when I get home to experiment with it, seems quite interesting.
Really what usually does it for me is just screenshots or links to videos that I can immedietly click on, at the minimum. You guys have some amazing stuff in your homepage already, maybe something in that spirit that wont take away too much from the technical side you're trying to portray.
Thanks for working on something so awesome, makes me feel like I feel when I watch Cowboy Bebop and watch Ed travel through cyberspace when I see your samples of how the visual aspect of Luna is.
We're collaborating with few companies, but we cannot share detailed info just yet. If you are interested in using Luna on production, please let us know and we will provide support for that!
Unfortunately not! The graph in Luna isn’t an external visualisation of parts of the data flow, but an explicit alternate syntax for the Luna AST. It’s isomorphic to the textual syntax.
It would be possible, perhaps, to use some of the machinery for display to draw other pipelines, but I work on the compiler rather than Luna Studio, so perhaps I’m not the best person to say!
I understand well that this is a graphical representation of the code (and I find it really appealing to have this dual representation, rather than post-host visualization).
Though, as I imagine, such vis is at some point JavaScript code. (And one could potentially re-use this visualization (not - abstraction) tool for showin arbitrary diagrams with data lookups, in this lovely style.)
Oh, I understand what you mean now. My mistake! It is all displayed on Canvas at this point, which does go through JavaScript. We’re actually moving to our own WebGL-based canvas (BaseGL) for performance.
IMHO Graphviz is not too visually appealing (to put it mildly), as opposed to this Luna vis. When drawing graphs I care for their looks, vide http://p.migdal.pl/tagoverflow/
We should be getting both our Mac and Windows developer certificates this week. I’m really sorry for the inconvenience - it should be fixed by the time of the next release.
It'd be nice not have the installer be an Electron app which then downloads something I can't cache/save, but just have the actual app be the download from the main page!
I have been waiting YEARS for someone to bring the idea of 'zoom' into visual programming. I expect it should be a simple solution to the problem many visual programming systems face where any substantial complexity results in an incomprehensible web of components and connections from different conceptual layers of abstraction all presented at once. This is the first I've heard of Luna, but I'm looking forward to experimenting with it when I get home!
Thank you! It is so heartwarming to read such comments as yours. We are doing everything we can to bring this idea to reality. Please check out some of our Luna live session coding screen casts here (enable 1080p mode): https://www.youtube.com/watch?v=8_pi7LYpDYw&feature=youtu.be
Metaprogramming is definitely on our radar, and we have had some internal discussions regarding it, but it’s not one of the top-priority items right now.
To be blunt, performance is much more important than you think, even when building a proof of concept. We used the PoC code for much longer than was initially intended, and had we thought about performance from the start we might’ve saved quite a bit of work!
There are some other lessons too, especially regarding Haskell. Basically the sad truth is that if you do not benchmark literally every single line, you can suddenly get MUCH worse performance than expected. Sometimes GHC's strictness analysis does not discover that it can unbox some things and you land in a boxing-unboxing loop or you hit some of optimization bugs (during the work on performance we've reported over 10 GHC bugs and even implemented our custom graph memory manager). So one of the biggest problems that we encountered earlier was that actually the GHC performance is MUCH harder to predict than you think and you have to take extra care of it while building your software. Of course using Haskell pays off in other areas, but performance is tricky.
Thanks for the details. I would love to read still more about it to learn from the experience. E.g., What would be examples of the boxing-unboxing loop. All you have described seems worthy of a more detailed blog article in its own right. :-) Thanks.
This is brilliant. The only way I was able to truly understand `lift` was by seeing this kind of visual flow[1]. Similarly, I'm sure there are other "shapes" that make a lot more sense of things like monads and such. Excited to try this out!
The only news I can give you at the moment is that it’s still definitely planned! We’re hoping to work on it once we finish our performance improvement and new GUI work.
Seems a lot like http://tersus.com which is also open-source (and which I last used 10 years ago, so I might be misremembering). Can anyone familiar with both tersus and Luna give a short comparison.
I've not used any of those languages so I might be wrong, but from their description pages, there are two mayor salient differences:
- Tersus doesn't have a textual representation, it's a purely visual language
- Luna shows the data currently being processed besides the visual primitive that handles them.
This second part may be invaluable. I worked with a Tersus-like flow language in the past, and building simple data-processing pipelines was a breeze; but debugging them to add more complex logic was a pain, because inspecting the current state of the graph is quite difficult - in special when there are nested loops.
As a fan of both visual programming and Haskell, I definitely think this is the future of programming, and I can see it going two ways - A general purpose tool like https://nodered.org with a huge library of plugins or included in a host program as a VM/embedded DSL. Or perhaps both ;) What are the developers plans/thoughts on this?
Luna is very much a general-purpose programming language! We’re working on developing both the language and the libraries ecosystem until you can use it for whatever you’d like.
While data-analysis is our focus at the moment, that isn’t due to any current limitation on Luna the language. We still have more we want to do to the language, but there is nothing stopping you from writing whatever you want in it now!
Looks cool - Considering your data-analysis focus, will you be adding: SQL language interop, Postgres data source component/nodes for functions(critical for me)/ views /tables? Would then become much more interesting.
Can you expand more on what you mean here? We currently have a work-in-progress library for binding to Postgres, but I have the feeling that isn’t quite what you’re getting at.
I've been keeping an eye on Luna for a little while now. It's very interesting but I have to wonder: has anyone built anything substantial in it yet? What was your experience working with it? The last time I tried it out was pre-1.0 and it was too buggy to really feel like I could get work done in it. I hope 1.4 is more stable.
Yes! I've been waiting years for some language designer to notice that code and data shown side-by-side[1] is what makes debuggers and spreadsheets adequate for easy iterative development. We've seen recently a number of code editors featuring "notebook" preview panels, but not a language fully designed around that idea.
"WYSIWYG data processing" is a nice termp to express the concept.
Thank you <3
Btw, please help us with anything you can. We are working hard to bring (spoiler alert!) Luna 2.0 to reality and any help regarding documentation, tutorials, integrating Python / R, libraries in Luna, gui widgets is more than appreciated!
65 comments
[ 0.29 ms ] story [ 38.8 ms ] threadIt's a sort of WYSIWYG data processing environment.
[0]: https://www.luna-lang.org
Thanks for working on something so awesome, makes me feel like I feel when I watch Cowboy Bebop and watch Ed travel through cyberspace when I see your samples of how the visual aspect of Luna is.
It would be possible, perhaps, to use some of the machinery for display to draw other pipelines, but I work on the compiler rather than Luna Studio, so perhaps I’m not the best person to say!
Though, as I imagine, such vis is at some point JavaScript code. (And one could potentially re-use this visualization (not - abstraction) tool for showin arbitrary diagrams with data lookups, in this lovely style.)
I made one here:
https://google.github.io/rappor/doc/data-flow.html
Source:
https://github.com/google/rappor/blob/master/doc/data-flow.d...
We’ve just released our 1.4 performance update at [0], and Luna is now immeasurably more quick!
I’ll keep an eye on this thread and answer questions where I can!
[0] https://luna-lang.org
“lunaInstaller” can’t be opened because it is from an unidentified developer.
At least sign the app to remove one more friction point from trying out your tool.
[0] - https://i.imgur.com/3k9VN5M.png
-does it have a templating system?
-can nodes be created and/or connected programatically?
Metaprogramming is definitely on our radar, and we have had some internal discussions regarding it, but it’s not one of the top-priority items right now.
We're seeing about 200x of speedup, so we codenamed it "Rocketship" ;)
[1]: dotGo 2017 - John Cinnamond - Go Lift https://youtu.be/1B71SL6Y0kA?t=9m32s
- Tersus doesn't have a textual representation, it's a purely visual language
- Luna shows the data currently being processed besides the visual primitive that handles them.
This second part may be invaluable. I worked with a Tersus-like flow language in the past, and building simple data-processing pipelines was a breeze; but debugging them to add more complex logic was a pain, because inspecting the current state of the graph is quite difficult - in special when there are nested loops.
I sent a message on their discord issue channel.
While data-analysis is our focus at the moment, that isn’t due to any current limitation on Luna the language. We still have more we want to do to the language, but there is nothing stopping you from writing whatever you want in it now!
"WYSIWYG data processing" is a nice termp to express the concept.
[1] https://luna-lang.org/#Features
Improvement idea: increase the contrast rate in your website, it was a pain for me to read stuff there. Had to max my Macbook's brightness setting.
Plenty more at https://hn.algolia.com/?query=Luna%20visual%20points%3E10&so...
"ConnectionFailure connect: does not exist"
Sigh.