
Luna Studio – Visual and textual functional programming language - akavel
https://github.com/luna/luna-studio
======
dang
Discussed 6 months ago:
[https://news.ycombinator.com/item?id=16163769](https://news.ycombinator.com/item?id=16163769)

Plenty more at
[https://hn.algolia.com/?query=Luna%20visual%20points%3E10&so...](https://hn.algolia.com/?query=Luna%20visual%20points%3E10&sort=byDate&dateRange=all&type=story&storyText=false&prefix=false&page=0)

------
iamrecursion
Ara here! I’m one of the compiler engineers on Luna!

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](https://luna-lang.org)

~~~
otakucode
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!

~~~
wdanilo
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](https://www.youtube.com/watch?v=8_pi7LYpDYw&feature=youtu.be)

------
mbel
For anybody else looking for explanation what this particular software does
here is its home page: [https://luna-lang.org/](https://luna-lang.org/)

It's a sort of WYSIWYG data processing environment.

------
TuringTest
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.

[1] [https://luna-lang.org/#Features](https://luna-lang.org/#Features)

------
qaq
Intro to Luna @ Lambda Days 2018
[https://www.youtube.com/watch?v=6xUOuzafmO0](https://www.youtube.com/watch?v=6xUOuzafmO0)

~~~
ConfusedDog
I jumped at the sight of Harry Potter

------
yuhe00
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](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?

~~~
iamrecursion
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!

~~~
garyclarke27
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.

~~~
iamrecursion
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.

------
piotrMocz
If anyone is wondering why this 1.4 release is a big deal, then check this
out:
[https://cdn.discordapp.com/attachments/407884082521964554/46...](https://cdn.discordapp.com/attachments/407884082521964554/468895441778376715/opencv.mp4)

We're seeing about 200x of speedup, so we codenamed it "Rocketship" ;)

~~~
thsealienbstrds
Out of curiosity, what did you do differently in order to get your speedup?

~~~
iamrecursion
The language core has been completely re-written, almost from scratch, with
performance as an explicit goal.

~~~
alok-g
Great! What are the lessons learned? :-)

~~~
wdanilo
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.

~~~
alok-g
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.

------
estevaoam
Great idea and implementation.

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.

------
stared
I love this dataflow graph! Is there any way of using it in a "headless" mode,
i.e. for other data pipeliness (e.g.
[https://gist.githubusercontent.com/jakubczakon/cac72983726a9...](https://gist.githubusercontent.com/jakubczakon/cac72983726a970690ba7c33708e100b/raw/b45dd02b6643a3805db42ab51a62293a2940c0be/santander_pipeline_5.png)
from [https://github.com/neptune-ml/steppy](https://github.com/neptune-
ml/steppy)).

~~~
chubot
It looks like it was made with graphviz, so it doesn't strictly have to do
with Luna.

I made one here:

[https://google.github.io/rappor/doc/data-
flow.html](https://google.github.io/rappor/doc/data-flow.html)

Source:

[https://github.com/google/rappor/blob/master/doc/data-
flow.d...](https://github.com/google/rappor/blob/master/doc/data-flow.dot)

~~~
stared
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/](http://p.migdal.pl/tagoverflow/)

------
qaq
Looks interesting anyone using this in prod?

~~~
wdanilo
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!

------
marmaduke
Is there any progress/news on Python interop? I would love to use this daily
but need to have smooth interop to migrate progressively

~~~
iamrecursion
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.

~~~
marmaduke
Cool! I got in touch on your Discord libraries channel.

------
neurotrace
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.

------
beagle3
Seems a lot like [http://tersus.com](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.

~~~
TuringTest
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.

------
d_burfoot
This looks cool. Do you have a screencast of someone using Luna to program
something?

~~~
wdanilo
Yep! It was not meant to be public, but unless we've got proper tutorials,
please check this out:
[https://www.youtube.com/watch?v=8_pi7LYpDYw&feature=youtu.be](https://www.youtube.com/watch?v=8_pi7LYpDYw&feature=youtu.be)

------
canada_dry
Wanted to check it out. Downloaded the command line installer. Ran it with the
'install' option...

"ConnectionFailure connect: does not exist"

Sigh.

~~~
wdanilo
It seems that this problem is connected to firewall / blacklisting. Please
contact us and we'll figure out whats happening.

~~~
canada_dry
Did nothing on my end other than try again when I saw your reply... and it
installed this time.

------
how_to_bake
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!

[1]: dotGo 2017 - John Cinnamond - Go Lift
[https://youtu.be/1B71SL6Y0kA?t=9m32s](https://youtu.be/1B71SL6Y0kA?t=9m32s)

~~~
mestelan
Thank you; just had a "a ha" moment too! Very insightful.

------
thedangler
Hi, I'm trying to install it for windows 10 but I get an error. Anyone else
having an issue?

~~~
marmaduke
Yep I ran into a 503 twice. It looks like they just forgot to upload a release
file.

I sent a message on their discord issue channel.

~~~
marmaduke
just to follow up, this was Windows Defender et al blocking download of what
it thought was spyware.

------
onemoresoop
Good job! This is very promising indeed

~~~
wdanilo
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!

------
alfanick
I am pretty much sure linking [0] would be a better idea. Most of community
has no idea what is Luna and why 1.4 version is anyhow important.

[0]: [https://www.luna-lang.org](https://www.luna-lang.org)

~~~
giancarlostoro
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.

~~~
iamrecursion
Thanks for the feedback! We’ll give our README files a bit of a once-over and
see if we can communicate more of the ‘wow’ factor.

~~~
giancarlostoro
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.

~~~
iamrecursion
Brilliant! That’s a really great set of pointers - we’ll take those on board!

