Gpiozero Flow

(bennuttall.com)

78 points | by benn_88 2 hours ago

8 comments

  • luciana1u 1 hour ago
    the problem is every visual programming tool eventually reaches the point where you need a 'code node' and then everyone just writes code
    • whynotmaybe 7 minutes ago
      Should we call this luciana1u's law?

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

    • bbqbbqbbq 6 minutes ago
      [dead]
  • frumiousirc 2 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.

  • hn5nw0vcqg 11 minutes ago
    Good stuff, keeping it
  • arto 1 hour ago
    FYI, the general paradigm here is named flow-based programming (FBP):

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

    • embedding-shape 1 hour 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 :)

  • codetiger 1 hour 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

    • nottorp 54 minutes ago
      > It can become a complete coding platform.

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

  • amelius 1 hour ago
    Somehow these visual programming tools never seem to get much traction.

    Are there any exceptions?

    • bri3d 4 minutes ago
      Simulink, Labview, Bosch ASCET are all pervasive in control systems engineering, especially in European automotive applications.
    • embedding-shape 1 hour 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.

    • Thaxll 46 minutes 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...

    • xg15 1 hour 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.

    • tormeh 1 hour 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.
      • HeyLaughingBoy 2 minutes 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.

    • Garlef 1 hour ago
      node-RED for PLC programming
      • omani 53 minutes ago
        why would you put controller logic into a non-deterministic environment like node-red?
      • KeplerBoy 1 hour ago
        Is that really used professionally?
    • ViscountPenguin 1 hour ago
      Blender shaders maybe?
  • effnorwood 1 hour ago
    I am totally pressed. What now?
  • adds68 1 hour ago
    Hi ben :)