Maurice Volaski

I am a freelance software dev available for hire for small to medium-sized projects, mobile, web (single page), and desktop

The best software does what the user wants and not what the developer wants.

I call this the A to B principle. The gist of it is this. A given user begins in some initial state, let’s call it state A. However, the user wants to be in a different state, let’s call it state B. The goal of software is to get the user from A to B and to do it most expeditiously. There are innumerable instances where software fails to do this, a result I call an A to B violation. Worse, it may send the user to state they don’t want to be in, state C. This is an A to C exception.

Spell checkers, the worst offenders of violating the A to B principle

I can’t tell you how many times a spell checker has changed what I intended to type. I believe it’s the responsibility of software to manage what the user types and ensure what it types what the user intends. I have had spell checkers keep “tghe” instead of typing what I intended, “the”, and many other similar miscorrections. One of the worst examples occurs when an intended word has an apostrophe. They often confuse “its“ for “it‘s’ or vice-versa. The most notorious offender for miscorrections is Microsoft Swiftkey, currently at 4.2.3. Indeed, Swiftkey’s bugginess is so bad, it may very well be the worst piece of software currently in use worldwide.

Outlook violates the A->B principle

Consider this screenshot from Mac Microsoft Outlook 365 (version 16.95.3).

It displays the topmost portion of an open email. Usually, if I have opened an email, I want to read it and, oftentimes, the next thing I want to do is reply to it. But how do I do that? As a user, my first inkling is to look at this area of the screen for a reply button, but what’s the first button? Delete! Worse, there is no reply button at all. Actually, there is. If you look all the way to the right, you’ll see this curved leftward pointing arrow. That’s the reply button.
This is a great example of A to B violation. Indeed, it’s what I call an A to C exception. That is, my initial state is displaying this email, and my desired state is replying to it. But Outlook goes out of its way to hide the reply button and present the user instead with what the developer wanted, which is a Delete button of all things. So instead of going to reply, state B, Outlook takes the user to Delete, state C.

WordPress violates the A->B principle

In WordPress 6.8, when publishing a page, there is a Publish button at the upper right.

 It’s natural to think that clicking it will publish the page, but that’s not what happens. Instead, we get this:

It interrupts us to ask if we are really sure we want to publish and even gives us a cancel button if we should re-think the whole thing and change our minds.

Elementor violates the A->B principle

In writing this blog in Elementor, version 3.28.3, on WordPress, and as I was writing the blog post above, I noticed that Elementor itself was violating the A to B principle. Here’s how. Watch this video.

As you can see, I have a block of text in the Text Editor widget, and I am trying to drag select all the text, but Elementor is having none of it. Instead, it tries to drag the area of the section where a new widget will go. This, of course, is a major A to B violation. Indeed, it’s A to C exception.

Elementor violates the A->B principle II

Elementor, version 3.28.3, strikes again. Watch in the video below as I click into the edit field to select it, placing the cursor between the “a” and “g” in “drag”.

Elementor makes not one, but two, A to C exceptions. First, when I click into it, for a moment, it grays out the text block for no reason whatsoever. Then, when it’s done with that detour, it makes the text block active, but it never puts my cursor down where I clicked the mouse. (I actually have to click the mouse three times before it does what I have asked.

The McDonalds app violates the A->B principle

If you ever ordered anything on the McDonald iPhone app, version 9.104.0, at a previously set restaurant location, you’ll see an A to C exception. Fill your cart with some items and then tap Checkout. At this point, you should expect to see the items in your cart so that you can confirm them, but that’s not what it shows. Instead, we get this screen.

For some reason, the developers want us to acknowledge that they know they have the restaurant location set. Do they suppose we might have the wrong location selected and want to call attention to it just in case?  

The iPhone violates the A to B principle

Watch in this video as I try to put the cursor before the “it”. 

Twice, the iPhone (version 18.3.2) not only fails, but also it reverts the selection to its original location, a clearcut A to C exception.

The iPhone violates the A to B principle II

Sometimes, on my iPhone I’ll be playing music in iTunes and I visit some site such as Twitter and some video references audio in some fashion. When this happens, the iPhone stops playing the music. This is a great example of the A to C exception.

The iPhone violates the A to B principle, III

The iPhone has this “feature“ where shaking it physically after taking some action in results in triggering a dialog offering to undo it. I can’t tell you how many times I have accidently shaken the phone inappropriately triggering it.

The iPhone violates the A to B principle, IV

The iPhone has this “feature“ where when you’re making a purchase, you have to double-press the right-side button. The only problem is that it is difficult to do in the way the iPhone wants it done, so it occasionally fails. Given that it takes steps to get to this step, it’s unlikely that a user is going to order prematurely by pressing it once, so this qualifies as an A to B violation.

RSA Authenticator violates the A to B principle

RSA SecurID is a product of RSA. It enables organizations to central manage two-factor authentication, 2FA. When you log in to a RSA SecureID protected asset, its goal is to prompt you to enter your two-factor credential from the RSA Authenticator app. But the process is far from smooth. When prompted for the credential, it should be a one-step process to type it in, but it is, in fact, three steps. First, one is presented with this dialog for no reason whatsoever.

Then when typing the text, it doesn’t type until one clicks into the edit field.

Even then, one has to still click Submit.

All together, this constitutes three violations of the A to B principle.

Axos Bank’s website violates the A to B principle

Axos Bank is an online only bank that used to be called Bank of Internet. It used to have a great interface, but now, not so much. One issue is particular concerns logging into one’s account. Here’s what the opening page with the relevant login interface looks like:

Ideally, when I click Sign In, I should see a screen where either I or my password manager can enter credentials, but that’s not what it shows. Instead, it shows:

Once I click Sign In, it leads me to yet another screen where I still can’t sign in.

Finally, after all that, it presents me with an a actual login screen.

IPv6 violates the A to B principle

Even if you’re not a serious techie, you are probably familiar with IP addresses, for example, 192.168.1.1. It’s the address of a computer on a network, usually, the Internet. The only problem is as a result of the way the addresses are constructed, there are a relatively small number of them, and on the Internet we’ve essentially run out. To solve this problem, the powers that be have created a successor. The original addresses follow the IPv4, version 4, addressing scheme. The addresses of the successor, IPv6, version 6, designed to provide a virtually limitless supply, look very different, for example, 2001:0db8:85a3:0000:0000:8a2e:0370:7334. While we as users don’t typically need to handle these addresses directly, a service called DNS, domain name service, generally takes care of this, it is sometimes useful to work with them directly. Think back to my example IPv4 address. Can you easily memorize and work with it? Now trying memorizing and working with the IPv6 address. Obviously, we can’t. It’s ridiculous. I have no idea why the powers that decided to make IPv6 human-unusable, but they did, and it qualifies as an A to B violation.

Mac Terminal violates the A to B principle

This blog entry is directed at those power users or developers who use the Mac’s terminal application. (For the rest of you, terminal is used to execute hand-written commands.) I often find myself pasting text into terminal. Most of the time, this works fine. However, occasionally, it pastes incorrectly, prefixing the pasted text with “00~” and suffixing it with “01~”. It even has the gall to beep at its own bug. By the way, it’s been around for the longest time, perhaps more than a decade. Here‘s an example: