Gpiozero Flow
115 points by benn_88 11 hours ago | 34 comments

luciana1u 10 hours ago
the problem is every visual programming tool eventually reaches the point where you need a 'code node' and then everyone just writes code
reply
seemaze 6 hours ago
It's a good onramp to building a programmatic intuition, but you're correct that it very quickly gets left behind once the 'magic' is understood. If you do a quick image search for , e.g. Rhino3D Grasshopper, Blender Geometry Nodes, Vectorworks Marionette, Autodesk Dynamo, ComfyUI, you'll quickly see the implementations of the real world procedures users are crafting become unwieldy rather fast.

I can't tell you why an 80 column wall of characters is easier to reason about than a visual graph, but I assume it has something to do with the reason Mitch Hedberg does not like arrows[0]; look, a function.. let's got that way.

[0] https://youtu.be/EI1DBRz3JLk?si=DCLNkbeCGWyw-Ceu

reply
mbreese 6 hours ago
I don't think this is for people that would just write code. Maybe you need that pressure release to get some edge cases, but for the most part, if you're using a visual programming tool, you are trying to avoid the code part for some reason.

So, I don't see that limit as something that's all that bad.

reply
whynotmaybe 9 hours ago
Should we call this luciana1u's law?

If BizTalk has it, why shouldn't my visual programming tool have it?

reply
rickdeckard 7 hours ago
and then the evolution of the whole tool slows down as the answer for most limitations in native functions becomes "just use the 'code node' and write the function there" :)
reply
m463 6 hours ago
as someone who writes code, examples 2/3 are non-intuitive

(maybe more context would help)

reply
bbqbbqbbq 9 hours ago
[dead]
reply
faangguyindia 8 hours ago
I had a similar thought while building a visual workout programming system for bodybuilding.

One thing I keep running into is that workout programs are essentially state machines progression rules, deloads, conditional branches, different exercise substitutions, autoregulation etc...

That made me wonder whether a visual programming model would make these systems more approachable. I'm still unconvinced, though. Unlike automation workflows where the graph itself reveals the logic, I'm not sure what the right visual abstraction is for training programs without making them even more overwhelming.

So far i've a workout programming language and bunch of sample programs and an app which can help you execute these workout plans, all free ofc: https://symbiote-studio.macrocodex.app/?builtin=gzclp

reply
cwmoore 8 hours ago
I often enjoy walks in the woods, far away from the systems for supporting tonemaxxers. It is good for my health but even but better for my mind.
reply
joebates 8 hours ago
I wonder if apps like Boostcamp implement their plans in a language like this
reply
frumiousirc 11 hours ago
A key feature about data-flow programming that seems too often missed is that it is (or can be) hierarchical.

Define a subgraph of atomic nodes as itself a node with its ports formed from as-yet unconnected ports of its atomic constituents. Compose yet higher subgraphs of subgraphs and atomic nodes. Package all this in some way.

This is directly analogous to syntactic programming where functions aggregate other function calls and all that packaged into a library with an API.

reply
codetiger 10 hours ago
This is amazing work. I've used GPIOZero in my RPi projects before. In the future, you can introduce conditional operators in the flow. It can become a complete coding platform.

See JSONLogic UI for similar implementation: https://github.com/GoPlasmatic/datalogic-rs Disclaimer: I am the maintainer of the datalogic-rs project

reply
nottorp 9 hours ago
> It can become a complete coding platform.

... everything evolves until it can read mail^H^H^H becomes Turing complete?

reply
arto 10 hours ago
FYI, the general paradigm here is named flow-based programming (FBP):

https://github.com/flux-doctrine/awesome-fbp

reply
embedding-shape 10 hours ago
Technically, it seems to have three different paradigms that it exposes:

> Procedural/Event-based/Declarative - These three snippets achieve the same thing in different ways. One repeatedly asks the button if it is pressed; one tells the button to control the LED; and one tells the LED to follow the button's state.

Much of the article seems to focus on the latter "Declarative" way, which they created a Node-RED-like UI for, which is indeed flow-based. But other approaches seemingly can be used too :)

reply
amelius 10 hours ago
Somehow these visual programming tools never seem to get much traction.

Are there any exceptions?

reply
embedding-shape 10 hours ago
Houdini (VFX/3D tool), virtually unchallenged in some of its domains, it's basically visual programming. Very basic what you'd do inside of Houdini when working with it (with screenshots): https://www.sidefx.com/docs/houdini/basics/intro.html

Unreal Engine also have "Blueprints" for game logic that remains fairly popular, maybe not always as the underlying systems, but at least as a control surface for game designers, like a "API" kind of.

If you're curious how out of control and wacky these sort of graphs can get, https://blueprintsfromhell.tumblr.com/ has a bunch of fun examples.

reply
Thaxll 9 hours ago
The video game industry is built arround that, game engines use that model all the time as gameplay scripting.

https://dev.epicgames.com/documentation/unreal-engine/bluepr...

reply
bri3d 9 hours ago
Simulink, Labview, Bosch ASCET are all pervasive in control systems engineering, especially in European automotive applications.
reply
auxym 4 hours ago
I get the feeling that labview was very big in the 00s but has been losing a lot of steam in the last 10 years or so, maybe because of failure to modernize. Labview today feels and looks like a 90s app, contrary to eg. modern Simulink.

FWIW I work in Simulink quite a bit, and "code blocks" (matlab function / matlab system) tend be used quite liberally in my models. Having the visual presentation of data flow is quite nice though for the kinds of things Simulink is used for, mostly physical modeling of electrical or mechanical systems.

reply
chasd00 8 hours ago
iirc Starship or Falcon 9 control is Labview.
reply
xg15 10 hours ago
I don't know, "node-based" interfaces as a concept seem to have made inroads into quite a number of (specialized) fields, e.g. image processing or movie postproduction.

My takeaway is that simply visualizing the AST of a procedural language doesn't do much in reducing the complexity and just makes it harder to read or edit long programs.

In contrast, visualizing data flow graphs can have real utility.

Also, the general question is who is the target audience: It seems pretty obvious to me that programmers who live and breathe code wouldn't be very enthusiastic about visual programming. But that might be different for other professions that don't have that kind of coding expertise.

Also, a lot of programming skill is about keeping the logical abstractions and runtime state in your head that your code will create - not so much reading what is on the screen. That's far easier if you have written the code yourself than if you have to get familiar with existing code.

Thanks to agents, the second case is becoming the dominating situation now, so clever visualizations that help you make sense of existing code and its runtime state might be in demand in the future.

reply
tormeh 10 hours ago
I think PLCs are programmed using a mix of text and visuals. Or at least that's what I remember from uni. I'm not entirely sure why that is. I suppose it makes it a lot more obvious to your coworkers and management when you make spaghetti code, which I suppose can create pressure to not make a total mess of things.
reply
HeyLaughingBoy 9 hours ago
Before PLCs were popular, technicians built automation systems using various types of relays. The documentation was done using "ladder diagrams" and the procedure was known as "ladder logic." So the first PLCs tried to take advantage of this knowledge by being programmed the same way since it was already familiar.

Later systems added to this by being programmable with structured text.

The first time I came across a system that was programmed entirely with relays I was completely blown away by what was possible. And also by how heavy, noisy and power-hungry it was for a portable device.

reply
ViscountPenguin 10 hours ago
Blender shaders maybe?
reply
grufkork 7 hours ago
Touchdesigner, VVVV, (Notch?) too. The big benefit here (besides dataflow programming working better for more pipeline-like programs) is that it's always runtime. This is a pretty big selling point for design where quick iteration and tweaking is important
reply
bliteben 8 hours ago
yeah Visual Basic 6, kind of a different thing but clicking on things to select the method etc is very similar
reply
Garlef 10 hours ago
node-RED for PLC programming
reply
KeplerBoy 10 hours ago
Is that really used professionally?
reply
omani 9 hours ago
why would you put controller logic into a non-deterministic environment like node-red?
reply
KaiserPro 8 hours ago
scratch, thats super popular, but aimed at kids.
reply
myself248 7 hours ago
GNU Radio?
reply
hn5nw0vcqg 9 hours ago
Good stuff, keeping it
reply
adds68 10 hours ago
Hi ben :)
reply
effnorwood 10 hours ago
I am totally pressed. What now?
reply