7 ms·
Launch HN: Enso (YC S21) – Visual programming and workflow automation tool
Hi HN, We are Wojciech and Sylwia, the co-founders of Enso (https://enso.org https://enso.org). On the tech side, Enso is a visual and textual programming language (you can switch from graph to code and back). On the business side, it's a workflow builder that makes it easy for analysts without a programming background to automate data-driven processes simply by connecting visual components together. Our GUI is like an IDE, but with a graph editor alongside the code. Currently, we’re focused on data analysis—data preparation, blending, and analytics (both in-memory and SQL). You can see a video of how it works here: https://youtu.be/fQvWMoOjmQk https://youtu.be/fQvWMoOjmQk.
We used to be called Luna and were lucky to have a few big threads on HN over the years [1][2][3][4][5]. Eventually we went into heads-down mode to make a production version based on customer and user feedback. Since then, we've drastically improved the product. It is still rough around the edges, but works much better now. We have also made a few tutorials (https://www.youtube.com/channel/UC4oMK7cL1ElfNR_OhS-YQAw https://www.youtube.com/channel/UC4oMK7cL1ElfNR_OhS-YQAw), and
docs (https://enso.org/docs/syntax https://enso.org/docs/syntax). We've added many new libraries, so you can do many more things with it now. Oh, and we changed the name to Enso and got accepted to YC! :)
The problem we address is that data analysts still waste up to half of their time on repetitive manual work that can be automated [6]. To give one example, a company we're working with hires business users who use Excel to define data quality rules. These get manually translated to SQL, then manually translated to Python. This is not only error prone, it’s so slow that it takes them 90 days to introduce a single new rule. There’s 60 days’ worth of overhead in this process—it’s insane!
Years ago I (Wojciech) led the in-house development of visual effects (VFX) tools at a motion picture studio. We made tools like cloud renderers and smoke simulation engines. The artists using these tools did not have any programming background, yet they were designing complex algorithms for forces between particles, light subsurface scattering, things like that. Earlier generations of these tools had hundreds of config options, buttons, etc., for masses of different use cases, but this approach got way too complex and people eventually realized that it falls short when you need to do anything that the vendor did not think of. Nowadays they use node-based software (like the Houdini FX) which lets users draw algorithms as a sequence of data processing steps (these steps are often referred to as “nodes”). Later, when I was working in other industries and encountered the same rats’ nests of complex GUIs for solving data processing problems, I realized that the data analytics/science space was in need of the same breakthrough that we had already gone through in the VFX space.
Most visual programming languages / workflow-builders do not scale well because they don't let users express abstractions. Try to build a complex pipeline and you'll end with an unreadable spaghetti of connections—it's like coding a web app in assembler. Enso is different because we allow you to build abstractions to manage the complexity. As a result, you never have more than 10-20 nodes on the stage in Enso (nodes are hierarchical). You can create custom data types, custom components (functions), catch errors, etc. All this works because under the hood, Enso is a real programming language. However, naive implementations of such systems are super slow. Each component may be built of hundreds, sometimes thousands of lower-level ones. The real trick is making these hierarchical components run fast. For that you need a dedicated compiler and a runtime system, and this is a hard technical space. Our system involves a dedicated JIT compiler based on GraalVM. For details, see https://enso.org/language#compiler https://enso.org/language#compiler. In case this is interesting for you, here is our podcast about how the compiler works under the hood: https://www.youtube.com/watch?v=BibjcUjdkO4 https://www.youtube.com/watch?v=BibjcUjdkO4.
Enso is interactive, meaning that we recompute the relevant parts of graphs as parameters change, which shortens feedback loops dramatically. Like a lot of people on HN, we were inspired by Bret Victor's classic talk on instant feedback: https://www.youtube.com/watch?v=8QiPFmIMxFc https://www.youtube.com/watch?v=8QiPFmIMxFc. We’ve also put a lot of effort into extensibility. You can add Java, JavaScript, R, and Python (soon also Ruby, Scala, Kotlin, Rust, and C) directly into Enso nodes without the need to write any wrappers and with a close-to-zero performance overhead.
Enso is open source. Our compiler code is at https://github.com/enso-org/enso https://github.com/enso-org/enso and our GUI code at https://github.com/enso-org/ide https://github.com/enso-org/ide. Our business model is based on selling domain specific libraries, on-premise installations with enhanced user permission management, and coming soon, a hosted solution called Enso Cloud, which will be our only non-open-source codebase. Since this is Hacker News, I should add that all our alpha releases collect anonymous usage statistics which we use to improve Enso and prepare it for a stable release. Full details about that are always in our release notes (https://github.com/enso-org/ide/releases/latest https://github.com/enso-org/ide/releases/latest).
Dear HN friends, we are super excited to show Enso to you. Please, share with us your thoughts, experiences, ideas and feedback. It is insanely important to us, as our dream is to make Enso the most useful data processing platform in your toolbox! Also, in case you’d like to build your projects on top of Enso, we would love to help you do it – describe what you have in mind here, and we will reach out to you: https://airtable.com/shrsnx2mJuRn0MxIS https://airtable.com/shrsnx2mJuRn0MxIS :)
=== Links ===
[1] Luna: Visual and textual functional programming language - https://news.ycombinator.com/item?id=11144828 https://news.ycombinator.com/item?id=11144828 - Feb 2016 (100 comments)
[2] Luna – Visual and textual functional programming language - https://news.ycombinator.com/item?id=14612680 https://news.ycombinator.com/item?id=14612680 - June 2017 (310 comments)
[3] Luna 1.0 Beta is out - https://news.ycombinator.com/item?id=16163769 https://news.ycombinator.com/item?id=16163769 - Jan 2018 (167 comments)
[4] Luna Studio – Visual and textual functional programming language - https://news.ycombinator.com/item?id=17704989 https://news.ycombinator.com/item?id=17704989 - Aug 2018 (64 comments)
[5] Luna – A WYSIWYG language for data processing - https://news.ycombinator.com/item?id=20182090 https://news.ycombinator.com/item?id=20182090 - June 2019 (86 comments)
[6] https://www.alteryx.com/e-book/idc-study-the-state-of-self-service-data-preparation-and-analysis-using-spreadsheets https://www.alteryx.com/e-book/idc-study-the-state-of-self-s...
- dragosbulugean 5y agoHi Wojciech and Sylwia, congrats on the launch! I followed the previous launches as well. I'm curious, what triggered the rebrand? Is there a story to it?
- wdanilo 5y agoThank you! That's a good question and yes, there is a small story to it. There were several problems with the old name. A lot of people were confusing "Luna" with "Lua", the name is so popular that absolutely good website names are already taken, and also, "Luna" has no logical connection to what we do. On the other hand, the name "Enso" is not similar to any of the popular languages names, we have a beautiful https://enso.org https://enso.org domain, and also, in Zen, ensō (円相, "circular form") is a circle that is hand-drawn in one or two uninhibited brushstrokes to express a moment when the mind is free to let the body create (source: Wikipedia). This is exactly what we want Enso to be – a creative canvas with two perfectly connected parts – the textual and visual one :)
- dustingetz 5y agoCan you express closures? Can I see an example of a visual closure?
- wdanilo 5y agoYes, you can! Enso is a purely functional language with currying, immutable memory, algebraic data types, data-flow errors, type inferencer, JIT compiler, and even a special kind of a monadic type system with auto-lifting (although we do not expose the ability to define custom monads to the users yet) :) You can create closures in multiple ways: 1. The simplest and most visual is by using currying! If you create a node (a visual component) and you do not connect all its required inputs, the output of the node is the curried function (function with partially applied arguments). You can then connect it to other expressions, like `map`. 2. Another way is to use expressions on nodes. You can use the lambda syntax, like `x -> x.noise` to define a lambda. You can also make it shorter by using curried operator sections `(. noise)`, and even shorter by using the Enso's operator precedence as `.noise` and use it for example as `map .noise`. If you want to learn more about Enso syntax, we have a page describing it here: https://enso.org/docs/syntax https://enso.org/docs/syntax . Also, if you go to our language-focused subpage, please check out the video named "Higher order functions". It does not show currying, but it shows the usage of the expressions on the nodes: https://enso.org/language https://enso.org/language Did I answer your question? :)