|Perl: the Markov chain saw|
OT: Stupid User Interfacesby afoken (Canon)
|on May 30, 2017 at 23:29 UTC||Need Help??|
Just a little rant ...
I came home quite late, after a long day. Some excavator or a poor guy with a spade has cut a major power line. The power network company has fixed that, at least provisionally, so power was already back when I came home. What could be wrong?
The microwave oven happily told me it was 7:15 am. Oh well. Press the clock button. Oops, that was the timer, better press the other button with a very similar clock symbol. "12h" on the display. No, I'm in Europe, I want 24 h. Turn the wheel button. Wrong. Now I'm adjusting hours in the 12 h system. Press the clock button a few more times, jumping past minutes, back to "12h", then to "24h", then again minutes. Oops. Well, give the clock button a few more cycles. "24h". Yes! Now, rotate the wheel button. "1:", "2:", "3:", ..., "11:". Ok, turn it in reverse: "10:", "9:", ... "23:". OK. Push the wheel button. "BEEEP! Stupid user!". Oops. Push the clock button again. I wonder how many push cycles are left. Adjust the minutes. ":00", ":01", ... ":23". Push the wheel - no "BEEEP!" - ok, I'm tired. Press the clock button once more. Done.
Home office ISDN system phone: It displays its name and its firmware version. WTF? Maybe power did not come back cleanly? Unplug the combined ISDN and power jack, and fiddle it back in. Nope, does not help. Load the configuration program, adjust a minor setting, write back the configuration, to clean up NVRAM / EEPROM. Also does not help. Maybe the PBX lost its clock? Sure it did. It has no RTC, or at least no battery backup. But thanks to ISDN, it will adjust its clock when I call some external number and establish a connection with someone else. So I called a free hotline, and waited for their answering system. Yepp, it talks to me. Hung up. The PBX should now have adjusted its clock. But wait: The stupid phone still shows name and version, not date and time. Well, let's flash the firmware. It's just a few more mouse clicks. "Firmware is already at 2.3e. Do you still want to update the firmware?" Sure. About a minute later, the phone goes through a little disco mode, slowly flashing almost all LEDs, then comes back with name and version, and is still stuck there. Grrrrrrr! Where is my password for the support forum? It must be something simple. RTFM before posting nonsense. Yeah, right: That stupid phone refuses to switch to date and time until it has fetched the current date and time from the PBX. And the PBX does not have current date and time, despide having made a successful external call. Did some internal calls from and to the office phone. No help. So, dig through the three manuals of the PBX, and yes, there is a way to adjust the PBX's clock manually. Just dial a magic 20+ digit code, put in date and time at the right positions, and it will adjust its clock. So, let's start. Error at the fifth digit or so, PBX beeps "STUPID USER" and refuses any more configuration until I hang up. But hey, I've a smart office phone, I'll enter the magic code before picking up the handset, as I can correct errors there. Well, nice idea, but the phone dials dumb, whereas the PBX expects some delays in the code. Again, it beeps "STUPID USER" and expects me to hang up. And lo and behold, somehow the phone has managed to get date and time from the uncooperative PBX and shows date and time instead of name and version, as if nothing has happened. Why doesn't that *$%§%! phone simply display "Date and time not set in PBX"? And why doesn't that PBX contain a sub-1$ RTC chip and a similarily cheap CR2032?
Answering machine. No. Not today. It has a display. It blinks "St" = Stellen (adjust time). It has << (rewind) and >> (forward) buttons, and it has + and - buttons. And a set button. + and - do not work for adjusting time, you have to use << and >>. OK, but that stupid machine insists on speaking every single number. "Adjusting time. [Silence] 1 hour. [Silence] 2 hours. [Silence] 3 hours." It's 23:45 or so. Holding down the buttons changes the increment from 1 to 5 after some ages. After some more ages, about at sunrise, I would be finished. No, it will have to wait.
Other mains-powered clocks have adjusted fine, thanks to DCF77. The clocks in my sat receivers have automatically adjusted to the time broadcasted via satellite. No problem.
Computers, including firewall? All fine. A nice reboot mail from the server, all subsystems happy, VMs have stopped. Push a few start buttons, and they all come back. No problems. Perhaps I should automate the VM startup, too. But then again, the uptime of the server is usually in the range of 100 to 300 days, interrupted only by hardware upgrades or men with spades. I don't really have to automate, but I could. Maybe someday. RTCs on PC systems have a battery backup. I think the firewall does not, but like all my systems, it adjusts via NTP thanks to pool.ntp.org.
It seems that today is the official bad user interface day:
At work, a client wants another prompt for the user interface of the product we've developed. Currently, to switch from simple mode to advanced mode, you have to press the "settings" button, then either enter a code or at least confirm that you are qualified for advanced mode, and then you have to press yet another button to stay in advanced mode. Now, when you press the "settings" button, you first shall have to confirm that you really wanted to press the "settings" button. Aaaaaah!
OK, to be fair, at the same time, the last button press to stay in advance mode should no longer be required. But still: How often should a user confirm a completely harmless switch from simple to advanced mode? Should the product prompt for social security number of the user and his manager and five fingerprints from each of the two before switching modes?
And I won't write any more about Qt, QML and the state of its documentation, more than just PITA. Or perhaps just a few sentences more. When do people learn that documentation is the most important part of software? Code examples are good, they can avoid a lot of prose. But examples are stupid if they show only the documented detail, stripped from all required surroundings. How do I use a complex object that requires a lot of setup? Like this:
And not a line more. All setup omitted, you are expected to guess what you may need to set up, and how. You have to dig through the inheritance, and hope for some clues in an unrelated part of the documentation. Or you have to search for the source code. Trace the source code. Find out what happens in the complex object, and what it expects to have been set up. "If it was easy to use our code, you wouldn't get paid so much!"
Documentation is the user interface to 3rd party code, and in case of Qt/QML, it sucks. Yes, there is worse documentation. But I spend half a day digging through heaps of this crap and did not get one step further.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)