N oodle
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Command Subtleties

Comming up with the commands for noodle has been quite a challenge. You have to make use of implicit parameters for usage to flow nicely. But depending on the user’s intentions there can be important yet easily missed distinctions between the sorts of manipulations they may want to make. You have to imagine what sorts of manipulations may be more common and try to prioritize their accessability whilst keeping a consistency to how the commands are used.

Uncharted Territory

Consider the simple idea of moving structure to another place in the multiplex graph. What might that mean exactly? I mean it seams pretty simple until you try to implement it and you actually need to understand what that means. Turns out there are a couple of different meanings this can take. You may for instance want to move a selection from one layer to another layer. Or you may be interested in the structure on multiple layers and moving that. Is the layer you’re moving things to pre-existing or are we creating it fresh? If so do you want to overwrite previously exisiting structure in that layer? Or do you want to combine it? What of the structure you’re coming from? Does it stay after the operation? In other words are you moving or copying? And if you’re moving, is it conditional? Likewise for copying. Do you want to include only connections within the selection or connections from selected doodles to unselected doodles as well? And on what layers are we considering connections?

Suffice it to say there’s an explosion of questions and combinations of what the user might actually want to do. And this doesn’t even cover the other major type of ‘move’ which is to move structure onto newly generated doodles. This goes a little against the concept of noodle because you’re intentionally creating redundancy. But there are good reasons a user way to do this. Perhaps they want to run a structurally transformative algorithm but not affect their original structure.

I had to come up with natural language commands that intuitively correspond to the specific modifications they make to the multiplex graph. I had to consider the space of combinations of options and choose default behaviours with alternative functions remaining accessible.

My Solution to ‘Noodle Language’

I ended up creating tiers:

  • basic
  • normal
  • advanced

The basic commands are simple low level actions you would want to affect on the mulitplex graph. Normal commands have a little more intelligence about them. For instance chain will create doodles on the fly and link to doodles if they already exist. Advanced commands make use of the implicit commands like the root, the selection, layermask etc. It may even behoove me to add some awareness with resepct to command history. There are a lot of features I may want to add. I’m still working on smoothing the low level stuff. With advanced commands you’re generally performing manipulations across layers or using multi-layer structure.

The “re” prefix is used to indicate that structure in the target area will be overwritten. For instance rechain means we’ll remove the structure under the layermask for the doodles involved in the command before chaining them on the current layer. Of course for doodles that don’t exist yet there’s no structure to remove. Similarly, reproject will remove the structure on the target layer before generating the intended structure as if using a regular project command.

Command Name Augmentation

I’d like the commands in noodle to have onomatopaïc variety and/or sound different so you can distinguish them easily kind of like the NATO alphabet. Another consideration is making it fast to use autocomplete. It’s useful for the command to become uniquely “autocomplete-able” after two or three keystrokes. Autocomplete is more important than the sound in the short-term because it’s in how you use it. If I was more interested in making noodle for web or something else, I’d prbably prioritize sound? Idk, in the end the keyboard is the most efficient way to use a program. You can think of commands as combinations of keys. Language is the poetry that acts like the flowy connection between the functions. It’s the narrative that keeps the functions organized and coherent in your mind.