←back to thread

204 points Towaway69 | 7 comments | | HN request time: 1.476s | source | bottom

Hi There,

Erlang-RED has been my project for the last couple of months and I would love to get some feedback from the HN community.

The idea is to take advantage of Erlangs message passing and low overhead processes to have true concurrency in Node-RED flows. Plus also to bring low-code visual flow-based programming to Erlang.

1. paddy_m ◴[] No.44006855[source]
Nice work! A couple of comments

1. You don't explain what flow based programming is or when it should be used. It looks like it represents some type of data pipeline, but I'm not sure.

2. Who is this repo for? PL enthusiasts, tool builders of type $X?

3. What are operators?

4. I understand that this is supposed to execute on an Erlang cluster/VM... Could you build a JS implementation of the functions so that you could build interactive demos in a browser? The lack of multithreading in JS doesn't rally matter, you just want to be able to send 10 line examples from one function to another.

5. A fun challenge for documenting projects like this, explain it as you would to a non-technical family member. It forces you to define the other things in erlang in a very direct and simple way.

6. Make a video explaining the project.

replies(4): >>44007071 #>>44007075 #>>44007406 #>>44007499 #
2. paddy_m ◴[] No.44007071[source]
Ahh, you didn't create Node-RED editor. That's an external project. I didn't understand this at first, and probably explains a lot of my confusion

https://nodered.org/

replies(1): >>44007187 #
3. adastra22 ◴[] No.44007075[source]
Why not just use Node-Red in that case?
replies(1): >>44007240 #
4. Towaway69 ◴[] No.44007187[source]
No, that much talent I don't have :)

Node-RED has a create frontend that just works and the APIs to the server are clearly defined. So it's relatively easy to swap out the backend - that's what I did.

Erlang has many features that make flow based programming (as implemented by Node-RED) simpler - e.g., message passing builtin and cheap processes and cheap concurrency.

5. Towaway69 ◴[] No.44007240[source]
NodeJS isn't truly concurrent, it is event-based single threaded - fast but not concurrent.

I use Node-RED every day! This is an exercise in applying the concept of flow based programming to another programming language. For me, flow based programming is like object oriented programming or functional programming or procedural ... etc. So the idea is to take the paradigm and apply to Erlang.

Clarification: I've been using everyday Node-RED for last three years and have built many things with it - including my mind map!

6. ◴[] No.44007406[source]
7. Towaway69 ◴[] No.44007499[source]
1. Ah sorry, indeed I forgot to add a link to J. Paul Morrison[1] the inventor of FBP - definitely add that.

2. The target audience is definitely Erlang developers who have not come across FBP before. But I didn't really ask myself that question since FBP is a hard sell at the best of times and selling Erlang with FBP is probably impossible! This is very niche ;)

3. Operators/Clients are hopefully those designing Erlang architectures. At the moment, that is really clear and it's something that has become clear for me in the last couple of months. When I started out, I was doing it as a finger exercise to see how far my Erlang skills would take me. Then I started creating test flows for testing node functionality - that turned into a testsuite[2] that can be used to test Node-RED functionality for correctness. At the moment, this is just a way of introducing the concepts of FBP to a new set of developers - Erlang developers.

4. I did actually create a in-browser-only Node-RED[3] which has some functionality and gives a feel of using Node-RED. There is also a live version of Erlang-RED[4] which is running on the BEAM.

5. Impossible :) To explain Node-RED and/or FBP to anyone outside of the IT - I keep using pipes and water hoses and sprinkles as metaphors!

6. I've made a couple of videos explaining my other visual coding idea[5] - didn't help ;) But yes, in the long term I definitely have to do something about the marketing because FBP does not sell itself...

[1] https://jpaulm.github.io/fbp/index.html

[2] https://github.com/gorenje/erlang-red-flow-testsuite

[3] https://cdn.flowhub.org/ (repo: https://github.com/gorenje/cdn.flowhub.org)

[4] https://ered.fly.dev/node-red

[5] https://flowhub.org