# Noisecraft - anyone heard of it?

**URL:** <https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813>\
**Category:** General\
**Created:** [14 July 2023 09:45 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813 "2023-07-14T09:45:07Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [4 September 2023 20:49 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/41 "2023-09-04T20:49:06Z")

</div>

Hey Steve,  
That is good to know. Never used it.

So Gregorius could register a auto-layout action via a plugin, so we can call it that way. And if he wants to do auto-layout by injecting a message, he can simply do that with a function node (by executing that action via Js code). Or if he wants he can build a custom node that is dedicated to executing actions, e.g. that he can select an action from his config screen perhaps...

@gregorius: Perhaps if you create a new discussion about auto layouting, you might get some more feedback compared to a discussion about Noisecraft 😋

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [4 September 2023 20:56 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/42 "2023-09-04T20:56:45Z")

</div>

I figure I should say thanks here @gregorius. You are really opening up some new ideas and challenging the status-quo. Good for all of us who've been around Node-RED for a long time. 😁

We still might not always agree, but it is healthy to have the debate regardless.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [4 September 2023 21:02 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/43 "2023-09-04T21:02:22Z")

</div>

> [@TotallyInformation](#):
>
> I figure I should say thanks here @gregorius

Thank you all for helping 🙂 And above all, thank you all for making Node-RED such a joy to work with 👍

Much appreciated 😊 and I hope I can continue to be a bit off-the-wall!

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [4 September 2023 22:25 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/44 "2023-09-04T22:25:57Z")

</div>

For those interested, this [flow](https://flowhub.org/f/291e3f0b7f652839) (new node at the top left) does layouting using [elkjs](https://github.com/kieler/elkjs) - just a first attempt and the options need finetuning, but it demonstrates how it could be done ... or how it could be done better 🙂

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [9 September 2023 20:08 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/45 "2023-09-09T20:08:53Z")

</div>

@BartButenaers can you try again please, I think I've found the encoding bug - it seems that the [base64](https://github.com/node-red/node-red-nodes/tree/master/parsers/base64) node decodes to string('binary') and it should be string('utf8') (in my case) - the flows are now coming out properly.

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [9 September 2023 21:09 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/46 "2023-09-09T21:09:06Z")

</div>

@gregorius,  
Thanks for the follow up of my issue!!  
Unfortunately I still have the errors in my function node, when I import the [flow](https://flowhub.org/f/291e3f0b7f652839) from your previous post.  
I see that the escaped characters are already available when I click _"copy flow to clipboard"_ on FlowHub:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/2/f/2f031fd8c8fde59c49d844f0724b17b08609f92d.png)

Or do you need to regenerate all the flows on FlowHub?

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [9 September 2023 21:22 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/47 "2023-09-09T21:22:22Z")

</div>

Perfect! I can reproduce that using Firefox & Opera ... ok, I'll have a look

Cheers!

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [9 September 2023 21:56 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/48 "2023-09-09T21:56:49Z")

</div>

@BartButenaers thanks for the help, should be fixed [with innerText instead of innerHTML](https://github.com/gorenje/cdn.openmindmap.org/commit/7b70dca6fe192903c778d7ef6a732aecd230d290) - doh, bug was 40cm from screen!

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [9 September 2023 22:11 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/49 "2023-09-09T22:11:14Z")

</div>

Nice catch!! The flow now loads without syntax errors. Much better!

But none of the algorithms seem to work for me, i.e. the selected node(s) are not rearranged. Instead I see these errors in the Debug panel: _""Missing return node information""_

And when I use the subflow to obtain elkjs configuration settings, I first get _"timeout"_ messages and tthen again the _""Missing return node information""_ message.

I thought I saw some error passing by in my developer tools, about the elk.js minified file that could not be loaded. But I forgot to make a screenshot, and now I don't get that error anymore.

My time is up for today...

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [10 September 2023 06:56 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/50 "2023-09-10T06:56:23Z")

</div>

The only thing I can think of is that you selected a group of nodes and not a single node. I noticed that through the grouping of groups of nodes - it's a lot of clicking to get to a node. I added a [notification](https://flowhub.org/f/291e3f0b7f652839?ndeid=314340aa366d6beb&v2=0af63ce93176a38ba3c6fcbcfadc88bd8bed44f2&v1=42a4457ea75aa71a63c52d9e9aa313cf360d2639&flid=291e3f0b7f652839) if that should be the case so it's clear that a node wasn't selected.

The timeout message still appears in the debug panel, that's because the link-call (the corresponding link-in never returns) times out when a notification is shown.

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [11 September 2023 05:21 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/51 "2023-09-11T05:21:02Z")

</div>

@gregorius,  
After updating your introspection node, it worked. Not sure if that was the root cause. Perhaps something about my system, or me doing something stupid wrong.  
Anyway you can forget about it!

---

<div class="post-metadata">

**Author:** ![jackcarey](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jackcarey/32/61101_2.png) [@jackcarey](https://discourse.nodered.org/u/jackcarey)\
**Post date:** [22 September 2023 22:26 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/52 "2023-09-22T22:26:52Z")

</div>

Some great discussion here about VPL 🙂 a minority of people deeply understand assembly while the majority of programmers only understand the text-based languages built on top of it. I think the same could be argued for text-based languages and VPL with programmers and non-technical users.

As has been said, it seems like VPL might not reach general purpose any time soon, but a common textual standard for representing applications could be interesting step in the right direction…

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 October 2023 12:33 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/53 "2023-10-27T12:33:54Z")

</div>

Dunno what it is, must be because it's friday - found another two interesting products that should be here:

- [NoFlo](https://github.com/noflo/noflo-ui) Flow-Based Programming for JavaScript
- and from them came [flowhub.io](https://docs.flowhub.io/flowhub-faq/)

both of which I found via [Flow Based Programming](https://jpaulm.github.io/fbp/index.html) by J Paul Morrison - spoiler: we're doing nothing new here!

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [27 October 2023 14:27 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/54 "2023-10-27T14:27:01Z")

</div>

Actually, Node-RED _IS_ at least slightly different and is, in my opinionated opinion anyway 🙂 much easier to use than the other tools. And it is also fully open source which I don't think NoFlo is?

But no, Node-RED was far from being the first flow-based programming tool, that's for sure. But it is arguably one of the most successful. And certainly one of the most approachable ones.

* * *

OK, maybe NoFlow is now open, seems to have moved on a bit. But still a lot more complex than Node-RED - and I think they really need a UX designer to help them!

This is their example for a click counter:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/c/4/c49d743be152072f416a69b0962e2663c3885e72.png)

I think that the equivalent in Node-RED would probably be a _bit_ simpler. 😉

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 October 2023 14:56 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/55 "2023-10-27T14:56:29Z")

</div>

> [@TotallyInformation](#):
>
> I think that the equivalent in Node-RED would probably be a _bit_ simpler. 😉

This is an thought that's being going around my head in the last couple of weeks: every language is extremely flexible and can do _anything_. What all languages require are abstractions and reuse: libraries, functions, methods, objects ... whatever. If a language lets you build up your toolbox of abstractions, then you can do anything with very little effort, because you begin to use those abstractions.

I think Node-RED has nailed that by having subflows, flows and nodes as abstraction layers. We all start out building complex flows, then create subflows to simplify flows and eventually we create nodes to simplify subflows (if we look at it hierarchically). (another example is using function nodes where a switch or change node would do the same ...)

That NoFlo flow that you show may be complex however if it's quickly possible to abstract parts of that flow away, then NoFlo becomes useful. Remember, its difficult to create a _general_ language that is _always_ simple, that's why there are frameworks - abstractions for specific tasks.

Personally I have began creating flows that create flows and nodes - yet another level of abstraction. To prove the point:

```auto
[{"id":"6030f1e36ecbc405","type":"function","z":"73b4aedc.e9602","name":"generate nodes for 3d ticker wall","func":"/* How big should the display be? */\nconst nrCols = msg.nrCols;\nconst nrRows = msg.nrRows;\n\n/*\n Matrial ids: these are taken from using \"Export Nodes\" and reading the json generated.\n*/\nvar materials = [\n [\n \"17350478e877bc09\", // red\n \"e7298bcff0d93b16\", // white\n],\n [\n \"e7298bcff0d93b16\", // white\n \"17350478e877bc09\", // red\n],\n]\n\nvar junctionToAll = {\n \"id\": RED.util.generateId(),\n \"type\": \"junction\",\n \"x\": 0,\n \"y\": 0,\n \"wires\": [\n [\n]\n ]\n}\n\nvar colRouter = {\n \"id\": RED.util.generateId(),\n \"type\": \"switch\",\n \"name\": \"col switch\",\n \"property\": \"col\",\n \"propertyType\": \"msg\",\n \"rules\": Array.from({ length: nrCols }, () => { return { \"t\": \"eq\", \"v\": \"1\", \"vt\": \"num\" }}),\n \"checkall\": \"false\",\n \"repair\": false,\n \"outputs\": nrCols,\n \"x\": 0,\n \"y\": -600,\n \"wires\": Array.from({ length: nrCols }, () => { return []}),\n}\n\n// set correct values\ncolRouter.rules.forEach((i, d) => i.v = (d + 1).toString())\n\nvar rowRouters = [];\nfor ( var y = 0; y < nrCols; y++) {\n var rowRouter = {\n \"id\": RED.util.generateId(),\n \"type\": \"switch\",\n \"name\": \"row switch for col \" + (y+1),\n \"property\": \"row\",\n \"propertyType\": \"msg\",\n \"rules\": Array.from({ length: nrRows }, () => { return { \"t\": \"eq\", \"v\": \"1\", \"vt\": \"num\" }}),\n \"checkall\": \"false\",\n \"repair\": false,\n \"outputs\": nrRows,\n \"x\": 200*y,\n \"y\": -500, \n \"wires\": Array.from({ length: nrRows }, () => { return []})\n }\n\n colRouter.wires[y].push(rowRouter.id)\n rowRouter.rules.forEach((i, d) => i.v = (d + 1).toString())\n rowRouters.push(rowRouter)\n}\n\nvar valueScaler = {\n \"id\": \"WILLBEPREPLACDE\",\n \"type\": \"change\",\n \"name\": \"Set Z scale\",\n \"rules\": [\n {\n \"t\": \"set\",\n \"p\": \"payload\",\n \"pt\": \"msg\",\n \"to\": \"{\\t \\\"type\\\": \\\"scale\\\",\\t \\\"relative\\\": false,\\t \\\"values\\\": {\\t \\\"x\\\":1,\\t \\\"y\\\":1,\\t \\\"z\\\":$$.payload\\t },\\t \\\"pivot\\\": {\\t \\\"x\\\": null,\\t \\\"y\\\": null,\\t \\\"z\\\": null\\t }\\t}\",\n \"tot\": \"jsonata\"\n }\n],\n \"action\": \"\",\n \"property\": \"\",\n \"from\": \"\",\n \"to\": \"\",\n \"reg\": false,\n \"x\": 0,\n \"y\": 0,\n \"wires\": [\n [\n\n]\n ]\n}\n\nvar baseNode = {\n \"id\": \"WILLBEREPLACED\",\n \"type\": \"box\",\n \"scene\": \"c0d1433da002f3c6\",\n \"material\": \"WILLBEREPLACED\",\n \"name_conf_a\": \"WILLBEREPLACED\",\n \"size_conf_n\": 1,\n \"height_conf_n\": \"\",\n \"width_conf_n\": \"\",\n \"depth_conf_n\": \"\",\n \"updatable_conf_b\": false,\n \"sideOrientation_conf_a\": \"1\",\n \"pos_x\": \"WILLBEREPLACED\",\n \"pos_y\": \"WILLBEREPLACD\",\n \"pos_z\": 0,\n \"scale_x\": \"1\",\n \"scale_y\": \"1\",\n \"scale_z\": \"0.25\",\n \"rot_x\": 0,\n \"rot_y\": 0,\n \"rot_z\": 0,\n \"x\": 0,\n \"y\": 0,\n \"wires\": [\n []\n ]\n}\nvar nodes = []\n\nfor (var x = 1; x < (nrCols + 1); x++) {\n for (var y = 1; y < (nrRows + 1); y++) {\n var nde = { ...baseNode };\n nde.x = 180 * x;\n nde.y = (60 * nrRows) + (50 * y);\n nde[\"name_conf_a\"] = \"pixel_\" + x + \"_x_\" + y\n nde.pos_x = x;\n nde.pos_y = y;\n nde.material = materials[x % 2][y % 2]\n nde.id = RED.util.generateId()\n\n var scaler = { ...valueScaler }\n scaler.id = RED.util.generateId()\n scaler.x = 180 * x;\n scaler.y = 50 * y;\n scaler.wires = [[nde.id]]\n\n rowRouters[x-1].wires[y-1].push(scaler.id)\n junctionToAll.wires[0].push(nde.id)\n\n nodes.push(scaler)\n nodes.push(nde)\n }\n}\n\nvar ary = [\n junctionToAll,\n colRouter\n];\n\n// @ts-ignore\nmsg.payload = nodes.concat(ary).concat(rowRouters);\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":394.1426086425781,"y":138.57132053375244,"wires":[["e522af90c2ebba47","b9e6005780e0386f"]]},{"id":"3b6cf5336219131e","type":"inject","z":"73b4aedc.e9602","name":"number of: columns and rows","props":[{"p":"nrCols","v":"11","vt":"num"},{"p":"nrRows","v":"5","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":170.42828369140625,"y":86.71411323547363,"wires":[["6030f1e36ecbc405"]]},{"id":"e522af90c2ebba47","type":"debug","z":"73b4aedc.e9602","name":"debug 6","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710.5711097717285,"y":77.99979782104492,"wires":[]},{"id":"b9e6005780e0386f","type":"json","z":"73b4aedc.e9602","name":"","property":"payload","action":"str","pretty":false,"x":625.8567047119141,"y":175.2856330871582,"wires":[["740780e56a0cf863"]]}]

```

This flow will create a bunch of nodes for creating a 3d ticker wall using [babylonjs](https://flows.nodered.org/node/node-red-contrib-web-babylonjs) in Node-RED. With that flow, I say how many rows and how many columns, and the flow will give me a flows.json that I can import that will create the corresponding Node-RED nodes. It's like using `eval` in JS whereby the string being evaluated was generated by the same codebase doing the `eval`.

If a language can do that, then it's got the abstraction levels/layers just right 😉

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [27 October 2023 15:16 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/56 "2023-10-27T15:16:39Z")

</div>

> [@TotallyInformation](#):
>
> But no, Node-RED was far from being the first flow-based programming tool, that's for sure. But it is arguably one of the most successful.

I'm not sure if my understanding of "flow based language" is the orthodox one.

The first language that I heard described as flow based was SQL:  
"SQL is a flow based language. Think of it as water flowing from a tap, your query sits in the flow and filters out the bits of data you seek. But importantly, you only get a single look at the data; once a particular droplet has flowed past the query, it has gone."

Of course Node-red is also a visual language and much more approachable than SQL but it still only has one chance to look at the data as it passes through.

By this definition AWK and Perl are flow based languages too, but not visual.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [27 October 2023 15:35 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/57 "2023-10-27T15:35:56Z")

</div>

> [@jbudd](#):
>
> SQL is a flow based language

🤣

Great misuse of the term. SQL is a DECLARITIVE language. And that quote is clearly somewhat misleading though I get what it is trying to convey. It ignores great chunks of how SQL works and what it can do.

I believe the term "Flow-Based Language" actually came out of IBM in the 50's?

If looking at text-based languages rather than visual, PowerShell would be a better example since it uses a lot of flow-style concepts.

> [@gregorius](#):
>
> That NoFlo flow that you show may be complex however if it's quickly possible to abstract parts of that flow away, then NoFlo becomes useful

I would not deny that NoFlow is useful to some people and undoubtedly has features that Node-RED doesn't and they may fit better into the way that some people or processes think or work. But I'm an Architect - the asthetics and UX of something so user-focussed are important and I always struggled to get to grips with NoFlow on the few times I've tried to use it in anger (usually some time when I was frustrated with Node-RED!). And it looks so UGLY! 😀

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 October 2023 15:45 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/58 "2023-10-27T15:45:45Z")

</div>

> [@jbudd](#):
>
> I'm not sure if my understanding of "flow based language" is the orthodox one.

Have a read of this [Flow-based Programming](https://jpaulm.github.io/fbp/index.html) which is basically what we're talking about however you're quite right in being confused since the Unix idea of _pipes_ is clearly based on the ideas of FBP as described in that article.

But Yahoo!Pipes was inspired by Unix Pipes which were inspired by Flow Base Programming which in turn inspired Node-RED. So where does the flow come in? Pipes to direct the flow of data?

But in Node-RED the pipes are called wires, so where does the electricity come in?

It's all very confusing, I will stick to pipes ... put that in your pipe and smoke it! 😉

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 October 2023 15:51 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/59 "2023-10-27T15:51:10Z")

</div>

> [@TotallyInformation](#):
>
> And it looks so UGLY!

Which reminds me of another thought, UML. Node-RED will never become a replacement for UML _although_ it has more functionality than UML, i.e. it's far better. The reason for this is: UML is ugly and people who use UML like that ugliness! (sorry if I just offended someone!) Well ok, UML is not ugly but it uses shapes not colours to differentiate between stuff. Node-RED uses colours and not shapes to differentiate hence people who "get" UML, won't understand Node-RED.

I guess UML was invented in the days of monochrome monitors and black and white printers ... which ironically is true!

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [27 October 2023 15:57 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/60 "2023-10-27T15:57:29Z")

</div>

> [@gregorius](#):
>
> Yahoo!Pipes

Oh, and I miss that - the only thing ever from Yahoo! that I miss!

It was THE tool for manipulating RSS/ATOM feeds. Nothing in Node-RED can do that right now I'm afraid and I've never managed to reproduce the calculated feeds I had in it in Node-RED.

> [@gregorius](#):
>
> Which reminds me of another thought, UML

Oh dear, you are determined to trigger me on a Friday afternoon aren't you!! Because now I have to mention ArchiMate modelling - :sigh: - talk about ugly!

> [@gregorius](#):
>
> it uses shapes not colours to differentiate between stuff. Node-RED uses colours and not shapes to differentiate hence people who "get" UML, won't understand Node-RED.

Never really thought of it that way - interesting. Of course, if you are capable of understaning UML, you probably don't need a visual programming tool! 🤣

[Previous page](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813.md?page=2)

[Next page](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813.md?page=4)
