Spinning off the <thread about Flash>, got me thin...
# linking-together
r
Spinning off the thread about Flash, got me thinking about UX paradigms and animation tools. Flash had a layer based workflow with an interface to a scripting language. Photoshop and After Effects are also layer based in a similar way. I remember when Nuke came out. It was a Node and Wire system as opposed to layers. The interesting thing was that Nuke had a steeper learning curve, but allowed you to do more complex things than you could do with After Effects. There was some hype about Nuke overtaking After Effects, but it never did. They both exist and have found success in different niches. Nuke has become standard for "more industrial" / bigger Hollywood productions, but After Effects dominates the "lower end" consumer motion graphics market. Similarly, I don't think I've ever seen a Node and Wire version of Photoshop. I think there might be a similar dichotomy in the world of audio software, but I'm not nearly as familiar with that industry. Interestingly, there is an increasing interest in Node and Wire systems in the game engine world: Unreal Blueprints, The Unity Bolt system that was recently posted, et... 3D modeling software like Maya, Cinema4d, and Blender have had Node and Wire systems for years (and seem to be increasingly putting more features into those interfaces.) The outlier here is 3D Studio Max, which has historically used a layer based system (Technically it was a modifier stack, but it was a similar idea.) Looking at non-programming products with Node and Wire UI's through a "visual programming" lense have given me an interesting analogy: If you think of "Node and Wire" or "Layer/Stack based" as visual programming language UX, then these products can be analogous to programming languages with similar syntax but with different standard libraries for a domain. Or in the case of "Node" vs. "Layer/Stack", different syntax for the same standard library. This community has a lot of experience with Node and Wire UI's, so I'd like to get your thoughts. Relating this back to the discussion about Flash as an intro to programming tool, and @Ryan King's comment, Is Node and Wire not the best way to introduce programming from a pedagogical perspective? Maybe there is something fundamental about a stack based or "layers" based system that makes it easier for non-programmers to understand? Conversely, What would a Node-and-Wire version of a Vector art program look like? Would it be useful or convivial? Does something like this already exist and I am just not aware of it?
i
Conversely, What would a Node-and-Wire version of a Vector art program look like?
This is, basically, what I'm building: https://ivanish.ca/hest-time-travel/ (Apologies for continually posting the same dang link again and again, but it's the only public-facing writing I've done about this project so far) The thing I'm interested in isn't just putting a node and wire programming interface into a graphics program, but putting a graphics program into a node and wire programming interface.
❤️ 3
👀 1
r
The thing I'm interested in isn't just putting a node and wire programming interface into a graphics program, but putting a graphics program into a node and wire programming interface.
That is in line with what I was referring to when I said, "these products can be analogous to programming languages with similar syntax but with different standard libraries for a domain." I feel like there is a strong connection between the "standard library" for a textual programming language, and the "set of features" of a visual programming language.
Re-reading this post, I realize that I rambled and meandered a lot. It was a bit of idea vomit. My apologies. 😳
@Ivan Reese reading your link. IIRC, Your breadth-first model is also how Hardware Design languages like Verilog and VHDL work (they are essentially modeling current through a bunch of tiny wires to model a chip)
👍 2
r
I admit I don't fully understand the post, but here's some idea vomit in response. Typically I see layers with 2d programs and wires with 3d (although 3rd programs typically use layers as well). Maybe it's simple and easy to do 2d transformations via layers, and I think it's easy to maintain a mental model of 2d space as well. 3d space is a bit harder to reason about, like if I build this staircase, is there enough space above you to not hit your head? And at the same time is it short enough to fit inside the room? Are the steps themselves a good height for climbing? Maybe more information can be held and transformed via nodes and wires in this case? And 2d programs stick with layers because they don't need that level of complexity? 🤷
💡 2
I'm excited to see where Hest goes with the way it merges the graphics with the node programming. I always imagined a nodes and wires vector program would typically have the nodes tacked on the side and produce things similar to p5.js / processing
👍 2
o
I think there might be a similar dichotomy in the world of audio software, but I'm not nearly as familiar with that industry.
For audio you have lots of layer based tools, which is the easiest entry point. Because in audio you manage time. And during time it can happen different audio things, so layers viewing is really expressive. Either it is used to visualize notes during time (pianoroll/MIDI) or the waveform of some recording with parameters curves for audio effects. Some popular software is AbletonLive. But there is also serious uses of node and wire with software like Max/MSP and PureData. Which are harder to learn/use but they allow people to do other kinds of things (generative music, complex audio routing, etc.) Sometime you can mix the two approaches. An example is Max for Live, which embeds Max/MSP in Ableton Live.
👍 1
a
For graphics, at least, I can imagine a hybrid or progressive enhancement approach, where you could have "node and wire layers" coexisting with "plain layers", and composited in the same way. The goal would be to get the best of both worlds, ease of use and advanced capabilities. You might be able to treat "regular layers" as special cases of programmable layers with special UI. Bonus points if the final compositing is also just a node-and-wire program under the hood. I'm very interested in whether there are fundamental difficulties with this. My instinct is always "¿porque no los dos?" but I don't have the experience to know when it's really practical.
💡 1
👍 1
r
Another angle to look at nodes is that they're usually used for non-destructive edits. Most applications combined both destructive and non-destructive edits (i.e., procedural/parametric edits). E.g., Blender is mainly destructive edits for modeling, and procedural edits using nodes for shaders. DAWs use destructive edits for the timeline, and non-destructive edits for applying effects. (If you squint then applying effects to digital channel strip is essentially a really simply node-based system?) I think the node-based vector editor question would also be interesting to apply to raster graphics editors. Why isn't there a node-based version of Lightroom for example?
amiga tick 2
r
I might also add here that I've seen architects learn basic programming via node and wire (Rhino 3D & Grasshopper). Probably core to this is a curiosity and desired outcome in conjunction with the ability ability to download, play with, and reverse engineer someone else's work.
And in a lot a graphics tools you can the results immediately as you make a change which I think is super important for connecting those neurons 🧠
💯 1