Hacker News new | ask | show | jobs
by RNCTX 2210 days ago
It baffles me that more people have not found and found uses for Node Red. It's one of the coolest utilities that I've stumbled across in the past 5 years.

In a sane world there would be no more Zapiers and IFTTT because of it, at the very least.

3 comments

I've been using Node Red for automation using home assistant (instead of their built-in automation) and generally like it.

I'd like to use it more like IFTTT, but haven't really found any good uses so far since I was never a fan of IFTTT and connecting all my various accounts to one service. Do you have any examples of what you use it for?

I co-founded a disaster relief non-profit in 2017, so in that context, web scraping of sites/services without APIs is an obvious one.

Imagine the day after a hurricane has passed, needing to go find information before everyone else (even before the govt). Well, you can scan Twitter accounts who are posting videos and pics within a certain radius, scan for open local facebook groups with pic and video posts, scan instagram accounts for pics and videos (no api available for instagram), scan for public security camera feeds within a radius, etc. Being able to automate that makes your data gathering infinitely more effective. Doing it manually has an upper limit of what all you can check every hour, particularly when you get busy with other things.

RSS-Bridge is a scraping framework specifically for this purpose, that allows you to quickly write up scraping scripts and serve them as RSS feeds.

Of course scraping is all fine and good, but getting the data you find into a central database is where the magic happens. Even if you automate the scraping, you're going to have to centralize the data and serve your own API to it, or build a simple site to render it all, and have it in a store that allows it to be effectively queried. So how much time would it take to build scrapers for 5-7 different sites, plus database schema and database queries to store the data you get from them, plus a manually constructed API to serve the data from your database back out, plus a UI to render it all? For one dev that's a project of a few days at least, but you don't have a few days. The whole thing, from the standpoint of a rapid-response NGO, is gonna be over in a week when the FEMA and Red Cross trucks get deployed. You need to be able to do all of this quickly.

With Node Red you can build all that in a couple of hours, rather than a couple of days.

Being able to quickly integrate 3rd party API data and 3rd party libs with minimal custom code is a huge benefit too, in the same sort of activity. Node Red has a script that auto-generates nodes for Swagger API definitions, so you don't have to read docs and write integration functions to tie in third party data to a particular set of business logic, you just drag and drop it and pluck out the parts of the response objects you need.

For example, I built a rudimentary UPC scanning capable inventory system, also in about two hours. It went like...

Page with camera access button, quantity box, and submit button -> vanilla JS UPC reading library -> screenshot to base64 on the image for UI rendering -> Kroger product data API to fetch pricing info -> Postgres query for the returned item, if it exists increment by qty, if it does not exist create it with qty.

Now someone can scan donated items with their phone. Sure, it has rudimentary (at best) error handling and you have to explain that to the person doing the scanning, but if you're on a time limit and need something right now it can be done.

How long would it take to write all that by hand? Surely more than 2 hours. Re-creating oauth boilerplate for API authentication alone would probably take a good chunk of the first hour, whereas with Node Red you just fill a form with the headers and it's done.

It's got the AppleScript problem: incredibly close to pro-sumer zero-code development, but in practice still requires some prior tech knowledge.

I'd love to see pre-packaged Node-RED binaries for Mac and Windows. Requiring an install via Terminal / package manager is going to lose a lot of potential users right at the start.

That said, I absolutely adore Node-RED. It's the most powerful and intuitive GUI-based development system I've ever seen, without sacrificing the ability to go down to the metal when it's needed.

I think their biggest oversight was not having all of the core programming functions that we take for granted (loops in particular). They have core nodes for if/else and breaks, but you have to go find a third party implementation for while/for loops.

There's a third party set of nodes called "action flows" that does a pretty good job of implementing for/while loops, but it's not trivial to just install and use, you have to learn its conventions to use it properly.

I gotta think most developers would install it, poke around for awhile, see that there's no obvious way to implement a loop, and throw it away when they don't find one.

Yeah, thats no surprise. IFTTT&Zapier are very simple, accessable, well integrated and work in the cloud. Selfhosted solutions can't even remotly compare on those areas. They have other benefits, but for most people those are not important enough.