I'm trying to wrap my head around how to leverage Rule Machine. It's well designed, provides elegant control structures, and is hamstrung by a terrible user interface. It could be amazing, but instead every time I try to create or edit rules I find myself on the edge of rampaging around my house breaking things.
First, the programming environment is cluttered, stateful, full of context switches, and challenging mental mappings. The visual display of the code is needlessly confusing:
IF (Treadmill (off) is on FALSE) Delay 0:20:00
Off: Treadmill
instead of
IF (Treadmill is ON) [off => FALSE]
Delay 0:20:00
Off: Treadmill
The editing environment adds additional befuddlement - we get drop-downs below the code asking us to mutate the environment ("insert action before: [one thing] [another thing] [a third thing]"). In a modern browser, that's unnecessary - it could even be done with nothing more than better HTML/CSS, it wouldn't even require additional javascript. (But the underlying visual elements aren't well structured; many of the text elements aren't wrapped in their own <div> or <span> tags, so I can't even define my own CSS and attempt to clean it up myself).
Consider the below representation instead, where clicking a "+" adds an element in place, and clicking the "x" removes an existing one. (I'm using text, so my ability to format is a bit limited, please use your imagination - I'd probably try making these tiny "add" and "remove", or graphical elements, to reduce visual clutter):
+
IF ( [false] x
+
Treadmill is ON [off] x +
)
{
+
Delay 0:20:00 x +
Off: Treadmill x +
}
ELSE +
{+}
I believe this would be significantly more usable. With a little javascript, the changes could be defined in place. (BTW it's easy enough to always display an "else" clause, and then under the table ignore it if there's no code in the code block. This makes adding a conditional both easier and less confusing.)
Thoughts?