You are viewing archived messages.
Go here to search the history.

Mariano Guerra 2021-03-01 10:48:55

Really complete "nodes and wires" app builder: https://www.noodl.net/

J. Ryan Stinnett 2021-03-01 12:57:37

I'm always curious how nodes and wires UIs choose to deal with control flow like looping... Looks like this one treats it as just another node: https://docs.noodl.net/#/nodes/data/for-each

J. Ryan Stinnett 2021-03-01 13:01:32

It would be nice to see a visual gallery similar to Ivan Reese's codex (https://github.com/ivanreese/visual-programming-codex) that focuses specifically on comparing how concepts like looping are handled in each VPL.

Ivan Reese 2021-03-01 17:54:28

Hey, this one is neat. It has a few UI conventions (like the nodes sort of snapping together like Scratch blocks) that I don't recall having seen in a node language before.

Ivan Reese 2021-03-01 17:56:02

Also, J. Ryan Stinnett — Totally agreed on looping constructs being an especially interesting point of comparison. Would love to see someone (else, hah) do that analysis.

Bonus round: I just went to add this to the codex and.. well, look who it is! Thanks.

J. Ryan Stinnett 2021-03-01 17:58:10

Haha, I have my own "new things to eventually do something with" queue over at https://github.com/malleable-systems/malleable.systems/issues, so I'm already in the mindset of adding things to their proper queue (in this case, your codex) when I hear about them. 🙂

nicolas decoster 2021-03-01 20:30:07

I also like the idea of mixing nodes'n wires with snapping blocks à la Scratch, especially for document structure (DOM) like it is done here in Noodle, and like Mariano has done with his HTML learning with blocks some time ago.

Chris Granger 2021-03-01 21:00:38

the combination of legos and wires was an important part of our design for an efficient node editor before we decided to go in a different direction all together:

📷 image.png

Chris Granger 2021-03-01 21:04:59

some other variants that might be of interest:

📷 image.png

nicolas decoster 2021-03-01 21:41:42

Very interesting mix!

I like the mix of vertical and horizontal snapping, it can bring some new expressiveness.

I was wondering about the use of tiling for classical sequencing and wires for control flow or data "stream". When I used Max/MSP it was great for audio etc., but very bad for executing a series of operations, the wires add clutter. And I thought that tiling boxes might be the solution.

nicolas decoster 2021-03-01 21:44:11

Too bad you didn't choose that way Chris Granger, I really like it!

Chris Granger 2021-03-01 21:45:31

yeah, after a bunch of experiments and trying to understand what was actually going on fundamentally we arrived at some useful principles to work from. If you compare the top left to the bottom right, there’s a huge difference in visual clutter.

Chris Granger 2021-03-01 21:47:04

One of the big things we realized about most node/wire systems is that it’s actually pretty hard to separate the “main idea” from all the details. This vertical/horizontal split was our attempt at making that be inherent to the structure of the diagram you ended up with. The “what” flows top to bottom and the details flow left to right. This means if you read just the “spine” of the diagram, you’ve got a good idea of what’s going on.

Chris Granger 2021-03-01 21:49:25

Another thing was making sure that the locuses of action were clear and easily accessed rather than being effectively spread everywhere (which makes a keyboard-heavy flow difficult to imagine)

📷 image.png

Chris Granger 2021-03-01 21:54:52

From my notes on it:

The “puzzle box” is a bit like a structure of spreadsheet cells, except rather than an infinite grid, only cells directly connected to an existing cell are available. We differentiate the flow of power and flow of values, by placing slots for the former on the vertical axis, while data slots go on the horizontal axis. By default, cells snap into each other like a block-based editor, but can be pulled apart, revealing a wire when more space is necessary or flow is better demonstrated. Cells usually contain textual “formulas,” which preserves the density of text and makes it easy to edit complex expressions with few actions. They can also have complex domain representations (e.g. the truth table above) that are plugged into and used directly. Using this feels more like excel than any of the previous editors mentioned. There are clear places for action - empty or existing cells - that you navigate to and start typing in. 

The puzzle box takes the best parts of text, nodes, and blocks, while offsetting the downsides of each: * We leverage the density and familiarity of text in each cell * By using wires for branching and complex control, we can maintain the ability to easily understand the flow of the behavior (offsetting the 1D of text). Splitting control out vertically, allows you to quickly “read the spine” and get the main idea of what’s going to happen. * With the connected cells, we get the structure of block-based editors and can make it clear where actions can be performed. This also enables a primarily locate and act flow. * Rather than pure text, we can progressively disclose the internals of the cells, including showing slots only when they’re part of the flow

Ivan Reese 2021-03-01 22:07:28

By default, cells snap into each other like a block-based editor, but can be pulled apart, revealing a wire

Smart.

nicolas decoster 2021-03-01 22:09:04

I really like all this. Especially the fact that there are several ways to visually assemble and organize things, that are not necessarily exclusive (snapped boxes can be drag and become nodes'n wires) but this gives a palette of representations that you can pick from to make your code the more expressive. It is really in that kind of direction I want to work on!

Chris Granger 2021-03-01 22:10:25

Yeah, go for it! This was the best we could come up with for this direction after a good bit of trying. I still believe it’d make a badass node editor. 🙂

Ivan Reese 2021-03-01 22:11:22

I still believe it’d make a badass node editor.

Well someone here's gotta do it!

Chris Granger 2021-03-01 22:13:14

Another thing we teased apart is that there’s a difference between the micro and macro flows of using such an editor and we found almost every system seemed to treat them the same, which is a significant mistake. These node assemblies are all about the micro flow, but how you view/navigate/locate/act on the whole system is something else entirely. It actually has a lot of parallels with micro/macro in RTS games.

Ivan Reese 2021-03-01 22:18:45

I would push back on "node assemblies are all about the micro flow" — your nodes themselves contain things, and a lot of the friction with existing VPLs comes down to (IMO) a misalignment between what's happening within each node vs. what's happening around it. I'd propose: "node assemblies are all about medium-scale flow". That is to say, I agree with your point so much that I'd go even further: there are at least 3 distinct scales of concern, and only one of which (the middle one) is attended to by current node-wire tools.

nicolas decoster 2021-03-01 22:19:48

It was on my plan to work on this kind of stuff, i.e. mixing visual representations. I have been busy with some other stuff, but this discussion and your screenshots made me want to work on it sooner!

Chris Granger 2021-03-01 22:20:50

a misalignment between what’s happening within each node vs. what’s happening around itwe had a fairly nice way of unifying nodes and assemblies, such that that was less of a distinction (it also resolved several other problems these systems have, like dealing with state transition rather than dataflow)

Chris Granger 2021-03-01 22:24:48

More on the fun/cool side, inspired by Ivan Reese’s lunchbox sessions, we wanted to make it so that anything can be replaced with it’s representation, but retain its editing semantics. This means, for example, you could replace the wires with pipes and nodes with engine parts, but connecting them still meant semantically connecting them under the covers. 🙂 There’s a little bit of that in the images above where the picture of mario jumping is the representation of the jump node.

nicolas decoster 2021-03-01 22:30:35

It is another idea I want to dig: having the ability to change the representation of "programming semantic", again to choose the one that is the more expressive.

nicolas decoster 2021-03-01 22:31:47

Like in your examples for if/then where there are several ways to represent it.

Joshua Horowitz 2021-03-03 06:49:04

Chris Granger: Your wires-and-snapping designs are great, and I'm glad they've sparked so much good discussion. But I want to call attention to something interesting about how Noodl in particular is using snapping...

It looks like Noodl uses snapping in one place: building layout trees for their views. Here's an example:

Joshua Horowitz 2021-03-03 06:58:40

This is interesting to me, because a layout tree is a fundamentally different visual formalism from a nodes-and-wires graph. (I mean, I guess you could build a hierarchical layout with nodes-and-wires, but it wouldn't make many people happy.) But it looks like Noodl does a good job of fluidly integrating the nodes-and-wires formalism with a tree formalism.

It reads well:

  • "Here is the part of the tree that triggers state changes when clicked!"
  • "Here are the parts of the tree that change appearance when the state changes!"

Arguably, it would be even better if the "States" node could connect directly to the actual components in the live preview, rather than just the abstract representations thereof. This would give it a look kind of like that https://www.youtube.com/watch?v=Gy5m091fOTU, where a node graph connects abstract nodes to concrete objects:

Joshua Horowitz 2021-03-03 07:00:33

In summary: I'm excited about replacing noodles in node-graph systems with structured snapping, as Chris Granger's designs show, AND I'm excited about extending node-graph systems to include different visual formalisms, as I believe Noodl is doing!

Jack Rusher 2021-03-02 07:51:50

MIT Press has opened access to the archive of journals they publish. There's loads of stuff here that would be of interest to this community.

https://www.mitpressjournals.org/action/showPublications

Mariano Guerra 2021-03-02 11:36:27

If anyone knows of a journal that's FoC relevant please mention it here!

Jack Rusher 2021-03-02 15:41:31

Mariano Guerra I'm doing a gradual tweet thread of art-related articles, which also contain things like artists designing their own programming languages to make art and music in the 1960s, data representations for automatic caricature generation, and so on. https://twitter.com/jackrusher/status/1366666448551120897?s=20

🐦 ⸘Jack Rusher‽: "I inquire into the existence of an essential connection between art and science. I believe that this connection can be found […] among scholars motivated by a common desire: to detect a world beyond appearances, a world to be achieved by solitary effort" https://www.mitpressjournals.org/doi/pdfplus/10.1162/leon.2008.41.5.428 https://twitter.com/monoskop/status/1366369514443722752

Mariano Guerra 2021-03-02 11:42:27
Christopher Galtenberg 2021-03-02 18:21:12
Xavier 2021-03-02 18:37:38

Looks interesting, too bad it's framed in terms of "making an app" as opposed to, say, "making a document". One great aspect of spreadsheets is that there's no difference between the user and the developer

Xavier 2021-03-02 18:38:31

If I make an app, I have control and the user can only do what I decide is possible. If I make a document, the user can do as they please, adapting it to their own needs

Srini Kadamati 2021-03-02 20:22:53

ha, well MSFT doesn’t want anyone (including other teams) I bet competing with Word 😉

Srini Kadamati 2021-03-02 20:23:42

from a go-to-market standpoint, low code is often most interestingly framed as a way to enable marketings / sales / etc non-coders do more dynamic things but still in app / engineering / website-land

Srini Kadamati 2021-03-02 20:24:06

for FoC idealists like us, thats ..less than ideal but that’s the business go to market strategy around low / no code

William Taysom 2021-03-03 13:58:46

Dear spreadsheet loving friends, behold the beauty and horror of CGP Grey "running" a spreadsheet by combining Pages with Keyboard Maestro to implement the algorithm for apportioning United States House seats by population. https://www.youtube.com/watch?v=6JN4RI7nkes

Max Krieger 2021-03-04 00:34:15

Flutter is starting to look real nice as the host environment for visual programming environment experiments, check out iRobot's block based tool, implemented in flutter https://edu.irobot.com/the-latest/building-a-coding-experience-for-all

Joshua Horowitz 2021-03-04 02:18:42

As someone who doesn't know much about Flutter, I'm curious what about it looks appealing to you as a "host environment for visual programming environment experiments".

The article you linked to includes three desiderata that Flutter supposedly fulfills (screenshotted below). But other than the cross-platform stuff – which matters to some, but certainly not all, programming experiments – they seem like criteria Typescript + HTML5 would accommodate. Or not, if there are ways Flutter goes beyond that I don't know about! But I haven't seen a specific articulation of how that might be.

(A natural question this is raising for me is, what WOULD I want out of a host environment? That's a good, separate, question.)

Jack Rusher 2021-03-04 08:35:48

Joshua Horowitz Native app on multiple platforms (with wasm in the browser) plus an extremely sophisticated https://skia.org/user/modules/canvaskit. It's a great reduction of the barrier to making very performant cross-platform GUIs, at least in theory.

Max Krieger 2021-03-06 23:15:22

Joshua Horowitz agreeing with Jack Rusher - you can expect it to be faster with relatively similar primitives as react+TS, minus the DOM weirdness. Its far from perfect though - JSX remains more ergonomic than their weird constructor composition, packages kinda suck, and text support is very strange (since it's all virtual)

Max Krieger 2021-03-06 23:16:52

Jonathan Edwards has a post from a year ago on deciding what language to host subtext in, flutter was an option but pretty immature at that point. I've heard re/frame + cljs is the most ergonomic way to iterate on an idea, haven't learned it though, maybe Jack has thoughts

Max Krieger 2021-03-06 23:17:59

Honestly for me, it's layout and endless CSS pain that draws me into other stacks. GToolkit was another one on my radar for this reason

Jonathan Edwards 2021-03-06 23:47:10

Random opinions: Flutter is super appealing if you don’t want to spend years learning the insanity of browser dev. That’s why I originally started with Dart, but ended up having to bite the bullet. Also if you need silky animation (React Native maybe is OK too, don’t know). If you want to develop a UI programming environment, Flutter has a much simpler model to translate into. But browser dev has like 100x community size, which matters a lot.

Christopher Galtenberg 2021-03-06 17:13:57

A speculative post about the idea of "data coalitions" – essentially unions representing collectives of user types with particular preferences for data governance https://www.noemamag.com/a-view-of-the-future-of-our-data

Christopher Galtenberg 2021-03-06 17:14:36
Andrew F 2021-03-06 17:31:10

If the person is unidentified, how does CVS find their coalition to negotiate with it?

Christopher Galtenberg 2021-03-06 19:59:37

Yeah, um, all of this is unworkable 😄 But gets the pot stirring

Max Krieger 🕰️ 2021-01-13 20:07:44

Sonification of eclipse's internals :o https://github.com/laffra/cacophonia

Max Krieger 2021-03-06 23:19:48

@Chris Laffra one of them I really, really admired recently was https://justine.lol/blinkenlights/index.html . Kinda a gdb TUI but way more fun.

Watching this program execute (c / ctrl-c) at adjustable speed (ctrl-t / alt-t) it becomes clearer that the process of printing an image is basically a pipeline that goes: IDCT → Y′CbCr to RGB → decimate → sharpen → block render.

Kartik Agaram 2021-03-07 00:40:09
Kartik Agaram 2021-03-07 00:42:57

Smalltalk VMs are like "isolated controlled environments, little heated glass domes connected by long, cold crawlways, waiting out the long antarctic winter. And each dome is a model Earth."

Kartik Agaram 2021-03-07 00:49:45

"Because all messages must be sent to a left operand, unary minus didn't exist. I complained and it appeared on Wednesday." 😄

Jean-Louis Villecroze 2021-03-07 04:05:32

https://programaker.com (via hackernews)

Kartik Agaram 2021-03-07 04:26:30

https://news.ycombinator.com/item?id=26369893

Erlang in backend, Node in frontend: https://gitlab.com/programaker-project/programaker-core/-/raw/develop/docs/architecture-overview.png

1.25MB package-json.lock on the Node side of things 😕 I'm not sure how to assess dependency fragility in the Erlang eco-system. But all-in-all, seems fairly reasonable engineering for the current state of the world.

Mariano Guerra 2021-03-07 11:31:21

The only thing that bitrots in Erlang is new versions deprecating things

Mariano Guerra 2021-03-07 11:31:42

at least that's my experience in my years of doing Erlang

Mariano Guerra 2021-03-07 11:34:09

the standard library has many things so you don't end up with so many dependencies (11 dependencies for instadeq's backend)

bmitc 2021-03-07 07:15:00

“Nodes is your thinking space for exploring ideas with code.”

“What if programming was about ideas, not semicolons? Compose, abstract, generalise. Start from top down or bottom up and refine as you go. With Nodes, programming feels like sketching on a canvas. Zoom in and out of problems, experiment on the side and easily re-use parts of other projects.”

“Nodes is created by http://variable.io, a generative design and data visualisation studio.”

https://nodes.io

https://news.ycombinator.com/item?id=26371818

Ivan Reese 2021-03-07 18:50:17

This is @Marcin Ignac’s project.

Happy to see it get some love on HN — when I checked, that discussion thread was more... readable... than what you normally expect from HN.

On Nodes — I'm so happy to see a modern VPL with a rigorous design treatment and lots of effort and attention. To me, this project is more interesting than the sea of vapid node tools trying to cash in on "low code" hype. Power to the Nodes team!