A screenshot of the Minority Report movie, under fair use

Considerations on User Interfaces

I’m not an "UI expert", but sometimes I have a strong opinion about the user interfaces I have to interact with.

For this reason, I wanted to collect different examples of good UIs, bad UIs, anecdotes, and other information I could find.

This is not a guide on how to design your application or website, far from it.

As a collection, it is also incomplete in many ways.

Many examples are about Windows, although I use other systems daily with different graphical interfaces. The reason is that other systems are less "used".

Windows has a single UI; its settings affect many programs, and the UI cannot be changed as easily.

On Android, there are variations between phones, plus every version introduces numerous changes, which makes it harder to say that users have certain expectations.

On a Linux system, there are more Graphical environments, and if an application was compiled for a different desktop environment, it might behave inconsistently compared to other programs.

Plus, some open source environments can be customized a lot, and different distributions might make some changes anyway. Last but not least, environments I do not like are easier to avoid by installing another one.

This is to say that it is easier to use a Windows version and use that as an example, instead of specifying which version of KDE/GNOME/Mate/…​ was used on which operating system, which might have changed some default settings. Also, the reason why I tried to make all screenshots and tests in the default environments, without further changes.

Thus, if I found something I did not like, and it is also reproducible in Windows, then I’ve described the behavior in Windows, because their UI with default settings reaches many more users than all graphical desktop environments of all Linux distributions.

During the process of collecting all information, I remember that on many changes my reaction was "I liked how it looked before". In some cases, after many years, I do not even remember how it looked before. So maybe the previous UI was not that better, or the change was not that disruptive. After looking at some examples more in detail, I actually find some of the changes I did dislike or not care about an actual improvement, with the only drawback that one might be accustomed to the older UI. And in other cases, I did not change my opinion, and I still find the new UI worse than the older one.

Banners

Some command-line tools, in particular on Windows, like to show a banner.

This is, for example, what powershell.exe prints:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

Loading personal and system profiles took 1286ms.

cmd.exe prints the following text:

Microsoft Windows [Version 10.0.20348.2966]
(c) Microsoft Corporation. All rights reserved.

Far Manager prints a text too, which is shown when the program is closed:

Far Manager, version 3.0.5751.0 x86
Copyright Β© 1996-2000 Eugene Roshal, Copyright Β© 2000-2021 Far Group

autorunsc of the Sysinternals suite πŸ—„️, prints the following banner:

Sysinternals Autoruns v14.11 - Autostart program viewer
Copyright (C) 2002-2024 Mark Russinovich
Sysinternals - www.sysinternals.com

Those banners do not really help the end user. Thus, avoid them, and if you really want to provide such banners, at least give an option for turning them off globally.

Similar banners are extremely uncommon on Linux and BSD systems; this makes it much easier to use the output of a program as input for another command.

Imagine having to remove the banner from every command before using it as input for something else.

For PowerShell, I find the banner particularly irritating; there are different workarounds, but all with different disadvantages.

Splash screens

It seems that some applications use a splash screen even without needing it, as it can be used to show off your brand with big pictures and logos that otherwise would not integrate well in the program.

There might be situations where a splash screen makes sense. An example could be a program that needs to load some data over the wire or load some data that requires time to be analyzed. I think it would be better if the application loads instantly, and then uses a simple progress bar for loading the data as a separate step. Maybe I just want to see what the current version displayed in the application is; there should be no need to wait for that.

If the program is just slow to start, then wouldn’t it be better to speed it up? Adding a splash screen might reduce the perceived waiting time, but it’s just an illusion.

Feedback during long operations

Provide some meaningful information.

A spinner (with nothing else) provides no information, although it is the simplest thing to design/develop. A progress bar can help the user to indicate that something is actually happening.

A percentage counter can at least give a feeling that there is some real progress.

Some additional text like "loading foo", "parsing bar", or "analyzing baz" can help to understand what is happening, and eventually troubleshoot faster where the process is hanging, or at least why it is taking so long.

Copy file dialogs are a good example. The operation can take a lot of time depending on the input, so it is important to give the user feedback on how the operation is proceeding.

copy dialog win xp
Figure 1. Windows XP classic copy dialog

I believe that simpler command-line tools, like cp, would also benefit from a progress bar with time estimation for longer operations. One could argue that different dedicated tools are better, but I would prefer not to install many programs that do similar things, plus I might not be able to change the environment where I am working, so having more user-friendly defaults would be better.

Another good example are the download dialog and tools like curl and wget. Even if it is not really possible to estimate how long a download will take, as there are many external factors that affect the process, they still show useful information to the end user.

A bad example are most graphical boot screens. Granted, it is more difficult to estimate how much time it will take, as starting the operating system involves a lot of heterogeneous operations, but the current state is to hide any information, and it can be improved.

Before Mac OS Tiger, Apple would show which component of the system was being started πŸ—„️. With Mac OS Tiger, they replaced the UI with a progress bar πŸ—„️. The progress bar did not really measure progress, but it used the information how long a boot of the system normally takes. Thus, unless for some reason the boot is slower than usual, it is still providing some meaningful information to the user, as when the progress bar reaches the end, the system will usually be ready to use.

Since in some environments booting up can take a considerable amount of time, showing some information would help the user to understand how much time it will take.

One could refine the approach used on Mac OS Tiger; instead of measuring the complete startup time, measure the startup time of some components, and merge them together in a progress bar. One does not even need to rewrite the startup logic for logging the times; a separate process verifying every N seconds, which processes are running, would be enough. As always, the devil is in the details. Even with such an approach, I would still like to see what is being started; one thing does not have to exclude the other.

In case of issues, in particular if the boot process gets stuck or takes a really long time, some information is better than a progress bar or nothing at all.

If the computer is hung while configuring some particular peripheral (an external drive, the network, etc.), then the user knows why it is taking so long and can act accordingly.

Access to Sublist and submenu

There is no need to stay on track when switching from a list to a sublist. This makes it easier for the user to go with the mouse directly to the desired element.

Context menu in KDE does it right
Application switcher in KDE taskbar does it wrong
Application switcher in Windows does it right

Transparent background

Wallpaper

Wallpapers have been a thing for a long time, and yet from time to time, the combination of text and background image leads to a situation where the text is hard to read.

The fix is simple; the text should be surrounded by a line of opposite color. Thus, if the text is white, it should be surrounded by a black line.

In Windows (at least Windows 7), the relevant options are called "Use drop shadows for icon labels on the desktop" and "Use visual styles for windows and buttons". You have to deactivate them both to actually remove the shadows for the labels on the desktop.

text over images win 7
Figure 2. Windows icons on the desktop
text over images win 7 no shadows
Figure 3. Windows icons on the desktop without shadows
performance options win 7
Figure 4. Windows performance options

Other applications

The screenshot of the Windows performance options shows the easiest way to deal with a transparent background inside programs: increase the opacity and make it frosted πŸ—„️.

Otherwise, except for the Wallpaper, I see little reason to have images as backgrounds or transparent backgrounds in other programs for multiple reasons.

First, if I want to see what’s behind the current application, minimizing the program or moving it to another position is better than reducing the legibility of the current application, and the program that is behind it. I’ve never understood those who want to have a terminal emulator (or editor) with a transparent background; it might look stylish, but isn’t it distracting?

Similar considerations hold for other images as background; consider a chat program. I’ve seen that multiple programs (WhatsApp, Telegram, iMessage, etc.) suggest to the user to set a background image. But if the user opened the chat application, it’s because he wants to write something or see what others have sent to him.

My first assumption was that this particular feature is used to convince the user to keep the application open the whole time, thus a "dark pattern" (more on that at the end). But I’ve found no data to prove my point, so maybe it’s just me.

On the other hand, I guess that a background image can make it easier to recognize the chat instead of looking at the name of the current contact or group name, so it can improve the usability.

I believe this article on NN/g πŸ—„️ shows multiple shortcomings of the new transparent effects that have been introduced on iOS 26.

Interfaces from Minority Report and other movies

When writing those notes down, I had to chuckle when I thought about the movie Minority Report, which shows the most unusable monitor I’ve ever seen. If you have ever had to deal with glare on your monitor, imagine having to deal with a transparent screen.

I guess they used a transparent screen for multiple reasons that have nothing to do with usability.

The first one is that it looks futuristic. The movie was released in 2002 and takes place in 2054. At that time, we mostly had CRT monitors. Flat-panel displays already existed, but replaced most CRT displays years later (around 2010?).

Second, it looks impressive, or at least something that is expensive and difficult to create.

The audience (of the movie) can see both the computer display and the actors at the same time, without changing position the whole time. A similar technique is used in other movies, where people write with markers on windows (for example, "A Beautiful Mind" from 2001, or on a mirror in "Good Will Hunting", from 1997). I am pretty sure no one would do it in real life, as paper works so much better, and there is, given the context, no shortage of paper.

In the case of a room with multiple people, it is possible to see more or less what everyone is doing without changing the position of the camera every time if screens are placed in the middle of the room.

None of this improves the usability of the monitor; in fact, all those points indicate that seeing the details on the monitor is not that important!

And sometimes it feels the same when changes are made to the user interfaces with gratuitous effects and animations. Instead of letting the user concentrate on the important thing, the content, the new UI is something that looks nice the first time, it looks impressive, cool, but ends up being a distraction, even if you might not realize it.

Compact interfaces

One of the many differences between a computer of the 1990s and today is the size of the monitor.

According to this StatCounter article πŸ—„️, the screen size 1366x768 overtook 1024x768 for the first time in 2012, and before that, the most used screen resolution was 800x600.

Which means there was less space to waste.

As of today, with different designs putting the focus on "minimalistic" and "clean" interfaces, there is a lot of blank space.

installed apps win 11
Figure 5. Windows installed applications

The dialog on the right was introduced in Windows 10, while the dialog on the left is more or less unchanged since Windows XP.

If a PC has been used for multiple years, it will have a lot more programs. The newer interface, on the monitor I’m using, is not even able to enlist more than ten elements.

One cannot even argue that the new interface is cleaner; what is the date that appears on each element? On the right, it’s obvious; it’s the column "Installed On", so it’ll be the date on which the application was installed.

But on the right? Maybe it’s the date when the program was released?

Also, the version number of the program is harder to recognize, especially since not all programs have it. With the tabular data structure on the right, it is obvious what the details are and which are missing.

And yet, the interface on the right is the current paradigm for the last ten years.

I believe the answer is "touch screens", and the fact that fingers are fatter than a mouse pointer.

For most computers, a touch-screen-friendly interface is useless, as they are used with a keyboard and a mouse.

On the other hand, I can understand the desire not to have separate layouts depending on whether the user is using a mouse or their fingers.

One disadvantage is that the user needs to learn two user interfaces.

Another disadvantage is that if there is a second, less-used interface, it will not be as well-known as the first one when searching for help.

Plus associated costs for maintaining and testing both interfaces.

Nevertheless, I’m not convinced that reducing the usability of all interfaces for a peripheral that is mostly unused is the best decision.

Information hiding

Another trending pattern is to hide information.

For example, this is a comparison of Explorer between Windows 11 and Windows XP, side by side.

explorer win xp win 11
Figure 6. Explorer on Windows XP and Windows 11

In Windows XP, it is possible to see immediately where a file is located; it is written in the address bar!

In Windows 11, this information is hidden, unless one clicks on the address bar, where there is no text; otherwise it will change location. In fact, given that there is almost no difference in color between the address bar and the surrounding elements, you might not even realize that you can click there.

While showing too much information is confusing, the job of a file manager is to help the user create, open, delete, and move around files. Hiding where they are actually located does not seem helpful; on the contrary.

Windows, in particular, conditionally hides an important detail about files: the file extension. Since it is used for determining which program to execute, and since executables can have their own icon, it is a nightmare from a security point of view. It is easy to get tricked into double-clicking on what looks like a document, but in reality is an executable. At least it is possible to change the settings, and let explorer always show the file extension, which is, in my opinion, a better default setting.⁠[1]

On Android, the situation is similar. Directories and files are hidden as much as possible from the user.

On iOS, I believe the situation is even worse.

Something similar has been happening at least since 2018 πŸ—„️ with browsers on the desktop. For example, Chrome hides the www. part of the URL from the URL bar. It seems the ultimate goal is (or was) to remove the URL bar completely πŸ—„️.

Phrasing tone

I’ve just learned that Windows Vista πŸ—„️ defined some official guidelines on how to phrase dialogs:

The guidelines for Vista and its applications suggest messages that present technically accurate advice concisely, objectively, and positively, and assume an intelligent user motivated to solve a particular problem. Specific advice includes the use of the second person and the active voice (e.g., "Print the photos on your camera") and avoidance of words like "please", "sorry", and "thank you".

I like especially this guideline

Write from the user’s perspective and preferably from the perspective of what you can do for the user. Users should feel that they will find information that is relevant and accessible to them.

— from πŸ—„οΈ

Unfortunately, even if very short, many applications fail to follow them.

Many programs assume their user are dumb, and that they cannot do anything, so why show a sensible error message?

Instead of providing some useful information, they might show a generic message like "Oops, something went wrong" or "Try again later". How is that helpful? How can the user try to solve an error?

Some programs, not only malware, try to trick their users, but more on that later.

Another change introduced in Windows Vista was renaming "My Computer" to "Computer". I did not like the change at the time; it seemed like the computer was not mine anymore, but after thinking about it, it made the UI a little easier to explain. First, imagine trying to help someone over the phone, without having remote access to the PC (it still happens to me), and telling them "go to my computer" or "click on my computer". It’s their computer, not mine, so the phrase might sound unnatural. But saying "click on your computer" is also wrong, as the label is "My Computer". If the label is "Computer", then saying "go to computer" or "click on computer" avoids the ambiguity.

Granted, as there is only one computer, the risk of not understanding each other, even over the phone, is low.

A more problematic situation might be a webpage, where there is not only your data, but also the data of someone else. If there is, for example, a button labeled "share my story" at the end of an article, to whom does "my" refer? To the person who wrote the story one has just read, or the one who is reading it right now?

Is it a button for sharing a link for the article you have just read, or a button for contacting the author of the article and giving some feedback? In this case, using a label like "share this story" or "share your story" should avoid the ambiguity.

On the other hand, "your" might not sound natural if it is not tied to an action. Imagine a chat or mail client that uses the label "Your Messages". "My messages" might sound better.

In other situations, for example, a webpage with a label like "my pictures", "friend pictures", and so on, one needs to pay attention when it says "my". Is he referring to the label, or is it his data?

Also, another thing to consider is that programs put their files under "My Documents", "My Pictures", and "My Music", which is why I always store my data outside of the predefined directories provided by Windows.

Last but not least, prefixing half the directories with "My" is not very informative; if you want to sort your folders by name and half of them are prefixed with "My", you won’t be happy.

To conclude, it seems that "my" and "your" are at best avoided. If necessary, use "your" together with an action, or if possible, use the (nick)name of the user: instead of "your account", just write "account", or "fekir’s account".

Lists and tabular data

List and tabular data appear in multiple places; the most common one is when using a file manager.

There are multiple instances when people want to sort things. In particular, if the UI shows data in a tabular structure, then people might want to sort the data according to a specific column.

Natural sorting

Something that some file managers have been doing for decades.

If you have a set of files, named from file 1.txt to file 10.txt, chances are you want them to be sorted like this:

file 1.txt
file 2.txt
file 3.txt
file 4.txt
file 5.txt
file 6.txt
file 7.txt
file 8.txt
file 9.txt
file 10.txt

This way of sorting is called natural sort πŸ—„️ and was introduced in 1996 in MacOS.

On the other hand, most sorting algorithms will give you the file names in the following order:

file 1.txt
file 10.txt
file 2.txt
file 3.txt
file 4.txt
file 5.txt
file 6.txt
file 7.txt
file 8.txt
file 9.txt

For example, Midnight Commander does not use natural sorting by default (but I learned that it is supported):

natural sorting
Figure 7. The File Manager Dolphin and Midnight Commander

The workaround used in many places is to 0-pad the numbers, so that the files are sorted consistently with most programs:

file 01.txt
file 02.txt
file 03.txt
file 04.txt
file 05.txt
file 06.txt
file 07.txt
file 08.txt
file 09.txt
file 10.txt

On the other hand, if you do not know beforehand an upper limit on how many files you will have (100? 1000? even more?), then you cannot pad the filenames once, and might need to rename them all at a certain point.

At least file manager, since many already do it, should offer the option to use the Alphanum Algorithm πŸ—„️ or something equivalent.

In some environments it is called version sort⁠[2], and I also learned that my ls and sort support if out-of-the-box πŸ—„️.

Stable sorting

Again, some file managers have been doing it for a long time.

If one sorts the filename by creation date, and then by name, it would be a good thing if files are sorted by name first, then by date.

Stable sorting πŸ—„️ avoids unnecessarily changing the position of elements, thus the end-user can find them again faster.

Alternate background colors

When comparing Explorer from Windows 11 and Windows XP, I’ve noticed that in Windows XP the background color of the first column is different than the others.

It is a little difference that can make using lists easier.

Then I noticed that Dolphin alternates the background color of the elements of a list by default.

This helps to make the data easier to scan for humans. Otherwise, the eye might slip from one row to another.

It’s a technique also often used in printed tables and virtual documents.

I wonder why it is not used more, for example, in the Start Menu, menu lists, and so on. I guess that tables with long rows get more benefits than tables and lists with short rows, so it might not be a good idea to alternate the colors everywhere.

Undo notifications, confirmation dialogs, and other alternatives

I’ve encountered undo notifications in one application I use on the phone.

This is what I’ve noticed when interacting with them:

  • the notification disappears after some time; if I’m too slow, I cannot undo my operation anymore

  • there is only one undo notification. A new notification replaces the older one: if I delete two elements, one after another, I cannot recover the older element

  • it does not always work; it happened more than once that the system did not recover an element I deleted by accident, even when clicking on the notification on time

You might be tempted to dismiss the last point; surely it’s the application’s fault if they cannot implement a working undo notification. Also, the other points can surely be improved; my application must be a bad one.

This is why I decided to test something else and see how it behaves. This is what I’ve observed with the online interface of Gmail:

  • the notification disappears after some time; if I’m too slow, I cannot undo my operation anymore

  • there is only one undo notification. A new notification replaces the older one: if I delete two elements, one after another, I cannot recover the older element

  • if I delete multiple emails at once, and I have accidentally deleted one mail too much, I can undo the whole operation, but not undo the deletion of a single mail

  • it does not always work; sometimes you cannot undo an operation, but the notification is still there

undo deletion gmail
Figure 8. Undo deletion of multiple elements

Here is the failed undo after sending an email

undo sent mail gmail
Figure 9. Undo sent mail

Obviously, it is not possible to undo the sending of an email, so why does Gmail show this notification? It creates a false sense of security. One knows that it can undo the sending of an email (at least for a short amount of time), because there is a notification, and then it does not work when one needs it.

I assume that Gmail normally postpones the sending of a mail for some time, thus the "Undo" is in reality a "Stop the action in progress", but in my case, the notification was still there while the mail arrived on the other mail account, so it was clear even without clicking on the notification that it would not work. And no, I did not try to trick Gmail by blocking JavaScript, disconnecting my device, or something else.

undo failed gmail
Figure 10. Undo failed

I searched a little bit about why "undo notifications" are used and found different resources proposing them as an alternative to confirmation dialogs.

I get the intention; confirmation dialogs are distracting, and during some operations you might need to confirm your actions a lot of times, which is frustrating.

The undo notification does not break your workflow, but it also works poorly if you make an error.

I believe the metaphor of the recycle bin is a much better interface.

First, it’s not timed. I can still recover data I’ve deleted decades ago.

Second, there is a more granular control for the restoration process. If I deleted multiple elements, I can restore a subset of them. I can even restore them at a different location.

Third, even if restoring fails (for example, you cannot undo the deletion because the drive is full), the data is still there in the bin. Granted, explorer.exe on Windows will not let you open it directly.

The undo notification is beneficial if one acts quickly. Instead of opening the recycle bin and searching for the deleted element, just click on the notification. But it should not be the only method for recovering some deleted data.

The application I’m using on the phone uses this "undo notification pattern" when one deletes a conversation or a note. In this case, I believe the recycle bin interface can be applied without causing confusion and provides a better experience.

For other use-cases, like sending an email, the recycle bin does not make sense. In that case, a list with the operation in progress, with a countdown and a stop button, is a more sensible abstraction. But the interface should also be honest; if the action is still on the list, the mail should not have been sent!

While I was thinking about the recycle bin interface, I realized that Windows does not ask for confirmation anymore when deleting a file. I just learned that the Recycle Bin of Windows has an option named "Display delete confirmation dialog", which was active by default until Windows 7, and has been turned off by default in Windows 8. Since files are recoverable by default, one wonders why it was not off by default the whole time, as the confirmation dialog is, in fact, disruptive. If you try to delete a file permanently by bypassing the Recycle bin with Shift+Canc, then you will still get a confirmation dialog. Since it is not possible to undo that action, it makes sense.

Note πŸ“
The Dolphin file manager does not present a confirmation dialog when using Shift+Canc to bypass the recycle bin. I find the behavior in Windows better, but I have currently found no way to change the behavior in Dolphin.

Mozilla Firefox implemented an interesting change to its confirmation dialogs: a delay. If you try to run an executable that has just been downloaded, the corresponding button is greyed out for some seconds. This gives the user a chance to reconsider if he really wants to run the program or not, as it is generally a dangerous action.

In fact, the solution proposed by Firefox is much better than a confirmation dialog alone:

Confirmations also illustrate an interesting quirk of human behavior: They work only when they are unexpected. That doesn’t sound remarkable until you examine it in context. If confirmations are offered in routine places, users quickly become inured to them and routinely dismiss them without a glance.

— About Face 2.0, The Essentials of Interaction Design, by Alan Cooper and Robert Reimann, on Internet Archive

It surely happened to everyone; you do a certain routine, you know there will come a dialog, and you’ll click on confirm (or press the corresponding key for confirming) without thinking about it.

With the delay, there is no explicit additional action to perform, but similar to an unexpected confirmation dialog, it breaks the flow and gives the user a chance to stop and think. It is also worth noting that the confirmation dialog of Firefox is triggered only when executing a downloaded file, not something that should happen often.

While searching for more information about it, I discovered the change was triggered to avoid tricking the user to execute programs without even noticing πŸ—„️!

Even if a confirmation dialog is still the right tool to use, some guidelines have changed. Once upon a time, all confirmation dialogs had the "OK" and "Cancel" buttons. "Ok" was for continuing the operation, while "Cancel" (or simply closing the dialog) would stop the operation. Today (it seems at least since Windows 7), the recommended guideline is to use specific labels over generic ones πŸ—„️

Prefer specific labels over generic ones. Ideally users shouldn’t have to read anything else to understand the label. Users are far more likely to read command button labels than static text.

  • Exception: Don’t rename the Cancel button if the meaning of cancel is unambiguous. Users shouldn’t have to read all the buttons to determine which button cancels an action. However, rename Cancel if it is unclear what action is being canceled, such as when there are several pending actions.

Acceptable:

<Screenshot that shows the "OK" and "Cancel" buttons.>

In this example, OK and Cancel are acceptable but unspecific labels.

Better:

<Screenshot of "Burn CD" and "Cancel" buttons>

In this example, Burn CD is more specific than OK.

Incorrect:

<Screenshot of "Burn CD" and "Don’t Burn CD" buttons>

In this example, Cancel should be used instead of Don’t Burn CD.

On the other hand, I find the following confirmation dialog of the Android Guidelines πŸ—„️ problematic, because "Cancel" and "Delete" are synonyms.

Granted, by reading the text, one would conclude that "Delete" deletes the data, and "Cancel" does not. But the point was to use specific verbs so that the user does not have to read the text, as many users apparently do not, but in this case, one might have to read it twice to be sure what to click.

I believe that in this case, "OK" and "Cancel" are easier to understand. If you absolutely want to avoid "OK" (or "Yes"), I would propose "Delete Image(s)" / "Delete file(s)" / "Delete data" as an alternative.

confirmation dialog android
Figure 11. Confirm deletion of files on Android

By the way, Thunderbird also shows a dialog with "Cancel" and "Delete" when deleting something from the Trash :(

Another thing to avoid is double negation (but that should be avoided everywhere) and changing the position of the "OK" (or more specific label) and "Cancel" buttons.

It might also make sense to use a different color (for example, red) for destructive actions, like Midnight Commander does.

Popups

I do not think I have any good examples of pop-ups, but a lot of bad ones.

In fact, pop-ups are so problematic that all browsers block them by default since Internet Explorer 7. On Windows XP, using Firefox that blocked pop-ups by default was alone a good reason for preferring it over Internet Explorer 6.

Instead of making real pop-ups, websites will render them on the webpage directly.

For example, when I linked the article to Wired πŸ—„️, I was greeted with a pop-up with two columns.

popup wired
Figure 12. Popup on wired.com

The first column said:

We Care About Your Privacy

We, and our 221 partners use cookies and similar methods to recognize visitors and remember their preferences. We may also use these technologies to gauge the effectiveness of advertising campaigns, target advertisements, and analyze website traffic. Some of these technologies are essential for ensuring the proper functioning of the service or website and cannot be disabled, while others are optional but serve to enhance the user experience in various ways.

We, in collaboration with our partners, store and/or access information on a user’s device, including but not limited to IP addresses, unique identifiers, and browsing data stored in cookies, in order to process personal data. You have the option to manage your preferences by selecting the 'Manage Preferences' option located in the page’s footer. To review or object to instances where our partners assert a legitimate interest in utilizing your data, please visit our vendors page.

I assume the word "partner" has a different meaning to me. I cannot imagine how over 220 companies need to access some data for nearly 20 different tasks that are all irrelevant to what I want to do: read a piece of non-personalized text. They really do care about my privacy </s>.

Not only that, I need to be bothered with a blocking pop-up. From a usability perspective, it’s a disaster, and to make things worse, a lot of websites are using this pattern, and have even more partners!

Underlined keyboard shortcuts and access keys

On Windows, an underlined letter in the graphical interface means that instead of clicking on the element, the user can use the keyboard to trigger it. There is a global option, Setting  Accessibility  Keyboard and toggle th option "Underline access keys".

If using an older version of Windows (at least Windows 7), the option should be located under the Control Panel  Ease of Access Center  Make the keyboard easier to use and then mark the checkbox "Underline keyboard shortcuts and access keys".

On Windows XP, it was not even considered an accessibility option. The relevant setting is Control Panel  Display  Appearance  Effects and then "Hide underlined letters for keyboard navigation until I press the Alt key".

I think marking it as an accessibility option is wrong because the underlined letters help the user discover how to use the program. In particular, there are instances when pressing Alt does not show underlined letters for keyboard navigation. For example, in the context menu of Explorer, pressing Alt closes it.

On KDE Plasma, it is possible to activate this option under System Settings  Colors & Themes  Application Style  Configure Style …​  Keyboard accelerator visibility and select "Always show" from the drop-down menu.

hotkey kde plasma
Figure 13. Always enable keyboard accelerator visibility

Assuming that this setting has not been enabled (which is not by default), this is what I’ve noticed:

In the Dolphin file manager and Kate text editor, when pressing Alt, the relevant letters are underlined. The moment I stop pressing Alt, the letters are not underlined anymore. Contrary to Explorer on Windows, it is also possible to use Alt in the context menu.

In Firefox, if I press Alt (or F10), the menu appears and the relevant letters are underlined. I found no way to underline the letters of the menu entries shown in the hamburger menu. Contrary to Dolphin and Kate, there is no need to keep Alt pressed. If you have configured Firefox to always show the menu, then the relevant letters are always underlined.

On VSCodium, Notepad, and I assume most other applications, there is no need to keep Alt pressed, similarly to Firefox. In particular, VSCodium does not respect the KDE Plasma global settings, but it does respect the Windows global settings.

On VLC on Windows, there is no need to keep Alt pressed, while on KDE Plasma it is necessary.

On Thunderbird, the relevant letters are always underlined.

Hints about hotkeys also appear in Games, even though not necessarily as underlined letters, as shown in this case in Age of Empires 2

hotkey age of empires 2
Figure 14. Keyboard shortcut in Age of Empires 2

Check box, radio buttons, and toggles

Before smartphones, the appearance of most, if not all, dialogs:

  • did not change

  • had greyed out options for settings that were not available because of another setting

Since the advent of smartphones, toggles have partially replaced checkboxes, and dialogs have become more "interactive" by changing, for example, the description of the text.

This led to the situation that it is

  • often hard to determine if the toggle is active, not active, or greyed out

  • unclear if text is the current state, or the state to be activated, as the UI is "interactive" and the text changes

Some common improvements πŸ—„️ are using additional colors to distinguish the active state from the others, and/or using "ON" and "OFF" as additional labels to indicate the selected state.

Moving elements around

Do not move elements around depending on how the user interacts with your program and while the program is running.

HTML

The most common offenders are probably websites that change the layout with JavaScript. The browser might have loaded the page, but some JavaScript code is still running in the background. The user wants to click somewhere, but in that moment, the webpage changes asynchronously, and the user clicks on the wrong element.

A similar effect can be achieved without JavaScript. If the browser does not know the size of an image, it will have to restructure the page once the image is loaded. This can be avoided by setting the height and width as HTML tags.

Personalized Menus

In Microsoft Office, some elements would change their position more depending on your usage πŸ—„️. Fortunately, it was recognized that it did not improve the usability and has been disabled by default πŸ—„️.

But somehow this feature continues to exist in some products.

I do not use the Office suite, but I have to use Outlook. I really fail to understand why, sometimes, the UI in Outlook (classic) changes, and why one would want it. I do not find what I am searching for, and might click on the wrong button if I do not realize that it has changed. Resetting the UI to how it looked before is also non-intuitive.

Unfortunately, I have not documented how the UI changes, but I have a video of another irritating effect:

Outlook (classic), when switching between mail folders

This happens every time I change the folder, and it is extremely distracting.

Strangely, on some folders, the elements do not expand and then shrink again, and stay in their expanded form:

outlook bar
Figure 15. Outlook (classic), but only in some folders

Greyed out elements

A greyed-out element typically indicates that it is disabled and that it cannot be interacted with.

I find greyed-out elements a very useful concept. The alternative is to remove the elements from the UI, which has many of the already-mentioned issues. In that case, they cannot know that the element exists.

These are two screenshots of Thunderbird, in two different contexts:

greyed buttons thunderbird 1
Figure 16. Greyed out options in Thunderbird
greyed buttons thunderbird 2
Figure 17. Greyed out options in Thunderbird

Depending on the context, different options are greyed out.

There are, in general, two possible outcomes.

  • The user realizes the option exists, but that they are currently not available.

  • The user already knows that the option exists and realizes he is in the wrong context.

Note that sometimes the "right context" depends on multiple factors; in that case, greying out an element might not be ideal. For example, there might be a form with different fields. Instead of keeping the "Submit" button greyed out, the button could always be enabled, and provide an error message when clicked if some information is missing or wrong. The error message gives the user better feedback than a greyed-out element.

greyed buttons win 7 service 2
Figure 18. Greyed out options of a Windows 7 service

If the option is not shown at all, either the user does not discover it, or if he already knows it, he might think it has been moved somewhere else or removed altogether.

A tooltip can help to improve the situation further, and explain why an action is greyed out with a text like 'This option is currently not available because <reasons>'.

There are situations where hiding out elements makes more sense; you might not want to let the user know that an option exists, for example, because it is available only to certain users.

There is also something else to consider about hiding elements of the UI. Are the settings simply hidden, or have they been reset?

For example, if you configure the Wi-Fi manually on your device, then turn Wi-Fi off, and the settings you have configured disappear. Does it mean you have to configure it again?

If the setting is greyed out, one can immediately see that they are still there, their values, and that they are not active.

Microsoft Office Ribbon UI

The Microsoft Office Ribbon UI πŸ—„️ was introduced in Microsoft Office 2007.

On Windows, here is a side-by-side between Microsoft Word 365 and LibreOffice Writer:

word 365 vs libreoffice writer
Figure 19. Microsoft Word 365 side by side with LibreOffice Writer

I wondered why the save button in Microsoft Word 365 was greyed out, as I did not save the document after writing "Hello World". It turns out that when it loses focus, the icons on the title bar are greyed out. LibreOffice does not behave this way, and I think I prefer its behavior, as Microsoft Word 365 seems to be in an inconsistent state, as other icons are still colored.

word 365 vs libreoffice writer focus
Figure 20. Microsoft Word 365 with focus side by side with LibreOffice Writer

To me, the classic LibreOffice layout also looks cleaner. In particular, all icons have the same height.

Another advantage of LibreOffice’s layout is that it requires less space and changes less when the application is resized. Here is another screenshot of Microsoft Word 365

word 365
Figure 21. Microsoft Word 365

And here is a screenshot on a smaller display

word 365 vs libreoffice writer focus smaller screen
Figure 22. Microsoft Word 365 with focus side by side with LibreOffice Writer on a smaller screen

The position and form of multiple elements in Microsoft Word 365 changed, but remained consistent in LibreOffice Writer. The only thing that changed is the dimension of the screen; it is otherwise the same machine with the same settings.

While it is already difficult enough to navigate less PC-accustomed people through menus, having to help them when the interfaces are different is harder for both.

I suppose that an argument for bigger icons is that they are easier to find, and that the most used icons (according to a study in 2012 πŸ—„️ paste was the most used icon) are bigger. Personally, I’ve never used the paste icon in any program, as I preferred the keyboard shortcut Ctrl+V, but it seems that I am a minority (emphasis mine):

Here’s an example of where we used this very data to help make a decision in Office 2007. Early on, we were toying with the idea of not having buttons for Cut/Copy/Paste in the Ribbon. Everyone "knew" that people mostly used CTRL+X/C/V to do most clipboard actions (which was true). And that mouse users used the context menu to access these clipboard commands (which was also true).

What we didn’t know until we analyzed the data was that even though so many people do use CTRL+V and do use "Paste" on the context menu, the toolbar button for Paste still gets clicked more than any other button. The command is so incredibly popular that even though there are more efficient ways of using it, many people do prefer to click the toolbar button.

Once we recognized the importance of the Paste toolbar button, it was promoted to the first big button on the left side of Word’s first tab.

Some other people might have never used another option, so to me, there is little appeal to make for everyone some icons bigger than others.

In Microsoft Office 365, bigger icons aren’t there because of touch interfaces. This is how the UI of the Microsoft Word 365 application looks on an Android phone:

word 365 android keyboard
Figure 23. Microsoft Word 365 on Android with a virtual keyboard

And on an Android phone without a virtual keyboard

word 365 android
Figure 24. Microsoft Word 365 on Android without a virtual keyboard

Note that there are no big icons, although it might be that on a bigger screen, like an Android tablet, the UI might be different again.

Tooltips

Tooltips are user-triggered messages that provide additional information about a page element or feature.

While comparing Microsoft Word 365 and LibreOffice Writer, I’ve noticed that the tooltips behave differently.

It’s a good thing I kept my Microsoft Office 2003 version installed on my Windows XP virtual machine, even if it has been at least a decade since the last time I started it. Even if I still have the license key, I’m not sure it is still possible to activate it today by calling Microsoft.

tooltip word 2003
Figure 25. Microsoft Word 2003 tooltip
tooltip word 365
Figure 26. Microsoft Word 365 tooltip
tooltip libreoffice writer
Figure 27. LibreOffice Writer tooltip

Both LibreOffice Writer and Microsoft Word 365 show in the tooltip that it is possible to toggle the option with Ctrl+B. This is good for making the UI more discoverable and getting more efficient if one uses the option often. Microsoft Word 2003 only shows "Bold" and not the keyboard shortcut.

At last, the tooltip in LibreOffice Writer and Microsoft Word 2003 is adjacent to the corresponding option, while in Microsoft Word 365, it is far away, under the lowest setting.

I guess the reason for this change is that a tooltip in Microsoft Word 365 can have links to the documentation:

Microsoft Word 365 tooltip with a clickable element

If the tooltip were placed like in LibreOffice Writer and Microsoft Word 2003, then the user might not be able to access the option covered by the tooltip.

Edges

Fitts’s Law

It’s not by accident that prior to Windows 11, the start menu was located at a corner (the lower left) of the screen by default.

One of the reasons for the previous location is the Fitts’s law πŸ—„️.

I suppose that for the same reason, Mac OS places the menu of the programs at the top of the screen, and not at the top of the Window program itself.

Strangely, since Windows 11, the start menu is not located by default at the corner, but somewhere at the bottom.

If there were a Windows 11 Phone that uses the same UI, I would have assumed that placing the start menu in the middle makes it easier to reach with the fingers when using one hand πŸ—„️. I guess this is also the reason why the Android Menu buttons are not exactly at the corner, although it should have been possible to expand the touch area to the corner.

While one could argue that on a big enough monitor, the centered position makes it easier to reach when the mouse is in the right region, another disadvantage is that the position changes depending on how many programs are open.

Rounded corners

Windows Phone (and Windows 8) distinguished itself from iOS and Android by using "normal" squares instead of squares with rounded corners.

On the other hand, rounded corners have been common for a very long time. For example, Windows XP and subsequent versions until Windows 8 had them, and Apple introduced them in 1981 πŸ—„️.

The web had to wait at least until 2005 for a cross-platform solution, when CSS3 introduced border-radius. According to MDN πŸ—„️, it is only "since 2015 that it is well established and works across many devices and browser versions". I’m not sure what browser was holding it back until 2015; I guess some older version of Internet Explorer still had a significant market share.

Even before border-radius was standardized, it was possible to create rounded corners with browser-specific attributes; Firefox supported, for example, -moz-border-radius since its first release.

With Windows 11, Microsoft also introduced rounded corners again in most, if not all, dialogs, although on Windows Server 2025, the squares still have sharp edges by default.

I remember reading somewhere that BΓ©zier curves πŸ—„️ are particularly appealing to the eye, but I cannot find the source anymore.

Another thing to consider is that in the "real" world, most edges are not that sharp. In particular, rounded edges help to make things more resistant. This is obviously irrelevant for things drawn on a monitor, but it can affect how we perceive them.

Width

Another difference between older versions of Windows and the current one is the width of elements.

This is another side-by-side comparison of Explorer, but this time in Windows 7 and Windows 11, and in both cases, the instances are not full screen, and not all elements of a folder fit into the screen:

explorer win 7 win 11
Figure 28. Explorer on Windows 7 and Windows 11

In Windows 7, the border of every window has a certain width. On Windows 11 too, but it seems to be only one or two pixels. This makes it harder than necessary to resize a window, in particular if you want to click on the edge!

Another element that got much thinner is the scrollbar.

In Windows 7, it is extremely easy to click on it, while on Windows 11, it is much thinner and easier to miss. Plus, on Windows 7, the arrows for scrolling up and down are always shown; in Windows 11, only when the mouse is on the scrollbar. Some applications go the extra mile and hide it unless one is on the correct element. Thunderbird and Firefox do it, for example, and it happened to me more than once that I thought an email was missing something, because I did not notice I could scroll further. The scrollbar is only shown when I move the mouse over the mail content, and considering that there is enough space to always show it, it irritates me a lot.

On Windows, there is a global setting, Settings β†’ "Accessibility" β†’ "Visual Effects", and enable the option "Always show scrollbars". With this change, both Firefox and Thunderbird will always show the scrollbar if there is anything to scroll.

In KDE Plasma ther eis no equivalent settings, but scrollbars are in general always visible, even in Firefox, but not Thunderbird.

At least in Thunderbird, there is an explicit option for always showing the scrollbar (if necessary).

To reiterate: hiding content is problematic.

Gestures

I generally do not like gestures.

Done slightly differently, the movement you’ve made has a different meaning.

At least on Android, they are optional, while on iOS, they are not. Another reason why I do not like it. When I try to use it, I’m often unable to get past the lock screen.

One could claim the same thing when using a keyboard and buttons; if you press the wrong key or button, you’ll get a different outcome.

The difference is that a gesture (on a phone) requires touching the screen, then moving the finger at a certain speed for a given distance in a given direction, and then stopping touching the screen. Compare that to just touching the screen for a moment at a specific location.

Or imagine if you had to drag the pointer on a PC with the mouse to log in or save a file!

This article πŸ—„️ correctly states that on a PC, the double-click is a form of gesture. I guess that’s the reason why the timer for the double-click can be changed, or the double-click can be disabled completely.

On the other hand, some gestures are way better than clicking.

The first example that comes to mind is Mario Kart Wii πŸ—„️ (and subsequent releases for the Wii U and Nintendo Switch). You can use a "conventional controller" and use the analog stick for steering. The (IMHO) preferred way to play is by using the Wii controller’s motion controls to simulate operating a steering wheel, which makes the game easier and more entertaining.

The reason I believe the game is easier is that using the analog stick means using more fingers. This requires a certain type of coordination of the movements of the fingers, as they are used for throwing objects, accelerating, doing tricks, wheelies, and drifting. Moving your arms, or moving the whole body, at the same time while using the fingers seems to require less coordination. At least this is what I’ve observed, especially in children, as they tend to move the whole body even when using a "classic" controller when steering. Using gestures might be less precise than using an analog stick, but requires generally more training/experience.

Another example is Wii Sports πŸ—„️. Instead of using buttons and an analog stick for playing, you swing the Wiimote around. If you play tennis, swinging the Wiimote as if it were a racket is much more fun than pressing buttons.

If you play bowling, doing the usual movement is more natural than clicking on buttons.

In both cases, it is more intuitive to understand when and for how long you have to do a certain movement instead of when you have to click one or more buttons and move the stick.

This is not to say that for games, some form of gestures is always better. There are many games with gestures where gamers worked hard to create patches πŸ—„️ for playing with classic controllers on the original hardware instead of moving the Wiimote around, as they believe it makes the game better.

For actions like unlocking a lock-screen or deleting a notification, the gesture implemented on the phone has little to no resemblance to a similar action done in the "real world", thus it does not feel that natural or is as error-free.

Some smart TVs use a remote that resembles the Wii Remote. In this case, I find the "classic" remote is generally easier to use; you do not even need to point exactly at the screen for selecting the channel or changing a setting, while with a Wii-like remote, chances of misclicking are, in general, higher. I guess that after a certain screen size, pointing controllers are not that practical.

I am also not claiming that all gestures are bad. I find, for example, pinch and zoom for zooming in and out intuitive, although it is not something one does in "real life". The rotate gesture is another gesture I find intuitive and is also something one does in real life when rotating a relatively small object.

Icons

Icons with a given meaning

Some icons have a meaning that is more or less universally understood.

For example, a floppy disk is for saving data.

You can change those symbols in your application, but you should not.

For example, the Tango project πŸ—„️ uses a disk.

But also a disk is not correct. Many PCs use an SSD. Some devices use SD cards, or something else entirely. Sometimes, you want to save the data on a USB stick, a remote device (via sshfs, samba, etc.), or in RAM with a tmpfs virtual disk.

The exact same arguments can be made for the floppy icon, especially since nearly no one uses floppies anymore. But the floppy as a save icon, without even knowing the origin, is understood, it has momentum, and it is used by most, if not all, user interfaces: Windows, Gnome, KDE, etc. An "Hard drive with an arrow pointing onto it" is not as well understood; it creates unnecessary friction.

There is little reason to use a different symbol.

Too many details

I remember when Ubuntu changed the icon of its software center at the end of 2011, and how strange it looked.

The issue was that it contained too many little details. Plus, no other icon of the Ubuntu system used the same style, so this inconsistency stood out a lot.

I was not the only one unconvinced πŸ—„️ by the, at the time, new icon. After a couple of years, it changed again. The new one looks better, although I still prefer the first revision, but maybe it’s just nostalgia:

icon ubuntu software center
Figure 29. Ubuntu Software Center icons

What the "A" stands for is not obvious; it’s the Software Center; I assume it stands for Applications?

Honestly, I do not find the icons of other stores, like Google Play Store (a colored triangle, which I assume should resemble the Play icon of a player), the Microsoft Store (a white paper bag with the Windows logo), or the Apple Store (an A on a blue background) necessarily better, as none of them depicts a store, a kiosk, a Gumball machine, a snack vending machine, or another place where you buy thinngs. Maybe something with a shopping cart, like many online stores do (or did)?

Secure and insecure content

Sometimes our system has to interact with external resources, like emails, web pages, or USB sticks.

Those are often considered insecure; if not handled with care, an attacker can gain access to the system.

It is important for components dealing with those resources to help the user identify and mitigate possible risks.

On the monitor

Normally, it is easy to distinguish where the content of a program begins and ends.

For example, in a text editor like Notepad, there is the title bar, the menu, a textual representation of the content of the file, and a status line at the bottom.

notepad
Figure 30. Notepad

An image viewer, or editor, is already more subtle. If the image is a screenshot of an application, you might confuse, for example, the close button shown in the image with a real close button, and try to click on it. If this happens, you might look at the monitor, confused for a moment, then realize your error, and click where you wanted to click.

secure content inception paint
Figure 31. Inception in paint

Normally, nothing bad happens because an image is not interactive. The worst-case scenario is that you have modified the image, but you can undo that with Ctrl+Z, and if you have closed the image, then you can open it again.

In a browser, with dynamic content, the situation is much more problematic.

The main reason is that it is hard, if not impossible, to determine what looks like a program on top of the browser is actually a separate program, or something rendered inside the browser.

This is not something novel; even when Windows XP with Internet Explorer 6 was the most used system, there were websites that were similar to Windows XP dialogs with some warnings, trying to convince the user to click on it.

At the time, it was relatively easy to recognize them; the dialogs could not be moved, and people spent less time with the browser open all the time. Today, the browser is almost always running, and websites are much more interactive. The "Browser In The Browser (BITB) Attack" πŸ—„️ is also more sophisticated.

Unfortunately, as far as I know, there is no automated mitigation in Firefox, Chrome, or any other browser.

The only way to detect such an attack is to move the presumed windows around; if it cannot be moved outside of the browser, then it’s not a real application. Unfortunately, when functionalities like Kiosk Mode are enabled, where the browser runs full-screen, there is, to my knowledge, no way to be certain.

There is this concept of line of death πŸ—„️, an area where the user can trust is secure, but as the article points out, future features (in the meantime available) reduce that to 0.

This guide on Qubes πŸ—„️, an operating system that uses Virtual Machines to create isolated environmens, shows the security implications of fullscreen mode, which are similar to those of the browser.

Through the keyboard

On Windows, programs cannot intercept the keyboard combination Ctrl+Alt+Del.

Thus if you end in a situation where you do not know if you can trust what is shown to you (are you looking at an image? an actual program, a webpage simulating your computer? a remote connection to another machine? a virtual machine on your system) you can use Ctrl+Alt+Del to exit from such a situation.

This is also a reason why Ctrl+Alt+Del is used for logging in πŸ—„️ , unless disabled.

Unfortunately, even if it cannot be bypassed, I believe it currently does not help much in most situations.

If the user sets up a login mask where you can directly insert username and password, I do not think that most people would press Ctrl+Alt+Del out of habit before inserting the login credentials.

3D effects

Gratuitous 3D effects

Those who used to install Linux distributions 20 years ago will surely remember the project Compiz πŸ—„️, which brought advanced 3d effects and animations to the desktop.[

Microsoft also released with Windows Vista, in 2006, some fancy 3D effects, in particular, it added the ⊞ Win+Tab β†Ή shortcut for activating Windows Flip 3D πŸ—„️ as an alternative to Alt+Tab β†Ή. Contrary to the Windows Flip, the windows are organized in a three-dimensional stack.

While it had a certain "wow" effect, Windows Flip 3D is, from a usability perspective, worse than the improved Windows Flip of Windows Vista. In particular, in Windows Flip 3D most of the content of the windows is covered by the other windows that come first in the stack, while with the improved Windows Flip, the whole content is visible.

Granted, when switching between different programs, this is not problematic, but if there are multiple instances of the same application, it makes a big difference.

Another disadvantage is that with Windows Flip 3D to select the Window one has to bring it to the first position of the stack, while with Windows Flip one can click with the mouse directly on the desired window, without iterating through them all. Thus, if there are a lot of open programs, with Alt+Tab β†Ή it is faster to switch to the desired program compared to ⊞ Win+Tab β†Ή.

Third, but not last, to select elements on Windows Flip 3D, one cannot use the arrow buttons, while they can be used on Windows Flip.

While some drawbacks can be fixed, I suppose there is little reason for having two different ways for switching applications, and the two-dimensional version is much more practical. Windows Flip 3D has been removed since Windows 7, and ⊞ Win+Tab β†Ή behaves more similarly to Alt+Tab β†Ή.

Another example of gratuitous 3D effects is the parallax effect introduced in iOS 7 in 2013.

I remember that someone told me they got nauseated for this effect; they were not the only one πŸ—„️, although it is hard to state how many people are affected. At the end of the day, I do not think it improves the user experience, similarly to how Windows Flip 3D did not. It might be something that looks impressive, but there is no new functionality; at best, you will not notice the effect anymore after a while.

Unfortunately, even if it does not make you feel sick, to this day it is not possible to disable this effect completely, but only reduce it πŸ—„️.

Minor 3D effects

Minor 3D effects can improve the usability; the most obvious examples are the button layouts.

When the button is not pressed, it stands out. While the button is pressed, it goes down.

In older programs, it is less common to have a search dialog inside the application, for example, in the settings page.

It is a useful addition, although I fear it might be used as an excuse for unorganized menus or making gratuitous changes between versions.

Contrast

There are multiple resources, especially for webpages, that explain how contrast is important to improve legibility; for example, on

There are different tools, especially for webpages, for testing if the contrast is high enough, like the Accessibility Inspector in Firefox πŸ—„️ or an online service like the WAVE Web Accessibility Evaluation Tools.

I wonder if there is a tool that can be run locally to also evaluate native programs, and if not, something that can at least evaluate images.

Dark patterns

Dark patterns are patterns that try to convince you to do something against your interest.

Invisible buttons

I’m accustomed to the fact that many websites try to deceive you.

Most will ask you to store cookies and other metadata, and since some websites break if you do not accept them, I usually just accept everything and delete the data once the session is closed. Except for a short list of websites, I am really not interested in a personalized experience or having an account. I believe that fighting every website, one by one, is a waste of time. With addons for the browser, it is possible to automate this task for most, if not all, websites.

But for applications on the phone, I have no such mechanism. Recently, I noticed the following dialog when opening the application of kleinanzeigen.de on a phone where I just installed the application:

dark pattern button kleinanzeigen
Figure 32. Explorer

I missed it every time, and I still do. There are three buttons, not two:

  • "Einverstanden", which translates to "Accept"

  • "Datenschutzeinstellungen", which translates to "Privacy Settings", leads to a page where you can toggle all single settings on or off

  • "Ablehnen", which is "Reject", and is for not sharing any data

Obviously, there are thousands of other examples. I opened the first website that popped into my mind; let’s see what Facebook does:

dark pattern button facebook
Figure 33. Facebook cookie prompt dialog on its main page

If you do not read the text carefully, you’ll probably click on "Allow all cookies", even if it is not in your best interest. Although I have to admit that both buttons are recognizable.

I clicked on the cookie policy page, and there it is:

dark pattern button facebook 2
Figure 34. Facebook cookie prompt dialog on the cookie policy page

The button for declining cookies does not even have a grey-on-white background, just like the app of kleinanzeigen.de!

It’s ironic that I found such an example on a cookie policy page, and it’s sad that I found an example after my first attempt, when I did not even try.

Restoring settings

It happens more often that the choices the users made in the past are questioned from time to time.

If you disable a service, you’ll get reminders.

Sometimes there is not even a button labeled "No", but a "Remind me later".

On Android, Google asks multiple times to configure an online account. On Windows, Microsoft does something similar with OneDrive. On iOS, if you do not configure an account, you are constantly reminded to configure it.

Also, it is not unusual that updates can bring new functionality. What’s irritating is when updates enable functionalities that the user disabled.

For example, Thunderbird enabled its User-Agent header after an update, even if it was explicitly disabled.


1. You should also disallow the execution of certain file name patterns. And if you want to go an extra mile, but it will break some programs, you should disallow the execution of executable files with a double-click.
2. Thank God Wikipedia is editable

If you have questions, comments, or found typos, the notes are not clear, or there are some errors; then just contact me.