
Luna 1.0 Beta is out - kot-behemoth
http://www.luna-lang.org/#Overview
======
kustosz
Hi, I'm one of Luna founders, I'll be happy to answer any questions! :)

~~~
arnioxux
Equivalent text and graph representation is the killer feature.

I previously looked at stuff like
[https://flowhub.io/ide/](https://flowhub.io/ide/) which is a dataflow
language spec and editor. Specifically the js version
[https://noflojs.org/example/](https://noflojs.org/example/) for compiling
graphs into js for some canvas image pipeline work.

Each component has an underlying text representation that you can edit like
you guys. But that representation isn't code. It's just the configuration of
the node.

This isn't what I want! I want to architect the dataflow on a whiteboard, code
it normally (a new language is okay), and then have it visualize the same
dataflow for debugging (with help grouping/organizing if needed). Every
programmer already does this in their head but without the visual aid.

(Focusing too much on the graphical representation is a mistake. There's only
a handful of granularities that are worth whiteboard diagramming and people
definitely don't want to code with a mouse dragging and zooming. But having
the diagram at specific architectural level when you do need it is invaluable)

I haven't tried your product out yet so I don't know if you guys got it right,
but at the very least you guys recognize the importance of "dual syntax
representation" as a selling point!

~~~
anigbrowl
_people definitely don 't want to code with a mouse dragging and zooming_

Actually that is exactly what I want which is why I signed up for the Luna
beta months ago. We have had flow based programming for a while in the synth
and robotics communities and nesting diagrams within each other is the normal
thing. For many tasks you can produce elaborate working interactive UIs
without ever writing code. My favorite software allowed adding code in C and
assembler, though then they shifted focus towards the robotics control market
and reoriented it around Ruby.

There are two big advantages in working primarily at the graphic level: you
can trace control flows visually and you don't have to know all the libraries
and syntax. Instead you can select from a palette and find out what they do by
using them, and it should be the computer's job to worry about syntax anyway.

~~~
kirillseva
would you care to name that favorite software that has reoriented itself
towards Ruby? Curious to learn more

~~~
anigbrowl
iirc it's flowstone DSP, last time I looked there was still a free version
though it's not an open source project. Would recommend to anyone as an
example of good UI in this area

~~~
wdanilo
@anigbrowl I do not know flowstone DSP, but I see you were thinking much about
GUI / nodes design. This is one of the topics I'm passionate about and I we
want to make Luna the most powerful visual language available. I would love to
chat with you about node design and your ideas. If you think it's interesting,
I've just created a topic on our forum for this – I would love to read and
discuss your thoughts there! [https://discuss.luna-lang.org/t/nodes-design-
discussion/69](https://discuss.luna-lang.org/t/nodes-design-discussion/69)

~~~
anigbrowl
Will do

------
moondoge
Be aware, before downloading:

This application will not run without providing an e-mail address. It also
forces data collection.

I will not use such software.

~~~
wdanilo
@moondoge, if you don't want to provide your mail, just write anything in this
field, we do NOT validate it in any way. However, we would be very thankful if
you provide your real mail address, so we can track how Luna is used and
improve the experience. Every data we collect is described here:
[http://www.luna-lang.org/alpha-data.html](http://www.luna-lang.org/alpha-
data.html) . We try to collect only insensitive data, that tell us how Luna is
used and how well it performs.

~~~
gatmne
Software that collects and sends back any form of information is a big no-no
unless it's opt-in. It's not acceptable when vscode does it. It's not
acceptable when .net-core does it. It isn't acceptable when Luna does it.

If you want your users to help you learn how Luna is used and preforms in real
environments, you ask for them for feedback rather than forcefully extract it.

Having telemetry enabled by default (or much worse, being mandatory) is
disrespectful. It's also a fairly good indicator of what you think of your
users.

~~~
aflinik
I totally agree with you on the mandatory part, I’d hope it would be widely
accepted that opt-in is the way to go in such cases.

Although I need to point out there’s a huge difference between what people say
vs what they actually do (see [https://www.nngroup.com/articles/first-rule-of-
usability-don...](https://www.nngroup.com/articles/first-rule-of-usability-
dont-listen-to-users/)) and I can’t imagine an effective product development
process that ignores the actual usage data.

------
rayalez
Amazing! I've been lookibg forward to this for a long time, can't wait to
build something with it!

By the way, I've made an unofficial subreddit:

[https://www.reddit.com/r/LunaLang/](https://www.reddit.com/r/LunaLang/)

Could be useful to share projects, ask/answer questions, etc.

~~~
wdanilo
<3

------
kabes
It's cool technology, but if I take a look at an example of a simple react
todo list in a similar project like flowhub:
[https://app.flowhub.io/#project/c111454c9fd2f74d37d1e8a4e739...](https://app.flowhub.io/#project/c111454c9fd2f74d37d1e8a4e739adfd/c111454c9fd2f74d37d1e8a4e739adfd_noflo)

This looks more complex, harder to reason about and harder to make than just
writing the code. And it only gets worse as complexity increases. But of
course I've got way more mileage writing code than doing this.

~~~
samuell
The link leads nowhere (seems login required, but even after login doesn't
work). Link to screenshot instead?

~~~
kabes
Oops, here's a screenshot:
[https://screenshots.firefox.com/W3XZIh4yCnlcuMNM/app.flowhub...](https://screenshots.firefox.com/W3XZIh4yCnlcuMNM/app.flowhub.io)

------
ernsheong
Pardon the ignorance, but how does the team support itself, freemium language
and premium tools?

~~~
brucephillips
Investors:
[https://www.crunchbase.com/organization/nodelab-2](https://www.crunchbase.com/organization/nodelab-2)

~~~
fncypants
Oh, ok. But pardon the ignorance, but how do the investors make a return on
their investment, freemium language and premium tools?

~~~
kustosz
"Freemium language" is not an option. The language is, and will be free and
open source. I cannot even imagine any other option, particularly after open
sourcing the codebase. Premium tools and services is the way to go for us and
we don't feel that would be detrimental for Luna. It ranges all the way from
simple consulting services to running a Luna based cloud environment, but
there is no threat for Luna as a language in that. On the contrary, this kind
of support usually helps boost the technology.

------
quizotic
Beautiful. Data Flow + Functional. Love the idea and can't wait to try it out!

~~~
wdanilo
<3 Thank you! I hope you will enjoy playing with Luna. We are looking forward
to hear about your experiences and use cases using our chat / forum
([http://chat.luna-lang.org](http://chat.luna-lang.org)) /
([http://discuss.luna-lang.org](http://discuss.luna-lang.org)) ! :)

------
dflock
This looks like it might a good fit for data flow/transform/etl type
workflows.

1\. Does this work in a clustered/distributed environment? 2\. Does this
integrate with Hadoop/Mapreduce/Yarn/Kafka? 3\. If it doesn't integrate with
hadoop, how hard would it be to integrate it, do you think?

~~~
kustosz
Hey! There isn't any out-of-the-box support for distributing Luna programs
over the network or any library for that yet. We'll get there eventually, but
this is too early a release. As for integrating with Hadoop and others: the
networking libraries are already there, so there is always a way to integrate.
There aren't any adapters yet, so creating one is as hard as wrapping the
necessary network calls. If you'd be interested to get deeper into that, I'll
be happy to assist you. Just let me know over our chat or forum and we'll make
that happen :)

------
singingboyo
The 'Textual Luna' section mentions language interop/FFI. However, nothing I
can find elsewhere mentions anything on it.

I understand that it's 'coming soon', but what does 'soon' mean in this case?
Not having anything for this is a fairly large omission, IMO.

~~~
piotrMocz
We understand how important it is for Luna to be able to use Python (and JS)
libraries and we will try to get to work on that asap. Please note, however,
that the core Luna team is fairly small, so we have limited capacity (although
I would like to make it my personal goal to create the Python ffi). That said,
any community effort in this area is more than welcome, you can check the code
on our github org: [https://github.com/luna](https://github.com/luna)

------
kobrad
This thing is a nightmare to install and uninstall. The installer is 170 megs
and downloads god knows what, there is no uninstall, and when you try to do it
manually you see it spawned three or four processes without letting you know.
This is incredibly amazingly malware like if you ask me

~~~
wdanilo
The installer is 170mb after unpacking - it is just an electron app (for
providing you GUI) connected to our installation manager. The command line
installation managar is very lightweight (around 2mb) - we will provide it as
an alternative to the graphical one. We will try to make the electron app
smaller. The installer downloads Luna Studio - The graphical environment and
Luna compiler and installs it on your computer (according to our docs:
[https://luna-lang.gitbooks.io/docs/content/installation.html](https://luna-
lang.gitbooks.io/docs/content/installation.html)). If you want to uninstall it
at the moment, just delete the ~/.luna folder - that's it. We will provide
option for it in the next installer releases. What spawned processes are you
talking about? We spawn processes for our typechecker and other services (like
undo-redo manager), but they should be killed if you exit Luna ... until you
are on Windows. When you are on Windows the processes are registered globally
in order not to ask for root password everytime you start Luna Studio. We
would love to chat with you about how can we improve it, Windows support needs
the biggest love right now.

~~~
bringtheaction
Have you considered using NSIS or Inno Setup to create the installer instead?

[https://sourceforge.net/projects/nsis/](https://sourceforge.net/projects/nsis/)

[http://www.innosetup.com/isinfo.php](http://www.innosetup.com/isinfo.php)

~~~
wdanilo
We didn't have thought that Electron have such big size overhead when choosing
it. In fact we just wrongly assumed that it will be lightweight. We will make
the installer lightweight in the future, however there are much more important
tasks on our todo list now, so we will do it slowly. We provide very light
command line installers as well, so you can use it instead as you wish.
Regarding these libraries, we want the installer to evolve into bigger app in
the future - allowing you to install many Luna versions side by side,
uninstall them or switch the current version. Moreover, we wanted to provide
unified experience across platforms. It seems that something like QtQuick will
be better suit here, but I haven't investigated it good enough yet to be sure
it is the best choice.

------
brucephillips
When, specifically, would I use this rather than conventional programming?

~~~
piotrMocz
I find myself using Luna instead of Python (with Jupyter) when I want to
process/visualize some data, quick’n’dirty. Seeing the data flow through my
program helps me wrap my head around it quite quickly. And the built-in
visualizations are nice :)

------
xvilka
It can make an interesting addition to Cardano (ADA) smart-contracts platform
for designing visually formally safe programs for their distributed virtual
machine.

------
Vesnica
Windows installer needs add proxy settings, I'm behind a firewall, and always
get "Prelude.head: empty list" error.

~~~
wdanilo
@Vesnica, we would address this issue tomorrow (it's 2 am here and our team is
slowly falling asleep!). I've created an issue for you, so you can easily
track its progress here: [https://github.com/luna/luna-
manager/issues/111](https://github.com/luna/luna-manager/issues/111) :)

~~~
Vesnica
Thank you very much!

------
akavel
Wooohooo, I'm super happy and excited that you made it!!! Was already losing
hope, and now what an awesome surprise! :) Huge congratulations, getting from
prototype to shipping is hard, and you know it well enough :) Hope I'll have a
chance to dabble with it ASAP!

By the way, have you sent a notification email to your alpha subscribers? I
don't seem to have gotten anything in my inbox... only found via HN (just when
I was starting to ponder if I should try harder to overcome this addiction...)

Hm, and maybe are you planning some kind of release party or something at your
office or somewhere in Kraków? :) Or did you already have one? :)

~~~
wdanilo
akavel thank you, thank you! <3

We've sent the mails, could you double check if it is not there?

There was a thread about party in Krakow on our Chat, lets discuss it there!
:)

------
somezero
Reminds me of a ZUI shell:
[https://en.wikipedia.org/wiki/Zooming_user_interface](https://en.wikipedia.org/wiki/Zooming_user_interface)

------
garyclarke27
Looks cool - Is it easy to interact with a SQL database, ideally Postgres?

~~~
kustosz
Hey! For now the best way to interact with Postgres is, I think, using an HTTP
wrapper server. A better way to do this needs to be created. Maybe as a
community effort? ;)

~~~
wdanilo
@garyclarke27 if you are interested in helping us create such binding, we
would love to support your effort as much as we can. Just tell us about it
using our chat / forum ([http://chat.luna-lang.org](http://chat.luna-
lang.org)) or ([http://discuss.luna-lang.org](http://discuss.luna-lang.org))
and we will figure out the best way to make it happen! :) The basic building
blocks are already there!

~~~
garyclarke27
Hi Wojciech. I suspect that an ‘out of the box’ integration with Postgres plus
options for some of your text representations to be expressed in SQL instead
of your language would be a killer feature. No ORM though - I love SQL - I
would happily pay £1000’s for such I for example come from a finance
background - now I design ERP / CRM software for my own company, I have a UI
team but I would like to express some UI myself, to get immediate feedback, to
iterate rapidly, a WYSIWYG tool would be perfect for me. I have total
expertize with SQL an Excel, but not so much with Javascript. SQL and the
Relational Model can be purely functional if immutable, ie insert only, I also
use graphs a lot in my schema, they are just relations, Postgres can build
closure tables remarkably quickly to create indexes for instant path queries.
My main constraint is time not cash, can your system easily interact with a
REST endpoint? Postgrest (written in Haskel) makes these quite easy to setup.
I auto generate SQL language functions for all data inserts, no direct to
table allowed. So interaction with Views and Functions is my main requirement.

------
e3b0c
This looks very cool.

It would be interesting if we can construct software with a UI like this but
based on an SSA IR or downright CPU instructions instead of another high-level
language.

~~~
wdanilo
@e3b0c The GUI lives here: [https://github.com/luna/luna-
studio](https://github.com/luna/luna-studio). It contains code which speaks
with our compiler and infrastructure and we will probably extract the barebone
GUI to separate repository soon. Anyway, you can play with it and we do want
to support such use cases, because it will make the interface even better and
would bring benefits to both Luna and your low-level system :)

------
qwerty456127
What the site promises looks INSANELY COOL but the app doesn't seem to work
actually. Errors behind every corner, 100% CPU load all the time and the
tutorial won't finish loading. This is not beta, this is pre-alpha at best. I
really hope it's going to be fixed in near future, can't wait to actually try
applying it.

------
simplify
This seems like my dream environment come true. Can I build a web server with
it? Does it have package management?

~~~
kustosz
We don't have a webserver library yet, but a simple one is coming soon
(probably this or next week). As for package management – well, we figured
it's to good have some packages to manage first and not to rush into that. It
is also a nice effort for the community, if there would be anyone interested
in contributing such a system (thus earning eternal fame ;))

------
shalabhc
Is it possible for Luna to self host? Is that somewhere on Luna's roadmap?

~~~
wdanilo
Luna is general purpose so it would be possible right now to rewrite the
compiler from Haskell to Luna, but there is no plan for it simply because it
would give us no benefits at the current stage. I agree that it should be done
in long-term vision, just because it is "pure" and "beautiful", but do not
expect it to happen anytime soon.

------
jlebrech
this is the programming language for the touchscreen generation, every
language until now was born from keyboard use. brillant.

I've wanted to see any language have an ast represented visually, then when
you save changed to that visual representation it would save back to the
original file format, this is very close to what I was thinking of.

~~~
wdanilo
@jlebrech thank you! :)

Regarding the AST topic: Luna does use AST for the translation - if you modify
the graph, an AST-diff is created, applied to the AST and then AST-diff is
created and applied to the text. If you cange text, the AST-diff is applied to
the visual form. The visual graph is not direct AST visualisation because it
would be completely unreadable :)

------
StreamBright
> Powerful engine. Limitless.

I think at very least it is limited by the known universe. :)

~~~
wdanilo
If we think about a programming language then it's universe is what a program
can actually do. Luna is a general purpose, real programming language. If you
are able to code something in C, you should be able to do it in Luna. From
this perspective, Luna is "limitless". In contrast to DSLs or almost every
other visual programming language Luna is not limited by it's design. However,
if such sentence is a real issue for you or other people, we would change it!
What do you think? :)

------
wiradikusuma
Can I TL;DR this as Google Data Studio but not SaaS, and for advanced user?

------
pbiggar
Congrats, this looks awesome! Love the inline graphs and realtime updates!

~~~
wdanilo
Thank you! <3

------
solarkraft
This is exactly the future.

~~~
wdanilo
We believe it is. Such comments as this one give us always super-powers, thank
you. We will do everything we can to make Luna the most powerful visual
language ever created.

------
serverholic
Very cool! Can't wait to play with this.

~~~
wdanilo
@serverholic, we are happy to hear that! Please share your thoughts with us
after you play with Luna! :)

------
cakoose
"many recent innovations in programming language design, such as higher-order
functions, non-strict semantics, algebraic data types, object oriented
programming and sophisticated type inference engine"

These lies are unnecessary.

~~~
wdanilo
@cakoose, would you be so nice and elaborate more why do you think we are
lying? It is very sad to read such comments, seriously. We were doing our best
to bring Luna to our community, so why are you talking that we were lying
about anything now?

~~~
cakoose
None of those are recent innovations in programming language design. Higher-
order functions, in particular, have been part of mainstream programming for
so long.

------
Rebelgecko
Cool looking project. Unfortunately my browser (Firefox) is really struggling
with scrolling on the overview page... It keeps getting stuck while scrolling
past the "powerful engine. Limitless" block of text.

~~~
wdanilo
Interesting, we will investigate it ASAP. In the meantime, please try Chrome
instead. We'll try to fix it soon. I'm really sorry for the incontinence!

~~~
natecavanaugh
I think you mean inconvenience, but incontinence works too, since it sounds
like the OP had a crappy experience ;)

~~~
wdanilo
You are right, I definitely wanted to use the "inconvenience" word here, but
it seems my dictionary knows better what is happening :D

