gophering on
HN Gopher Feed (2017-06-22) - page 1 of 10
Luna - Visual and textual functional programming language
563 points by interpol_p
agentgt - 2 hours ago
Just some minor critiques.What is confusing to me is if the
visualization actually running the code or is just static analysis
of the code?The reason I ask is if its running then what you have
built is a language with an absolutely awesome visual REPL. If it
is please say its a language with awesome visual REPL! A potential
Excel for programmers killer. There are languages that tried to do
this (Squeak, and Racket come to mind) but they were generally
academic and more often for students/young adults (and not for
businesses).However you say whiteboard through out your marketing
which makes me think brainstorming tools ala evernote, orgmode etc.
I realize for VC they might prefer whiteboard.Whiteboard to me is
sharing and not really a tool. It means I have to register and
create a profile when all I really want is a language with a
powerful visual REPL. (again just my point of view on marketing).
  kustosz - 1 hours ago
  Why don't we have both? And then some more. It is an awesome REPL
  with a bit of Excel feel. Runs the code whenever you change it
  and displays the results in real-time. It is also great for
  interactive data sources (like web services), where you get the
  results as soon as they appear upstream. The whiteboard part is
  super important too. Visual representation is great for design
  and brainstorming. Even more so, when it provides runtime
  feedback about your designs. And it gets even more important with
  collaboration. So at this point we've got a collaborative
  whiteboard that actually runs the computations. There is,
  however, one more part to the story. Neither whiteboard, nor a
  REPL are well suited for implementing the final, production
  software. We aim to blur the lines between the design and
  implementation phases, allowing to deploy whatever has just been
dlitvakb - 7 hours ago
I'm super interested in this project! I'd like to see how interop
really works and how to get multiple data sources interconnected to
produce amazing datasets.
  wdanilo - 5 hours ago
  Im happy to hear that. We do our best to realease it soon and I'd
  love to collaborate further with you then!
msd81257 - 5 hours ago
I'd love to hear how this might be applied as a general debugger
concept for CUDA and the likes. To a layman like me, CUDA's GDB
debugging interface has always left a sour taste in my mouth due to
the high amount of parallelism that simply can't be displayed
through a debugger entailed to be used only on a single thread. I'd
love to see someone working on (and I'm probably going to take a
crack at it myself ;) ) not just using this interface as a
language, but also as a debugging tool for other languages.
Decomposition of CUDA (and other -- thinking Erlang right now
especially) programs into bite-sized visualizations in order to
program and debug would be invaluable for the space.
  wdanilo - 5 hours ago
  It would be supper cool to debug CUDA with Luna, but keep in mind
  there is a really long way until it will be possible. It is
  however very interesting path and I'm super curious where it
  could lead us to! I'm willing to support it as I can if you would
  like to try do it by yourself. You will be even able to cut off
  our backend and use the GUI for your purposes, however more
  interesting (and even probably also easier) way to do it will be
  to make some abstractions in backend and build the graph using
  provided by us backend server, its API and replacing only the
  interpreter / compiler plugins. To sum this up, a very
  interesting idea!
wdanilo - 6 hours ago
Hi guys! My name is Wojciech Danilo and I'm one of the founders of
Luna. The timing for this news is a little unfortunate, because we
are just before releasing Luna as an Open Source project! However,
it's great time to answer some questions and give you a short
update what has happened for the last couple months:1. We've raised
a seed round of $1M, so we can safely focus on product development
and shortly on community building!  2. We've improved our core
technologies to be much more robust, open and extensible,
including:- We've re-written our graphical interface to be much
more open and extensible (it was previously running on WebGL and
now we base just on  HTML, so it will be possible to attach any
HTML-compatible controls / visualisations directly to nodes) -
We've implemented new, better type inferencer and updated Luna
compiler in many ways. - And much much more, but I don't want to
uncover everything before the release, especially when it's around
the corner :)I would love to answer your questions, so If you've
got any, just post it here and I'll do my best to cover it. Don't
forget to singup for the list at We'd love to
collaborate with you during the upcoming release! :)Cheers,
  spuz - 4 hours ago
  What is the largest program written in Luna? How does Luna
  compare with other mainstream programming languages for complex
  applications such as compilers, browsers and web applications?
    kustosz - 4 hours ago
    The standard library is 3-ish kLOCs (written entirely in Luna)
    and growing, the biggest use cases we've created so far were
    around 500 LOCs. Performance-wise, we are letting the GHC
    compiler infrastructure do most of the heavy lifting. As for
    the more complex applications, it may be tricky to create a
    compiler or a web browser in Luna in its current state, but we
    are constantly working on on improving the performance, with
    the goal to match Haskell's. Web applications (particularly
    microservices) are among our main focuses now, so that's
    entirely within our reach.
  jancsika - 6 hours ago
  How does this compare to NoFlo?
  xor1 - 5 hours ago
  I really like how the Luna site looks. As someone who knows
  nothing about web front-end, how was it made? Custom-built?
    wdanilo - 4 hours ago
    Our programmer designed it and we've just build it using some
    standard bootstrap. It might seem like a joke, but it's
    currently not :D
      mkl - 4 minutes ago
      You might want to adjust the colours, and look at it on a few
      more screens.  The medium grey on dark grey is pretty
      unreadable - the only reason I didn't close the page
      immediately is the number of upvotes it got on HN.
      xor1 - 4 hours ago
      Ahh, I actually really like it alot!
        waterpowder - 3 hours ago
          wdanilo - 3 hours ago
          thanks alot! :D
  indescions_2017 - 5 hours ago
  Really cool you chose to do an image processing demo with the
  "color grading" example. That is such a natural fit for visual
  programming. I could see Luna fitting into a video post-
  production or digital asset creation pipeline for  games. The
  combination of a visual interface and functional logic could be
  used to create mind-blowing custom procedural solutions! Have you
  given any thought as to what media libraries you might use for
  the final stage rendering of audio, video, bitmaps, 3d scenes,
  etc. Because I think it's possible it may be entirely done in
  HTML5 / JS...Keep up the good work!
    CyberDildonics - 5 hours ago
    The thing there is that is already how image processing and
    compositing has been done for 30 years. Check out Nuke, Digital
    Fusion (which is free), Shake, Flame, etc.
      wdanilo - 4 hours ago
      @CyberDildonics, I think that @indescions_2017 was referring
      to pipelines suitable to be run inside game engines, working
      at "runtime", not batch-processing data upfront. You cannot
      utilize any of the software you mentioned to do it. You can
      use Houdini engine, but it's image processing capabilities
      are super limited currently and even if they improve, you are
      limited to thinking in the context of SOPs, DOPs, CHOPs etc,
      without being able to extend it with custom datatypes and
        thisjeremiah - 4 hours ago
        TouchDesigner ( or vvvv
        ( are more comparable, since these
        systems DO work in realtime environments. But yeah, you
        still have to think in the context of SOPs, TOPs, CHOPs...
          wdanilo - 4 hours ago
          You cannot embed touchdesigner in a game engine (at last
          with ease). VVVV does not comes with abstraction over
          DOPs SOPs etc, but both are still very limited regarding
          what datatypes they can process.
          CyberDildonics - 35 minutes ago
          Can you embed this in a game engine?
          wdanilo - 24 minutes ago
          Are you asking about Luna? :) Sure! Luna comes currently
          with its VM but we are also working on a backend allowing
          to compile it to machine code, so every graph you write
          can be also used as a library and called for example from
        CyberDildonics - 36 minutes ago
        Actually Houdini's COPs are very capable, I use them all
        the time. Also you can define custom procedures/nodes using
        vex as text or as a separate node interface.
          wdanilo - 26 minutes ago
          I know Houdini very well, I've been writing plugins to it
          for years. Vex is capable of handling complex
          expressions, but it is still limited to predefined 20 or
          30 types and you cannot extend it (you can in a hackish
          way using some C++ interface, but lets assume that this
          is just too hackish). This also effects the UX of
          Houdini, you can often see nodes with 30 or 50 inputs
          that look strange (like the std material definition). If
          you are able to define custom types, you can collapse
          related parameters into new types.I'm not talking COPs or
          Houdini is something bad. It is one of the few
          applications that I support with whole heart and I love
          it. In fact Houdini is a very rare example of really well
          defined visual DSL.Luna differs in many ways, the most
          important are that we've got double representation and
          Luna is a real programming language, while Houdini
          provides you limited set of building, yet very powerful
          blocks. I would however love to see Luna used within
          Houdini as a plugin, I've been already speaking about it
          with some folks :)
  aaron-lebo - 6 hours ago
  What is your business model?
    wdanilo - 6 hours ago
    First of all, we originate from Open Source community and we
    believe in it so strong, that we set it as a backbone for our
    business. We also believe in Open Adoption Software model:
    .Answering the question more directly, we will be providing
    payed support and hosted computing environment with automatic
    scalability in the future, however now we will be focusing on
    building community and helping everyone gain from what Luna has
    to offer, keeping Luna completely open source and free.Did I
    answered your question deep enough? :)
      joshmarlow - 4 hours ago
      Thank you for the link about the Open Adoption Software
      model.  It was a nice read!
        wdanilo - 3 hours ago
        I'm glad you like it! :)
  amrrs - 3 hours ago
  When you're talking about building a community, I'm wondering how
  are you going to convince Data Scientists who are pretty much
  used to R and Python and not any functional programming language,
  try Luna? Any plans for it? Like a free course on Udemy or any
  mooc to take this to masses?
    wdanilo - 2 hours ago
    We are open to suggestions here. We know that Luna brings a
    great power to Data Scientists but there have to be a good way
    to show this power to them. I don't know currently what way
    would be the best and we've got a little time until we do it.
    For now, the first milestone for us is to build community
    around good programmers (including good programmers from the
    data science field) and later target less technical people. Any
    suggestions however, are very important to us!
      marmaduke - 2 hours ago
      I'd be interested in (and have some experience) in bridging
      Python with other (data-heavy) languages, which would let you
      pull in a lot of functionality as nodes in your graph, or
      expose your graph as functions in Python.
        wdanilo - 1 hours ago
        Great! I'd like to help make it happen. Please sign to our
        list and make sure you read mails from spam folder. Let's
        be in touch after the release, soon. Alternatively, just
        drop me a line at wojciech at and let's stay
        in touch! :)
  gravypod - 6 hours ago
  What kind of plots can you make with this? This has real
  potential in the big-data and scientific fields. Plotting is hard
  and if you can easily tie together many data sources and models
  that are popular onto time series and geospatial plots this will
  be a winning combo go scientists.
    wdanilo - 6 hours ago
    You can connect to our data ANY HTML/JS compatible
    visualisation. Moreover Luna has some basic (and they are
    getting better with every day) bindings to drawing over webgl
    canvas, so you can define visualisations using our nodes. We
    will be showing examples how to define efficient heatmaps /
    custom plots using few nodes interactively in Luna. We will be
    more than happy to collaborate with you and anyone interested
    in data visualisations soon, so lets stay in touch! :)
      gravypod - 5 hours ago
      If you can, internally, handle adding together multiple data
      sources you'll win in the academic space with something like
      this. Especially if you can choose a Python syntax for the
      "code" portion.In scientific spaces you have many data
      sources that all mean completely different things. They are
      all recorded in different coordinate spaces (mag, distances,
      polar, etc) and you want to plot many of these things into
      the same plot and have them go where they were meant to be.If
      you could generate 3D plots as well just by flipping a switch
      that would be a huge plus. The hard part is that we have many
      modeling softwares that are written in strange ways and in
      strange formats. One example of a very popular model with a
      difficult interface is the IRI (  If
      you could just link a node of "IRI" into "Earth Plot" then
      that would be awesome.
  dgreensp - 3 hours ago
  Can I implement pixel-level video effects with Luna (e.g.
  warping, time map, segmentation, keying, etc.)?
    drewm1980 - 2 hours ago
    It's built on top of GHC... you could try writing your filters
    in haskell; I imagine it would be similar.
    wdanilo - 2 hours ago
    Sure! Is webgl good enough for you? If so, I will prepare an
    example and include it in the official release. If you need
    more "standard" GPU power, then it will be possible, but a
    little bit hackish on the beginning (we don't have libraries
    for it yet and you will need to connect to other language to
    keep the performance. We will support language
    interoperability, but in the first reelease it will be hackish.
    Still if you'll need it, I'll show you how to do it) :)
      dgreensp - 1 hours ago
      Thanks for the reply!So do you have first-class support for
      video as well as images?  It seems like to have fun with
      video editing in Luna, you'd need to have built-in support
      for videos an inputs and outputs, and have a way to play the
      video output on the screen, and maybe scrub through it, and
      at a minimum be able to run shaders on the "current frame"
      and export the resulting video out.  The next level after
      that would be being able to load multiple frames into memory
      at the same time, and being able to do a combination of
      "offline" and "online" processing with some CPU involvement
      (e.g. calculating a motion track and storing it, or applying
      a filter that can't be expressed as a pure shader program).I
      don't know enough about Luna yet to know what code to do
      these things would "look" like on the visual side, or come to
      think of it where the computation is being performed (in the
      browser?).  Much more to learn, but the project looks great,
      a sort of "holy grail" in a way.
        wdanilo - 1 hours ago
        Hi! Thank you for such great description of the process. In
        fact I know it well, I originate from the same domain - i
        was working for few years as FX TD :)You can think of Luna
        just like about a general purpose programming language. You
        can define your own types and you can even define how to
        decode bits from binary files to your structures. The GUI
        runs in HTML, so you can utilize any html component to
        display output. Definitely, your use case is doeable,
        however the amount of libraries currently available is
        very, very low, so it will need some love :)Did I answered
        your questions? :)
  auggierose - 6 hours ago
  Sounds pretty cool. Looking forward to it. Don't rewrite the
  graphical interface again, though ;-)
    wdanilo - 6 hours ago
    We would not rewrite anything again soon :) We decided to
    rewrite it because of all the gains we gather from it
    (including both features as well as much increased speed of
    development) and it already (almost) payed off.
  quadcore - 4 hours ago
  Im just wondering what's the purpose of the language itself.
  Ideally you would like to use the programming language you want
  and still have the visualisation stuff.
  seanwilson - 5 hours ago
  Can you elaborate more on the dependent type system? Is type
  checking decidable? What restrictions does it have to keep
  automatic type checking feasible?
  yellowapple - 1 hours ago
  "we are just before releasing Luna as an Open Source project!"Is
  there a particular timeline on that?  I'd love to see how this is
  implemented (and - importantly - whether or not this can easily
  be integrated into other software).
    wdanilo - 1 hours ago
    We are right now finishing installers on all platforms, making
    examples and working on new website. I don't want to set a
    deadline, but we work hard to make it just "around the corner"
    and a you can see, we're almost there :)
  bluetwo - 4 hours ago
  I'm interested in seeing how an open source programming
  language/platform with a clean GUI will evolve. Curious to see
  this in a year!
    wdanilo - 4 hours ago
    We are also super curious and we hope it will shine. If you
    hope for it too, let's contribute! We'd love to work with you
    to polish it as much as possible! :)
      jamiek88 - 22 minutes ago
      Is there a way for a beginning developer to help?Maybe with
      documentation? I could at least help with editing / proof
      reading and the drudge work you guys are too talented to be
      doing! Your time is much better spent on the core
        wdanilo - 12 minutes ago
        There is always a way to help and we are very grateful for
        helping us. It means a lot to me. But please, do not treat
        us like "too talented to do something". I feel just wrong
        then :)Drop me a line at wojciech at and we
        could work something out :) I do not promise we will be
        able to collaborate before the release (we've got our hands
        full of work and we're hardly sleeping in nights now), but
        in the early days / moths after the release the help would
        be much needed and we would love to build community around
        people as passionate as you are! Thank you! :)
  kowdermeister - 5 hours ago
  How did you convince VC-s, that there's need for a new
  programming language?(I'm totally not saying there's no need, but
  since it's highly technical and I probably would fail at it I'm
  really curious)
    wdanilo - 4 hours ago
    We are not really making a programming language. So, err.. ok,
    we are. But it is "just" an engine. Luna is a data processing
    platform. It allows you to prototype, design and deploy data
    processing applications much faster than it is currently
    possible, while working in an elegant, interactive data
    visualization environment. Moreover, we are supported by many
    cool companies that want to use Luna for their purposes,
    including IOT, Data Science or Bioinformatics ones. We got a
    really big interest in our technologies and we've collected the
    whole round in less than 6 weeks, choosing the investors we
    liked among many that wanted to contribute. I'm writing about
    it because I'm really very grateful for their help and super
    happy that the need for such development is widely recognized.
      joshmarinacci - 1 hours ago
      Wow. That's exciting. I wouldn't think it would be possible
      to get a programming language funded, but you found a way. I
      look forward to seeing where things go. Good luck!
      k__ - 4 hours ago
      Haha,  I was thinking the same.Well it's not really a
      programming language, but a data processing platform,
      business people love that -> VCs love that.
        wdanilo - 4 hours ago
        Lets underline one important thing. Luna really is nut just
        a language, it really is a data processing / visualization
        platform! :D
      kowdermeister - 4 hours ago
      Thanks for the response, it makes more sense now. However
      your site does say it's "just" a programming language with
      huge font size :)You might want to add what you just posted,
      there's nothing wrong with it, but it would make more people
      to get it IMHO.
        wdanilo - 4 hours ago
        There is a big difference between what Luna is and who we
        target with our website. We want now to keep in touch with
        good developers and build community around them and make
        Luna a dancing and singing complete development environment
        with high-level libraries useful for less technical people.
        The libs we include are very limited currently, so Luna
        would not be very usable for non-technical people in its
        current state. Does it make sense? We will try to explain
        it better on our new website though! :)
          qubex - 3 hours ago
          I applaud your candor.
          wdanilo - 3 hours ago
          Qubex, I'm sad such comment appeared. I'm sad only
          because it shows how rare people are honest while
          building companies. How can we build something that
          engages other people and cheat on them?Look, we've been
          working on Luna for over 2 years now, full time in a team
          of 7 people. We were often working during weekends or
          hardly sleeping at nights just to create what we believe
          in. We were constantly using software build the same way
          - linux, ghc, atom, etc. Now we want to give it
          completely free for everyone and we want to survive not
          because we want to be reach or famous, only because we so
          deeply believe that Luna really can drastically change
          something important in the data processing field. We will
          not survive without people engaged in this project,
          without people that will make it shine in different
          domain specific fields. We don't want then to "close" it
          - it will always be open and free (which is somehow
          guaranteed by the license too). As a company we need to
          make money too, but how could we make money not being
          honest?We want to build community around good developers
          only because Luna could be a big development boost for
          them and additionally, we can together bring it to less
          technical people and help them too in their daily tasks.
          If people like what we do, we can then charge for support
          and additional paid services, developed by us, but I
          think it is really fair deal and companies should be
          built this way.Sorry for a little long answer, but I got
          that sentence emotional! :)
          crawfordcomeaux - 55 minutes ago
          This response strikes me as either coming from a mindful
          person willing to show public vulnerability or someone
          who has studied such people & learned to mimic how they
          communicate. My own experiences with mindfulness suggests
          categorical thinking naturally goes hand-in-hand with
          (and may naturally emerge from) being in a mindful state,
          so I'm more inclined to think you're not a well-
          researched phony. I also prefer to give people the
          benefit of the doubt.I'm feeling really inspired,
          hopeful, and happy when I read comments like these
          because I consider the lack of vulnerability in the
          startup world to be as sad as the lack of authenticity.
          Thank you! I hope you'll keep doing what you're doing.Are
          you, by any chance, familiar with nonviolent

  pier25 - 5 hours ago
  Is this intended for a general purpose programming?
    wdanilo - 5 hours ago
    Yes, it's one of our core goals! :)
  z5h - 5 hours ago
  Great news! What are the hold-ups in going open source? How soon
  is "just before"?
    wdanilo - 5 hours ago
    There are no hold-ups really. We just want to release Luna in a
    form when you will tell "oh, that's a cool project I would like
    to contribute to" rather than "interesting, let's wait until it
    is usable". We are right now finishing installers on all
    platforms, making examples and working on new website. I don't
    want to set a deadline, but we work hard to make it just
    "around the corner" and a you can see, we're almost there :)
  bobwaycott - 2 hours ago
  This really looks fantastic, and I'd love to give it a spin. I
  could see this being pretty awesome to both use myself on
  projects, and with people I spend time with helping them learn to
  develop serious applications. Looking forward to see where Luna
  goes. Congrats on a great-looking product!
    wdanilo - 1 hours ago
    Bob I'm happy you like it! We'd love to hear your feedback
    after your tests :)
  shmolyneaux - 3 hours ago
  Very cool project! What license are you planning on using?
    wdanilo - 3 hours ago
    We are considering MIT or Apache v2, what do you recommend?
      spot - 49 minutes ago
      apache2 because of the patent protections.
  shalabhc - 4 hours ago
  Ah - great to hear you're open sourcing it because I was a bit
  put off by 'sign up to be selected' form, even though the product
  is fascinating.
    wdanilo - 4 hours ago
    Sorry for putting off. I will explain that a little bit - we
    want to build community around people which are active,
    passionate and determined enough to fill such a form. I
    understand why it could be perceived negatively, sorry for
    that! :)
      shalabhc - 3 hours ago
      But without giving access, how can you expect passion? :-)Let
      everyone check it out, the passionate ones will engage more
      through any channels you have (mailing lists, chat, twitter)
      and be easy to find, IMO.
        crawfordcomeaux - 2 hours ago
        I don't disagree with you, though don't necessarily agree,
        either because I don't know that passionate people are
        communicative people. I know many passionate people, myself
        included, who've  been known to be rather introverted.After
        reading some of their comments & the copy on their
        homepage, the creators of Luna sound like they could be
        fairly mindful people. I'm betting they're seeking people
        who enshrine certain values to seed their community with &
        want to privately establish a relationship with them. I
        find this approach appealing to my introverted side, as a
        result.The next mindful step would be to open things up to
        everyone immediately to allow the ensuing flood of
        extroverts & introverts alike. This approach seems like it
        could counter starting off with winner-take-all mechanics
        in the community's culture.Then again, all I know about the
        product is from the first bits of text on their site & this
        post. I didn't know they weren't simply allowing everyone
        in until this thread. I could be totally off on how they're
        rolling. If I am, I'll have to take some time to examine my
        confirmation biases.
          wdanilo - 2 hours ago
          crawfordcomeaux I'm really curious about your further
          thoughts. Could we chat more about it? Would you be so
          nice and drop me a line to wojciech @ ?
          crawfordcomeaux - 1 hours ago
          Gladly! Consider the line dropped.
  agumonkey - 32 minutes ago
  inspirations please ? brett victor ? dataflow / node based
  modeling ? others ?
    wdanilo - 22 minutes ago
    Houdini, Haskell, Python, Ruby, MaxMSP. I think these were the
    strongest influencers.
  imhoguy - 2 hours ago
  One click deployment example to AWS Lambda or Google Cloud
  Functions could be killer scenario!
    wdanilo - 2 hours ago
    This is what we want to deliver a little bit later. So you
    could go to our website, click "start", make the graph and
    everything will be run and scaled automatically for you,
    delivering you the results. Are we talking about the same
    functionality? (I'm abstracting over particular hardware
      hustlechris - 2 hours ago
      1 click deployment to something like would be
      even cooler
        kustosz - 2 hours ago
        Interesting idea! Are you thinking about any specific
        applications you'd like to deploy there? I'd love to learn
  akavel - 4 hours ago
  Wouldn't it be trouble if I tried to visit you at your office
  tomorrow? :) Not sure if time (and traffic) will let me, but I'm
  in the same city, and super interested in your project... would
  love to talk some... note: not an investor in any way, sorry ;)
  but I wanted to build something similar in some ways, and now
  have high hopes that maybe I won't have to, maybe I'll be just
  able to build on it/extend it! If you're ok, what time would be
  cool for you?
    wdanilo - 4 hours ago
    Sure, it's a super cool idea. Let's drop me an email to
    wojciech at and we set all the details (time /
    place etc) - we've got a parking place here, but its "hidden"
    so if you will be driving car, you can park here without
    problems! :)We are not looking for any investments now but we
    are looking to collaborate with everyone interested in Luna, so
    that sounds like a "perfect match" for us! :D
      akavel - 4 hours ago
      Sent! Please check your spam folder ;) Also copied to the
      address from your website, or are both correct?
        wdanilo - 4 hours ago
        I've got it and just replied. See you tomorrow! :)
thecity2 - 7 hours ago
I like the idea of category-oriented programming. Would be
interested to see a white paper on what that means.
  gramstrong - 7 hours ago
  I'm not sure what the idea even means, or if it really warrants a
  separate paradigm than OOP. Is it related to category theory?
  Frustrated that a 'new' paradigm got dropped on me with only a
  couple sentences of explanation.
    tree_of_item - 6 hours ago
    It's bogus, they just wanted to use the word "category" to try
    and lure in FP enthusiasts.
      wdanilo - 5 hours ago
      It's not a bogus! We are FP enthusiasts and the word
      "category" has really strong connections to our type system.
      However, the name might be a little misleading so we've
      already changed it. Anyway, we treat our types as categories.
      For example 1 belongs to a singleton category 1 (thus you can
      write 1 :: 1) but it also belongs to category of positive
      numbers or all numbers in general, thus again you can write
      (1 :: 1 :: Nat :: Int :: Num :: *). I hope you see now
      connections to category theory. However the name itself, as I
      noted above, could be misleading so we need to change it.
        shalabhc - 2 hours ago
        1 also belongs to 'all integers from 1 through 10'. Is this
        also a category? (I assume yes). How is this category
        expressed in Luna?
          wdanilo - 1 hours ago
          Yes it is, `1 :: 1 | .. | 10`. The pipe combines
          categories, so you can as well write `1 ::
          1|2|3|4|5|6|7|8|9|10`. Both of the forms are however not
          yet supported in the main branch of official compiler and
          will not be supported during the first release yet.
      coldtea - 4 hours ago
      And you know that because?
      kustosz - 5 hours ago
      I wouldn?t say it?s bogus, and there definitely wasn?t any
      malicious intention behind it, it?s just that finding a name
      for such a property is super difficult. As I?ve written
      above, it?s about having fine-grained control over the data
      (object) constructors. It turns out most words synonymous to
      ?type?, ?kind?, ?category? etc. (as understood in the wide
      sense) are already taken by mathematical / programming
      concepts. We will, however, change the name, as it causes way
      too much confusion :).
  kustosz - 5 hours ago
  This feature is a bit of a misnomer, as it immediately brings up
  discussions about category theory. That being said, the idea
  behind it is pretty simple, yet powerful. Our typechecker will be
  able to track the shape of data on a deeper level than usual
  types. Basically will be tracking the exact constructors used to
  construct data, not just types ? something that is a huge pain in
  most existing typed languages. If you for example take Haskell,
  you can have a data type with multiple different constructors,
  and even though you may be certain that some of those are
  impossible to occur at some points in your program, it is
  difficult to express that certainty on typelevel ? other than
  repacking to a different datatype, with less constructors, which
  then need to be named differently and need repacking even if
  you're just calling a function that expects a wider range of
  constructors, and thus is definitely safe. However, due to the
  amount of work with more foundational layers of the language,
  we've had to postpone implementing this feature until further
  down the line. It is coming at some point for sure, though :)
    thecity2 - 3 hours ago
    This sounds a bit like Idris with its dependent types.
halflings - 6 hours ago
This is similar to Knime [0], which lets you build "workflows"
visually, and allow you to write custom blocks with Python or Java.
The main difference seems that you can represent the whole workflow
in a human-readable (and writable) format.
murukesh_s - 4 hours ago
Awesome, we need more visual programming languages coming out now.
it's so impossible to convince a programmer who never experienced
visual programming how useful/practical it can be.I understand you
are from a video processing background where visual programming is
widely employed.. We are also building a visual programming
platform, inspired from enterprise tools. Really interesting to see
this domain evolve.
toisanji - 7 hours ago
I'd like to see how the visual representation of larger non toy
examples look. Looks like a very cool project !
  wdanilo - 5 hours ago
  hi! Each node "contains inside" graphs of nodes. You can
  literally select nodes and collapse them into one, new
  "function". This way you just raise the abstraction level, just
  like in textual-sources, however in the graphical environment it
  is just more pleasant to select nodes than re-factoring functions
  in text :)
indigo0086 - 7 hours ago
Interesting.  I wonder if this is the future of not only reducing
the barrier to entry to software engineering, but setting up a new
tier of software engineer for the unskilled.  Rather, would
software have lower barrier to entry positions that are driven by
piecing together software components like they would a factory job.
I'm sure for most software a team is only necessary,but as software
dominates our future, perhaps this is the bridge to unlocking more
opportunities outside of a higher skilled tier of manual coding.
I'm just talking off the top of my head, so I may be totally off
base.  Either way looks interesting, and that futuristic interface
is sweet.
  stormbrew - 7 hours ago
  This is one of those things that always seems like it ought to be
  the future but for various reasons it doesn't take off. My high
  school computer class used a programming language called
  ProGraph[1] that looked a lot like this, but without the text
  representation, and it was neat but honestly it was more tedious
  to both read and write anything of even moderate complexity than
  a pure textual form.[1]
    indigo0086 - 7 hours ago
    For sure without the text representation, or manual code aspect
    a language would ultimately fail.  I feel that languages that
    seek to "simplify" often oversimplify and leave those that
    require more granularity (most programmers) not to buy in.
    These languages can definitely offer a new paradigm on top of
    existing languages but it requires some fine control to get
    mind-share and ultimately take off.  I'd say the real test of
    this, at least aligned with how I see it's future, is recruit
    not developers but non-devs and see how productive they can be
    in it, given they have a nice library of components to work
      stormbrew - 6 hours ago
      I fundamentally despise this concept of 'non-devs'. There's
      just a cyclical definition of non-devs as people who use non-
      dev tools and vice versa.It's extremely common to dismiss
      tools used by certain classes of people as non-programmer
      tools because of who's using them. Look at Excel, which is
      basically a visual programming language that probably more
      people know how to program in than know C. But because your
      boss or your project manager or your sales rep uses it it
      gets dismissed.Never mind that unlike these things that crop
      up every now and then people get real work done by
      programming their computer with it.
  Skunkleton - 7 hours ago
  Visual programming languages lower the barrier of entry for
  _programming_ not software engineering. There are many mature and
  successful examples of visual programming languages that do just
  that (LabView, Scratch, etc...)
  Paul-ish - 41 minutes ago
  This is what I was thinking. Any critique of this approach may
  want to keep in mind this isn't necessarily going to replace what
  software engineers are doing now, but rather expand what is done
  by others by lowering barriers.
Skunkleton - 7 hours ago
Here is the snapshot from when this was submitted to HN about a
year and a half ago: question: what has
changed? Has anyone addressed any of the fundamental questions that
were posed last time this was submitted? Are there any concrete
examples of how you might use this for general purpose programming?
  wdanilo - 6 hours ago
  Hi! I'd be happy to cover any of the fundamental questions you
  are refering too. I was trying to cover them last time, but if
  there is something uncovered, I'd be more than happy to fix it :)
  Would you be so nice and specify what are your concerns?Regarding
  the questions, I've just put some small summary of updates on the
  top level of this thread. Regarding real world applications, Luna
  will be well suited (but not limiting to) to interactive data
  science, creating custom data visualisations, microservices
  management, rapid prototyping of any data processing networks
  (inlcuding IOT systems) and of course graphics or sound
  sleibrock - 7 hours ago
  That's more or less what I want to know. I've been subscribed to
  Luna for a while but I haven't received any updates or news about
  it whatsoever. The Twitter account is pretty dead. Even the
  images on the website seem pretty sketchy since I doubt many of
  the images are actually real or represent features of the editor.
  I've pretty much given up on this ever coming out.
    wdanilo - 6 hours ago
    We are alive! I'm really sorry for keeping you waiting for so
    long, we've been doing our best to make everything happen in
    the best possible form and I hope you will be happy with Luna
    after the release :) I'd be very thankful for any feedback
    after the release, it would help us much!
      sleibrock - 6 hours ago
      Thanks for chiming in! Hopefully it works out for you guys!
  striking - 7 hours ago
  For completeness, the previous threads:
  breck - 6 hours ago
  My guess is they ran into problems with syntax. If they alter
  their language slightly to be an ETN, it could help. Happy to
  chat more if any of them are reading.
    wdanilo - 6 hours ago
    Actually we did not run into problems with syntax! The syntax
    we were presenting last time has changed only slightly. I'd be
    happy to chat more about it! You can grab me here or message me
    directly at wojciech at :)
      breck - 6 hours ago
      Fantastic! Will do. Hopping on a plane now but will be in
        wdanilo - 5 hours ago
        Have a safe and pleasant flight!
hustlechris - 3 hours ago
so when's the ICO?
_RPM - 4 hours ago
Any relationship to TJ H's repo, ?
  kustosz - 2 hours ago
  Other than name ? none at all :)
danem - 17 minutes ago
I'm struck by the similarity to grasshopper. This seems to share
many of the same features such as visual profiling, visual /
textual representation, live previews etc... Has it inspired the
design at all?
  wdanilo - 6 minutes ago
  Grasshopper did not, but Houdini / Touch designer actually did.
polskibus - 4 hours ago
What is it compiled to? Does it target JVM, CLR, native code (if so
what platforms?) What is it compiled with? LLVM ? GCC ? Custom
compiler? What is the standard library like?
  wdanilo - 2 hours ago
  It targets few backends. Currently it runs on our VM, but we are
  working on targetting GHC's Haskell Core (which then compiles to
  LLVM IR). Luna's compiler is of course a custom compiler written
  in Haskell. Standard library looks cool!Did I answered your
  questions? :)
  drewm1980 - 2 hours ago
  It targets GHC
agentultra - 7 hours ago
I find thinking visually to be quite limiting.Although having a
mixed textual representation is interesting. I sort of get this
with the Moose platform in Pharo which I use for analysis based
work. The most painful part of that though is interfacing with
foreign systems. And maybe Smalltalk... not a bad language but I've
been bitten by the Haskell/Lean/Idris bug. A seamless FFI
experience as promised with this language coupled with a toolbox
rivalling Moose would be interesting!
  pera - 4 hours ago
  I think it really depends on the kind of problems you are trying
  to solve: expressing programs visually is very common in signal
  processing (see for instance GNU Radio and Pure Data) because the
  flow of the signal through different components is one of your
  main concerns. Also having easy to tweak parameters in the form
  of knobs and sliders widgets, or adding for instance an
  oscilloscope node anywhere anytime, aids your development
  workflow a lot.
  crimsonalucard - 7 hours ago
  What is text itself but a visual representation of something
  complex? I repeat, text is intrinsically visual and just a
  restrictive form of the alternative which is diagramming. Is it a
  pure coincidence that the english alphabet happens to be the best
  primitive for representing programming concepts?I believe that
  there is no coincidence. English is horrible at representing
  programming concepts. A limited set of characters, restricted
  left to right reading and line based structures... is this really
  the best way to program? Intuitively, things like recursion, data
  structures, processes, modularity and objects etc, etc, are
  better represented with diagrams... Wouldn't Circles and lines
  that can move diagonally across the 2D plane be better candidates
  as programming primitives?It's hard to say really. Functional
  programming is in itself a restrictive form of imperative
  programming that gains power through restriction. It may very
  well be that English as a programming primitive gains the same
  type of power through restriction as well. Our brains have
  dedicated modules for processing language as well as dedicated
  modules for processing geometry, shapes and diagrams. Which
  module is better for programming?Let's face it though, English as
  a programming primitive only became prevalent for historical
  reasons similar to how javascript (a shitty, shitty language)
  became prevalent. We like it partly because we're used to
  it.There has got to be a better way.
    agentultra - 6 hours ago
    Math.When learning graph theory it can be quite useful at
    first. But once you start using set theory the graphical
    representation actually hides more information than it gives
    and intuition starts to get in the way of us discovering useful
      crimsonalucard - 6 hours ago
      I think this visual stuff is perfect for functional (math
      based) programming as composed expressions aren't easily
      readable as english.I find language to be better suited for
      imperative procedures. Think about it, I have a list of
      tasks, do I write that list in ordered English bullet points
      or do I draw a diagram?
        agentultra - 1 hours ago
        I find simple math to be much more elegant and easier to
        comprehend then a jumbled visual diagram. It's much easier
        to understand a universal quantification in a standard
        notation than reasoning by visual analogies.Programming
        languages tend to be a little less expressive and elegant.
        They're more complicated too. For reasons of course... but
        I don't think I'm going to be writing algorithms and data-
        structures in such a tedious notation as a diagram.Graphics
        are good for some things but programming I don't think is
        one of them.
          crawfordcomeaux - 28 minutes ago
          Are you familiar with category theory? I've been finding
          it very helpful for processing things visually.
          Considering this is "category oriented programming," I'm
          betting they find it helpful, too ;)
          kustosz - 17 minutes ago
          Some things look best in text and it's fine. However,
          "programming" is a very broad category, and definitely
          does not boil down only to algorithms and data
          structures. I'd even say that most programming tasks in
          the world right now are much less about complex
          algorithms and much more about everyday systems plumbing.
          Sure, at some point you'll need to fire a complicated
          linear algebra kind of algorithm, but before you get
          there, you need to get the data out from some source, do
          some reformatting, decide which algorithms to run and
          when and then send the results somewhere else. And for
          that, seeing what is happening with your data the moment
          you try a solution, and deciding the next step based on
          immediate feedback is great.This is pretty much why we've
          gone with interchangeable representations instead of
          going "visual only". The choice of the proper tools /
          representations highly depends on the context, and we
          want to leave that for the programmer's decision.
        d3ckard - 3 hours ago
        Actually diagram might be better suited, for example to
        display the difference between sequential in parallel
      nikki93 - 6 hours ago
      IMO the graphical representation some times removes
      accidental complexity by not needing names or producing
      orderings. eg. To write a non-tree graph you always need to
      introduce local names unless you use something like SKI
      combinators. When proving the Kuratowski-Wagner theorem for
      example, I'm pretty sure the diagrams and the language-form
      help each other without either being strictly better.
    nikki93 - 6 hours ago
    What's funny is when we program we use ASCII art (indentation,
    things like the fact that [ and ] cause symmetric "box" look)
    to help us. If text was really all we needed, writing minified
    JS directly would be ok. Given a keyboard and a mouse, this was
    the fastest way to create nested boxes (ASTs) that have non-
    tree links (names): type out a serialization of it that your
    fancy text editor automatically ASCII-artifies.
mrkgnao - 6 hours ago
This looks really beautiful: what's it written in?Also, "Num in
IO", nice. Now we wait for someone to write a "(Num in IO) in IO"
  wdanilo - 5 hours ago
  Hi! We write almost everything in Haskell.  By the way, Num in IO
  in IO is completely ok function signature - it means that you
  have a function that uses IO to optain a function which will
  return a number while performing another IO action :) However it
  is completely ok in Luna for the end user to type it simpler,
  like `a :: Num` and the compiler will keep track of all "monad
  transformers" under the hood.
    rjeli - 2 hours ago
    I think this is a really good idea -- many people, myself
    included, get really excited about Haskell and then are turned
    off by the complexity of monad transformers.I would recommend
    that you focus on good error messages that explain monad-
    related errors in "user land" and not force them to either
    guess about what's wrong or suddenly learn all the stuff under
    the hood. It's a terrible experience and you see it in C++ with
    incomprehensible template errors or any kind of transpiled
    language like ClojureScript that gives you errors from the
    underlying implementation.
      wdanilo - 2 hours ago
      That is a very good point. We treat "monads" in a very
      special way in Luna - they have their own type section and we
      can analyse them and report errors much clearer than Haskell
      can for example. This does NOT mean that we limit them in any
      way. You are free to define your monads and convert them to
      ordinary types or back as you wish :) But we normally dont
      describe them as monads, just as "context", because it is
      easier to understand.
jancsika - 7 hours ago
Where are the node positions stored?
  kustosz - 6 hours ago
  We store them in a separate section in the source file, which is
  hidden by default when editing. So a bare .luna file is a
  readable text file, containing some metadata at the bottom, which
  is not shown when editing with our editor. This way we achieve
  clear representation and full portability of the source files.
    jancsika - 3 hours ago
    Nice.A few more questions:Is does z-ordering just follow the
    painter's model?As a user am I allowed to place two nodes at
    the same x/y coordinate?As a user am I allowed to position
    nodes in a way that creates a visual ambiguity in the diagram
    (e.g., two or more perfectly overlapping edges among
    nodes)?Edit: As a user am I allowed to place a node at an x/y
    that lies within the bbox of another node?
      wdanilo - 1 hours ago
      1) it uses painters model  2) you are allowed to place in the
      same x/y, but we're looking for a way to indicate it to you.
      3) you are able to place nodes so the edges overlap, but we
      also are looking for a way to indicate it to you.Keep in
      mind, that point 2 and 3 does not happen during your workflow
      normally, so these are very rare situations. We want to
      support them just from the "purity" perspective, but they are
      very low on our priority list currently.
    wdanilo - 4 hours ago
    This way we are also compatible with git etc! :)
      imhoguy - 3 hours ago
      How about conflict resolving? Is it some base64-like snippet
      or human readable representation?
247yak - 6 hours ago
anyone try Love to get a comparison on how this is
better / different.
mixedbit - 4 hours ago
How do you envision version control/code reviews with Luna
projects? Can diffs be explored at visual level or only source code
level? If one developer moves nodes around without altering any
logic are such changes tracked in the code repository?
  kustosz - 3 hours ago
  For starters we've made sure to make git diffs as readable as
  possible. The visual data is kept at the end of text file (hidden
  when using our editor), usually in a single line. So if you just
  move nodes around, one line gets changed and it is clear what to
  ignore when scanning the diff, while making sure to retain the
  changes in the repository. For later stages, we envision much
  deeper integrated version control, including viewing git diffs in
  the visual editor.
ruffrey - 6 hours ago
Is this related to the luna programming language experiment by  TJ
  mendelk - 6 hours ago
  There is also a framework by this name that is (was?) being
  developed by Asana.Naming is hard in the global namespace!
    samratjp - 5 hours ago
    Yeah it was -
  kustosz - 6 hours ago
  It's not. That is just a name clash, but in our early days TJ was
  so kind as to pass the ownership of luna organization on GitHub
  to us :).
shalabhc - 2 hours ago
Examples on the home page have broken indentation, or just a multi-
level indentation that is confusing?    class Point:         x y z
:: Int       origin      = Point 0 0 0       Point x y _ = origin
print 'Origin XY coords are ($x,$y)'   (Why is `origin =` indented
at all?)
  marxidad - 2 hours ago
  To line up the equal signs, so all assigned values are aligned as
  wdanilo - 2 hours ago
  You are right, all the last 3 lines should be aligned max to the
  left. We'll fix that soon on new website!
adamgravitis - 6 hours ago
Are you guys going to release something describing your concept of
"category oriented programming" any time soon?
  wdanilo - 5 hours ago
  We will try to cover it alongside the upcoming release! :)
Meai - 6 hours ago
It sounds like it wont compile to C or use LLVM, you have some kind
of custom VM?
  wdanilo - 5 hours ago
  We are not going to compile to C, however we will to LLVM IR (not
  directly though). During the first release we will provide Luna
  interpreter (so yeah, some kind of custom VM). We are however
  already working on the backend that compiles Luna to Haskell's
  GHC Core (
  er/Co...), which then gets different functional-programming
  related optimizations and translates to LLVM IR.
pikachuaintcool - 6 hours ago
Pretty bad name, I thought it was a typo for Lua.
  edko - 5 hours ago
  I agree. Lua is moon in Portuguese; Luna is moon in Spanish and
  wdanilo - 5 hours ago
  We use the name for a long time now and we love it, however I
  agree it could be confusing. We failed, however, to find a better
  one.I've got a crazy idea here! I know that HN has some magical
  powers, so if you have any idea of a better name for a dual-
  representation, functional, visual language, we'd be more than
  happy to talk about it and change it before the release (after
  the release it would be too late)! :)
    pikachuaintcool - 2 hours ago
    I mean, I don't care if you keep it as Luna. Just saying you're
    gonna have problems if you keep that name
      wdanilo - 2 hours ago
      I completely understand that, but we care about it very much
      and don't want to have problems with it. Because of that I
      asked about help with the naming :)
    vanderZwan - 3 hours ago
    Janus/Ianus? Two headed god of.. You know what, I'll just link
    the wiki page:> In ancient Roman religion and myth, Janus (;
    Latin: I?nus, pronounced [?ja?.nus]) is the god of beginnings,
    gates, transitions, time, duality, doorways, passages, and
    endings. He is usually depicted as having two faces, since he
    looks to the future and to the
      wdanilo - 1 hours ago
      Thank you for this name! I really like the connection, it is
      in fact super cool. The only thing that puts me off when
      thinking about this name is that "Janus" is a very similar
      name to "Janusz", which is in polish a name used very often
      to describe in jokes greedy and unfair entrepreneur :D
kazinator - 2 hours ago
> Traditional software development is broken by designWhich is why
Luna is entirely hosted within itself and needs a Luna
implementation to bootstrap.We wouldn't want to ask investors to
believe in any traditional development after telling them it's
adgasf - 6 hours ago
Why implement a new language rather than a GUI on top of Idris,
PureScript or similar?(That aside, very excited!)
  kustosz - 6 hours ago
  We needed to design everything from scratch to make sure the two
  representations are truly interchangeable. Every design decision
  in the textual language needs to be backed by its visual
  counterpart, and we found this way of thinking impossible with
  any other existing language. Then there is the problem of
  complexity of existing, typed, functional language. We aim to
  make things as simple as possible, while not sacrificing the
  power of types, in order to make the language accessible for a
  much broader audience. I'm super happy to hear that you like it,
  make sure to sign-up for our newsletter, so we can stay in touch
  once Luna is out :).
    wdanilo - 5 hours ago
    I would love to emphasize one of the thoughts from @kustosz
    reply: our main goal is to make Luna simple and intuitive yet
    very powerfull. We've got super cool type system on top of
    purely functional language, however we put our hearts to make
    the syntax (both visual as well as textual) very simple and
    intuitive. Neither of the mentioned solutions - Idris,
    PureScript nor Haskell, Erlang etc are "simple" and "intuitive"
    to use unless you are really good programmer.
  coldtea - 4 hours ago
  Because few care for Idris and PureScript.They wanted simplicity
  and to control the language and syntax -- not to tie themselves
  to some Haskell-like environment.
a-nikolaev - 1 hours ago
Looks like a lazy functional Python ) Very nice aesthetics of
presentation.There are a few things I am concerned, if you don't
mind: I think that actually visualizing lazy computation can be
quite a challenge, because of its on-demand nature. One might say
that a lazily defined expression is computed (and should be
visualized) where it's used, rather than where it's defined. There
is a lot of substitutions going on under the hood, and computation
is not as clearly localized as it would be in eager evaluation.
Also, the tight binding between the code and the visualizations may
limit your ability to optimize code for efficiency.The True / False
switch looks cool, but it feels like you are cheating here a little
bit by using a boolean literal. Would it look equally nice if it's
a function call or some complex expression that is possibly not
known yet (as in a function definition)? I have a feeling that at
the end of the day  Luna may require a very complex visual language
that is not easier than the textual alternatives.But this is more
like arbitrary concerns that will be hopefully clarified once you
release the whole system. Thank you for your work.Thumbs up for
exploring these new alternative for writing code. I think, it may
help us write better and safer programs in the future.
fareesh - 4 hours ago
Cool concept - is there an open source repo of some kind which
shows how a complex application (kitchen sink kind of app) is made?
  wdanilo - 1 hours ago
  Thank you! We will be releasing demos soon!
zimablue - 4 hours ago
This idea will eventually work and be huge I think (I know visual
programming languages already exist but a commonly used one to
emerge). As someone who believes in metaprogramming and flexibility
though I'm hoping for something dynamic, not a heavy mandatory type
system that compiles to Haskell.
  wdanilo - 3 hours ago
  We believe in something very similar, there are some differences
  though. Luna type system is not dynamic BUT it is also not
  mandatory. Our whole standard library does NOT mention a single
  type - all are inferred by type system and you can, if you want,
  state them explicitly. To sum this up, we want Luna to be simple
  to use, intuitive, but have a strongly typed backbone with power
  similar to Haskell or Idris IF needed. Does it makes sense to
  you? :)
    zimablue - 2 hours ago
    Thanks for your response and that does seem like a nice
    compromise, but it's still not perfect to me.If the choice is
    |, it's better than just  but I'd
    love some Good luck with
    your project, looks pretty cool
bussiere - 6 hours ago
I haven't tested it yet but i mind if this is possible to make
microservice with this ?Like defining an port (like 80) an input (a
json like {"example":0} make an operation an return a value by the
same port and json.It could be an nice way to include micro service
into a larger eco system or make people collaborate using luna in
larger project.For python you may use hug or flaskThat s an
interesting idea btwgood job and good luck
TFortunato - 6 hours ago
Super super cool project! As someone who does robotics, I'm super
eager to try this, and to hopefully contribute to some open-source
libraries for this.A lot of work in robotics involves software that
maps to this style well (functional-ish, where data is being pushed
through computational pipelines / graphs), and I think this could
be a killer development environment for things like control
systems, sensor fusion software, image processing / computer
vision, etc.The fact that it is going to be open source, and
already seems to have some nice support for things foreign
libraries, profiling support, and well as visualizing of your data
visually (that image processing graph example!) makes me think you
are going to get a good response to this.  I also think there are a
lot of hobbyist type projects (RasPi level 'smart home' stuff,
algorithmic art / music, SDR, anything you see on Make /
Hack-A-Day) who would love a tool like this!I'm very interested in
checking this out, and in contributing packages / libraries if that
will be supported. Hoping to get access to the alpha!
  wdanilo - 6 hours ago
  Hi! I'm always very happy to hear that Luna would help in a
  domain that I personally don't know much about! :) I would be
  very happy to collaborate with you. Contributing to Luna in any
  form, including creating libraries is more than welcome and we
  will do our best to help you achieve your goals with Luna, so
  let's stay in touch, we are working hard to make release as fast
  as we can! :)
    TFortunato - 6 hours ago
    Thanks that sounds great! I just signed up for the mailing
    list, but feel free to reach out to me at any time! (my
    username @
      wdanilo - 6 hours ago
      Thank you, I will! If something happens and after the release
      I will accidentally forget about reaching you out, just write
      me an mail to wojciech at I'd be more than
      happy to collaborate with you! :)
  whowouldathunk - 6 hours ago
  > A lot of work in robotics involves software that maps to this
  style well (functional-ish, where data is being pushed through
  computational pipelines / graphs), and I think this could be a
  killer development environment for things like control systems,
  sensor fusion software, image processing / computer vision,
    TFortunato - 6 hours ago
    yep, and I've used Labview (and Simulink, and other graphical
    editors) in the past for some of this.Why I'm excited about
    this is: 1) It's open source, so we can extend it and hack on
    it as needed. Thos is probably the biggest reason. 2) The dual
    textual / graphical representation is really useful in cases
    where you might want to switch between the two, or one makes
    more sense than the other. You can do some with text in some
    the other tools, but the last time I tried, it felt like an
    after thought more than something expressly designed into the
    language. 3) It looks to be designed as a general programming
    language, focussing on having a good compiler, good tooling and
    a nice foreign function interface. My hope is that this means
    we can incorporate it into our existing code bases easier than
    labview, where it kind of wants to stand alone. As an example,
    perhaps I have a large existing codebase for my robot written
    in C++ with ROS. Perhaps I could use this to create a new ROS
    node that does my vision pipeline, by taking advantage of the
    fact it compiles down to native code, and has a foreign
    function interface designed in from the start. (Or maybe I'm
    dreaming, but my hope is it would be easier and more performant
    than doing the same in Labview!) 4) Did I mention open source
      wdanilo - 5 hours ago
      We would do everything we can to support such use cases. In
      fact we believe in the same things TFortunato. I would like,
      however, to emphasize some things. After the first release,
      connecting to foreign languages on the lowest levels (like
      C++ foreign interface) will be possible but very hackish.
      Connecting using serialized data will be of course very easy.
      Moreover Luna's backend to compile to machine code needs
      still much love and this is our biggest milestone after the
      release. I'm writing it just to ensure that I will not
      "overpromise" anything, however the described use cases are
      very important for us and we will support them as much as we
      can. Again, feel free to help us and contribute :)
    wdanilo - 6 hours ago
    LabVIEW is great, however I'd love to just roughtly outline
    some important differences:- Luna works in a purely functional
    environment, which allows for much more clear and easier to
    understand graphs. Moreover it enables us to run computations
    in parallel automatically (without any input from the user,
    however we will be supporting it very slightly during the first
    OS release).- Luna allows you to convert between textual and
    visual representations - in both ways, always.- Luna is a real
    programming language, so it is not just a pack of predefined
    components. Every component is created out of other components
    (or functions, you name it), so you can always go as deep as
    you want or just connect functions from other languages.- Luna
    allows you to collaborate in many people on one, visual
    canvas.And much more! :)
jlebrech - 6 hours ago
I like to see a language that's a simple subset of ruby for example
but the OO is delegated to a graphical representation (boxes for
classes, arrows for methods etc..)
  wdanilo - 5 hours ago
  I'm afraid Luna is not for you then! However, I strongly doubt
  that visualization of OO concepts will bring you a productive
  environment. I also believe that the combination of functional
  programming and visual paradigm is the way to go here :)
    CyberDildonics - 4 hours ago
    How do you do basic branching and loops?
      wdanilo - 1 hours ago
      Each node is a function, so if a node uses itself, you've got
      recursion (loop). Branching like if is just few edges going
      into a node and the result goes out :)
athenot - 7 hours ago
Very nice! I feel this space is under-developped. Luna reminds me a
lot of Apple's Quartz Composer.Visually representing anything
complex is an immense challenge, but just like code is broken down
into units (files/functions/whatever), a visual tool that can
provide a fractal-like representation of a system would be
awesome.(I'm looking to dig deeper in this space for some pet
  wdanilo - 5 hours ago
  We feel the same way. As you have said, we use abstractions to
  hide complexity in text-based source files, like modules,
  functions etc. We do the same in the visual form. Every node in
  Luna is just a function, so you can "dig inside" it (by double
  clicking it) and see how it is defined. We hide complexity just
  by "collapsing" nodes together :)
svtiger - 4 hours ago
May want to remove from your "About Us" bio: "hates Java Script" --
can't say I disagree, but you might alienate potential converts --
really should inject as much positivity as possible. Any negative
messaging will do nothing but harm.
  wdanilo - 3 hours ago
  I prefer to alienate potential converts than convert
  JavaScripters! Just joking of course. It is hard to hide hate to
  a non-language treated as a super cool language. But you are
  right, I've never thought about it this way. I will change it,
  thank you!
    imhoguy - 3 hours ago
    Have you tried ECMAScript 6+? You could reconsider your hate ;)
      SamUK96 - 1 hours ago
      Shhh you may fool the guy and make him look silly, that's not
      nice! ;)
    rexpop - 3 hours ago
    This was a super-valid position until Sept. 14, 2015, when
    Node.js and io.js combined to establish a stable runtime.  From
    that day forward, JS/ES have been fast to change and stable.
      wdanilo - 2 hours ago
      I don't care what they done in terms of stable runtime. I
      mean, I care, but not in the context of the language itself.
      Language is all - combined! The runtime, syntax, libs,
      everything. I call it "experience" or "feeling". I like the
      idea to treat JS as web assembler, but as a language, JS is
      just a garbage. It will be garbage until you will be able to
      write code, that seems completely valid unless you are super
      JS geek and know that it will break. I will not reconsider my
      hate until you will be able to write
      `['10','10','10','10','10'].map(parseInt)` and get `[10, NaN,
      2, 3, 4]` as a result (just a small example of many). Sorry
      if that puts you off.
        the_cat_kittles - 2 hours ago
        it does, because you are clearly just a snob. its so
        obvious that people are just looking for reasons to hate
        javascript when they post shit like your dumb example.
        though i concede that is a pretty hilarious "wat".
        virtually all the dumb "gotchas" never show up, and the
        real gotchas are learned early, just like other languages.
        you are like a classical musician who thinks every other
        kind of music is not real and easy. the same damn attitude.
        go away
          wdanilo - 1 hours ago
          the_cat_kittles I think you don't get the point of my
          answer or simply my answer was confusing, sorry for that.
          I did not wanted to start a big discussion here and just
          throw a controversial, stupid example. But it very
          clearly shows my main point. The point is that it is
          easily to write a code in Javascript that looks ok, but
          is not. The lack of good type system, legacy of how it
          was implemented on the beginning and everything connected
          to lack of general safety leads to this conclusion.
          chimen - 1 hours ago
          I disliked it myself up until ES6 when it started to be
          "enjoyable" or..should I say less annoying. I program in
          6 languages (it may not be much but enough to draw a
          conclusion from a sample) and I can't say I have one
          without it's list of wtf's.By placing big keywords in
          your bio like "Serial enterpreneur, haskeller,
          programming languages design freak, former senior R&D
          technical director in the biggest film studios in Europe"
          + "hates java script" and keeping your flag up here makes
          it look very unprofessional. Of course, who are we to
          judge if not...your target audience for a "functional
          programming language", visual or not.I remember when RoR
          came out and some [1] "cool dudes" decided to mock
          everything else on the planet. RoR vs php, RoR vs this
          and that. It made me feel sick even though RoR was a big
          step up from everything else back then. It took me 2 - 3
          years to even consider it because of that.[1]

          the_cat_kittles - 1 hours ago
          im pretty you just got called out and are walking it back
          now. thats fine. there are lots of ways of handling
          typing in javascript. i could be reading more into you
          answers than is there, but your apparent proud ignorance
          is, i think, fairly deserving of a little bit of public
          it_learnses - 1 hours ago
          you deserve more public shaming than him. Sure he hates
          javascript and has valid reasons to do so. You, on the
          other hand are so insecure (probably because you've spent
          years using this language), that you have to make
          personal attacks.
          the_cat_kittles - 1 hours ago
          well i can tell this is turning into the bad kind of
          internet commenting. you are calling me insecure- thats a
          personal attack. is it wrong to call someone a snob for
          being snobby?
          reitanqild - 26 minutes ago
          is it wrong to call someone a snob for being snobby?I'm
          not a snob. I grew up on a small farm. I can milk the
          cows and have moved a few tons of grass by hand because
          the barn was to small for machinery.I still strongly
          dislike javascript.Maybe you could respect our right to
          hate or at least strongly dislike a language that1. Is
          being forced upon us as the coolest thing since I don't
          know what2. has quite complicated and IMO dumb ideas
          about equality like2.1.
 change major parts
          of the build system every second week?
          simplify - 1 hours ago
          Sorry dude, I'm going to have to step in; you're being
          too strong in your counter attitude. I've been writing
          and teaching JavaScript professionally for many years,
          and while I don't hate the language, I don't blame those
          who do. After learning and using a statically typed
          language, it becomes absurd how much effort you have to
          put in to debug a JavaScript type error ? a problem that
          is amplified by the language design.What happens when you
          add 1 + undefined? Other dynamic languages make the sane
          choice of throwing an error immediately. JavaScript,
          however, silently gives you back NaN and continues
          chugging along. By the time a "real" error happens,
          you're stack traces away from the cause.What happens when
          you call a function f with one argument when it expects
          two? Other languages would throw immediately. Instead,
          JavaScript silently sweeps in an undefined and continues
          chugging along. Combine that with the other flaw I
          mentioned, and your runtime error will, again, be distant
          from the true cause.There's a reason TypeScript is
          getting insanely popular. It's the only way to code large
          JavaScript projects and stay sane.
          jmull - 28 minutes ago
          (just going' down this rabbit hole with you all)The
          problem I have with static typing (as widely implemented)
          is it solves little problems at the cost of arbitrary
          inflexibility which ends up rippling through a code
          base.And the little problems are better solved in other
          ways. E.g., unit tests and the like catch type errors on
          the way to validating that your code actually does what
          you think it should do.Static typing also isn't useful
          when dealing with data that moves through distributed
          systems. You know, like pretty much all the data. The
          static types you had at compile time are fundamentally
          not related to the data you are processing at run time
          and static types don't equip you to deal with that very
          well. Systems map "wild" incoming data to the internal
          static types but the static type environments strongly
          encourage this to happen early, which is often not the
          right place.
          loup-vaillant - 17 minutes ago
          > The problem I have with static typing (as widely
          implemented)Mainstream type systems are best ignored.  If
          it doesn't have sum types, it's not a good type system.
          If it doesn't have generics, it's not a good type system.
          the_cat_kittles - 1 hours ago
          you are entitled to your opinion, and i appreciate that
          you offer it. and those are legitimate gripes. ive
          written it professionally for many years as well. there
          are alot of nice things about javascript as well, so in
          general i like the language. alot of what i read in the
          initial answer is a guy who wants to show he is a member
          of the cool kids club by hating on javascript. its so
          simplify - 1 hours ago
          Try to be more charitable by seeing it from their point
          of view. Imagine being used to a language that helps you
          be rapidly productive and shields you from a huge catalog
          of mistakes. But one day you're forced to use JavaScript,
          and suddenly you've got nothing. It'd be like driving in
          a doorless jeep with no seatbelts on a high rise highway
          with no guard rails. Sure you can do what you want, and
          even in some nice, clever ways. But there are so many
          ways to hurt yourself, and no natural protections to
          prevent it.To put it another way, it's like throwing a
          frontend developer into the world of C. Suddenly you have
          to be aware of and correctly manage your memory
          explicitly, whereas before you were safely protected from
          having to think about it.Lastly, not everyone can voice
          their opinions so well. Communication is a difficult
          thing, and understanding what you're trying to
          communicate more so. If someone says they hate something,
          it's not always baseless. Instead of jumping to name-
          calling, have more patience in trying to understand why.
          the_cat_kittles - 1 hours ago
          this is a good characterization of what causes people
          confusion, and i think the parallel with people going to
          c from js is totally right. i experienced that myself.
          its a great way to put it and i will probably use it,
          thanks!the second point about being more understanding
          surely applies more to the person proudly hating a
          language with no constructive support about why, and
          little evidence of an effort to overcome the language's
          obstacles. sure, i dont know everything about this
          person, but i take the comment at face value, which seems
          to be the norm. maybe calling them out on it isnt
          helpful? i dont know, but it didn't seem that bad.
          simplify - 43 minutes ago
          If the hate were towards a person, I would completely
          agree with you. But OP is only hating JavaScript-the-
          tool, so I have no contempt towards his opinion.In
          contrast, if OP were hating on JavaScript programmers,
          then your indignation would be completely justified. But
          he's not, and I admit to holding a similar position: I
          hate C++ and prefer to never lay eyes on it again, but I
          have nothing against C++ programmers :) The difference
          between C++ and JS is C++ is less forced upon someone's
          career as the only language to work with.
          danellis - 40 minutes ago
          > its so obvious that people are just looking for reasons
          to hate javascriptWhy would anyone have the motivation to
          do that? Either it has given them reasons to dislike it,
          or it hasn't. Why do you think anyone is predisposed to
          looking for those reasons?
        felipesabino - 55 minutes ago
        > @horse_js: JavaScript. It isn?t meant to be hand-written;
        namuol - 2 hours ago
        Pet-peeve from a Javascript Apologist:The `map(parseInt)`
        example is an obscure strawman that exists solely due to
        historical purposes; it's very difficult to change this
        sort of thing in a language because it would involve one of
        two things:1. Change the API of `parseInt`, break
        everything2. Change the API of `Array::map`, break
        everythingIf you want JS devs to respect your voice you may
        want to attack the more fundamental problems with the
        language, like its lack of type-safety, rather than the
        remnants of its "upbringing".
    d3ckard - 3 hours ago
    Well, it was pretty good ad for me, so maybe reconsider.
      wdanilo - 2 hours ago
      I will reconsider hiding my real feelings. I really feel I
      should not hide them ;)
        Jach - 42 minutes ago
        Man people who would bail out of the entire project just
        because of one of the members' likes or dislikes on his bio
        snippet are petty, please don't optimize for those
        crawfordcomeaux - 41 minutes ago
        Perhaps there's a way to present yourself authentically
        while still holding the door open for the
        Javascripters?Would "Loves dogs, hates Java Script, willing
        to meet you in the middle if you disagree on either" be
    the_cat_kittles - 2 hours ago
    in what way is javascript a non language? i write c, python and
    javascript- i dont see how one is any more of a language than
    another? you are baselessly pretentious
      wdanilo - 2 hours ago
      the_cat_kittles I did not wanted to hurt your feelings. Of
      course it is a language. By saying it is not I just wanted to
      express my strong anty-JS feelings, but they are of course
      very subjective :)
        the_cat_kittles - 1 hours ago
        cool, i didnt want to hurt your feelings, just point out
        that you are a baseless snob
          loup-vaillant - 25 minutes ago
          If I had to guess, I would point out that JavaScript was
          originally hacked out in 10 days, and features a number
          of unforgivable flaws, such as a non-transitive equality
          operator, weird implicit conversions, or just plain
          trying to make sense of quite obviously nonsensical
          operations.To someone used to the mathematical rigour of
          typed functional languages, this is not even worth
          looking at.  As far as I know, the success of JavaScript
          had nothing to do with its qualities as a language.  It
          was timing and market forces. It was there, so people
          used it.Now don't get me wrong, I don't want to disparage
          Brendan Eich. I couln't do a tenth of what he did in 10
          days.  It's just that you get what you pay for.  They
          should have taken the time to fix JavaScript's flaws
          instead of marketing the hell out of it right away. (Or
          should have they? Maybe JavaScript would have failed if
          released a few months later?  Damned market. Damned path