In the early versions of FSM, it could actually handle Morse code button events. Each event was defined as a sequence of actions involving press, release, press timeout (hold), and release timeout. To figure out which event the user did, it would compare the current sequence against a list of known or expected sequences, then fire off a notification any time there was a match.
But Morse code input sequences generally make for a bad UI.
So I simplified the event-handling code quite a bit. Instead of a sequence, each action is a single byte, a simple counter with some extra flags. It allows one or more button presses, and the last one can optionally be held longer. Mid-sequence holds are no longer supported. This makes things a lot simpler and easier and faster, and it reduced the overall code size by about 10%.
… which is why there is now extra room to expand muggle mode if desired.
I could put Morse code input handling back in, but then there wouldn’t be room to improve muggle mode.
Very true.
Usually I look at how passionate people are about what they want, and look at how divided people are on each topic. If a topic is something people don’t really seem to care much about, or at least don’t argue much about, I can generally just pick a sensible default and people will be okay with it. But if people disagree fiercely about something, I should probably make it configurable.
Most of Anduril exists because I’ve spent the past several years listening to people in the community talking and often arguing about what they want. I even did an informal global survey in a variety of flashlight groups to see how those desires differ (or not) around the world. And then I tried to put as much of that as possible into 8 KiB of ROM, preferably without internal conflicts or inconsistencies. And to keep myself entertained, I also added some fun extras.
So that’s what we have now. It’s definitely not perfect, and it’s not complete, but it’s at least a rough approximation of the sum of lots of different people’s views pulling things in lots of different directions.
And it continues to change. It seems like the todo list keeps getting longer, not shorter. I guess the only thing to do is see where it goes…