The worst type of usability?

There is one type of interface that could be considered the most egregious form of usability. The physical device with no interface that relies on an app on a mobile device and Wi-Fi to control it.

It’s not that there is anything wrong with the idea in principle, but people still like some form of interface on machines, they don’t want to have to rely on having to use a phone to control a device. A good example is the now defunct Juicero juicer. The US$400 machine used proprietary “produce packs”, which are basically just sachets of pre-chopped fruit and vegetables, which is then juiced via “squeezing plates” to produce cold-pressed juice. Turns out the machines themselves had elaborately designed engineering which allowed them to produce the same thing as squeezing the sachet with your hands.

The thing is there’s nothing really that elaborate about this device, it doesn’t really need an interface at all, just a power switch, and a second button to activate the sachet squeezing. Not rocket science. But the machine wouldn’t work without an app, and wi-fi – so no wi-fi, no juice. If anything can be learned from this usability goof, it’s that you should never require internet connectivity for local functionality. Like ever.

This poor example aside, I do understand why companies opt for this approach. It makes devices less expensive (theoretically), and it makes it easier to upgrade the interface on the app. The downside is that the most basic features transition from the machine to the app, so a phone is always required. I have an ANOVA Sous Vide machine, which also uses an app, via blue-tooth – but the app provides enhanced functionality, and I can still control the device without the app. The GINA coffee maker is another device that comes with a “smart” version. It allows for the use of a built-in Bluetooth scale, so the amount of coffee and water added can be controlled. This app-controlled scale has lead to somewhat of a discord from some reviewers who note that it is quite inconvenient to have to reach for a phone every time they want to make a coffee. It’s easy to add a small interface for a scale – all it really needs to show is weight, and have some ability to flip between grams and ounces.

The overall lesson to be learned here is that hardware devices should always have their own controls built in. It’s bad enough when TV manufacturers decide that the TV only needs an on/off switch, and provide no other functionality, except for a remote. I mean what’s next? A kitchen faucet which you can’t control without an app?

further reading:

Half empty or half full?

“Pessimists, we’re told, look at a glass containing 50% air and 50% water and see it as half empty. Optimists, in contrast, see it as half full. Computer scientists of course consider the water and air to be objects, and as both objects exist, they both contribute to filling up the glass, and therefore the glass is considered full.”


Why is software (usability) so horrible?

If you look around the world we live in, it’s surprising how much terrible software there is. Or maybe it isn’t (surprising that is). A lot of software is just awful, from apps for mobile devices, to point-of-sale systems, transit portals, web software… the list goes on. Why is it so bad? Mostly it is down to poor user experiences, or things that just don’t work. You might expect this from 2-bit software companies, but much of this terrible software comes from multi-billion dollar companies.

The other day I tried to buy some items from Home Depot, for delivery. Now HD, like many other companies don’t seem to have a very coherent strategy for delivery. I understand good delivery requires exceptional logistics, and central warehouses, but it seems like HD have taken another route – they deliver items either from a central facility, sometimes the US, and often from the local store. Frankly they make it hard to buy some items (and I’m not buying lumber). When I had put my items in the shopping cart, I ended up with one item which required Express Delivery, and another two which required Standard Delivery. The problem was that when I tried to checkout, it told me that one item was not able to be shipped to my postal code. Not which item, just one item. I tried 101 things that just didn’t work but if I ordered the items with different shipping types in separate transactions, it worked. The irony is that both orders were delivered at the same time (by Doordash no less). They’re not the only company with idiotic interface interactions, Canadian Tire isn’t much better.

Another great example are some of the apps available for streaming services. For some of them usability is just horrible. Take Netflix for example. Netflix was one of the first to offer streaming, and it shows because the user interface is tired. I use the Apple TV interface where they provide a menu to the left, which is convenient, and different categories, but there is a lot lacking. The first real issue is that the categories appear as a vertical scroll, requiring the user to then scroll horizontally to view the items in a category. This would be way better if there was the ability to actually select a category and have it populate the screen. There should also be a way for the user to select the categories that they wish to view on a regular basis, as scrolling through them all is tiresome. Maybe provide an option where just the category names appear, and you can select one. I understand that showing everything is useful for the company, but it creates a usability block.

The other thing lacking from Netflix, which some others streaming services provide is a set of similar shows below that which you have chosen, either from a similar genre, or shows that other people have watched (like Prime). Lastly, there is the issue of searching. When you search for an item, it would be nice if the only results show are those that match the criteria closely. Don’t provide other things, and don’t provide search criteria that make it seem like the shows exist. It might even be nice to be able to search by title or keyword.

Software usability isn’t hard, I mean some companies seem to do quite a good job. After many years of companies dabbling in self-checkouts, they seem to work quite well now, but it seems to have been a long learning curve. Companies forget that it’s not about what they think users want, it’s about the tools the user needs in order to have a good experience. I think many companies don’t even think about usability until it becomes an issue, likely because they staff have little or no knowledge when it comes to usability design. Some companies like SquareSpace and Grocer Box have done quite well, maybe because they actually have a clue about designing and usability?

Or perhaps the fault lies with the computer science programs. Are not enough students taking courses on HCI, or are the courses themselves too focused on theoretical concepts. Or perhaps the concept of design is too foreign for a good portion of CS students, requiring a different mindset: in many CS programs students learn to work on well-defined coding problems, whereas design problems are often less well defined, often with no clear solutions. Sometimes the courses themselves are just boring, because they concentrate far too much on “classic” screen HCI, and forget other forms of interface.

Everyone has to do better, and maybe someday the software community will produce software with interfaces that are intuitive and easy for everyone to use, instead of treating the way we interact with software as an afterthought.

Dȳkstra on the difficulty of recursion

“I learned a second lesson in the 60’s, when I taught a course on programming to sophomores, and discovered to my surprise that 10% of my audience had the greatest difficulty in coping with the concept of recursive procedures. I was surprised because I knew that the concept of recursion was not difficult. Walking with my five-year old son through Eindhoven, he suddenly said ‘Dad, not every boat has a life-boat, has it?’ ‘How come?’ I said. ‘Well, the life-boat could have a smaller life-boat, but then that would be without one.’ It turned out that the students with problems were those who had had prior exposure to FORTRAN, and the source of their difficulties was not that FORTRAN did not permit recursion, but that they had not been taught to distinguish between the definition of a programming language and its implementation and that their only handle on the semantics was trying to visualize what happened during program execution. Their only way of ‘understanding’ recursion was to implement it, something of course they could not do.”

E. W. Dȳkstra, “Computing Science: Achievements and Challenges”, EWD1284-0 (1999)

Computer science pioneers: Andrei P. Ershov

We as computer scientists probably know far too little about the history of the pioneers of computer science. Beyond a few prominent names (usually American), students know little of the myriad of people that created the field of computer science.

One interesting individual is Andrei Ershov (1931-1988). Born in Moscow in 1931, Ershov was a pioneer in systems programming and programming languages. Erchov graduated from Lomonsov University in 1954. Although striking a friendship with John McCarthy, and travelling often, Ershov was never able to spend a great amount of time abroad. At home Ershov became a computing expert, working on two large compiler projects: ALPHA and Algol-like language, and BETA, a multi-language environment.

“Programmers constitute the first large group of men whose work
brings them to those limits of human knowledge which are marked by
algorithmically unsolvable problems and which touch upon deeply secret
aspects of the human brain.”

A.P. Ershov, Aesthetics and the Human Factor in Programming, CACM 15(7), 1972

further reading:

  • IEEE Computer Pioneers – Andrei Petrovich Ershov
  • Kraineva, I., Cheremnykh, N., “Academician Andrei Ershov and his archive”, in IFIP AICT pp.117-125 (2011)

Ershov on programmers

“In his work, the programmer is challenged to combine, with the ability of a first-class mathematician to deal in logical abstractions, a more practical, a more Edisonian talent, enabling him to build useful engines out of zeros and ones, alone. He must join the accuracy of a bank clerk with the acumen of a scout, and to these add the powers of fantasy of an author of detective stories and the sober practicality of a businessman. To top all this off, he must have a taste for collective work and a feeling for the corporate interests of his employer.”

A.P. Ershov, Aesthetics and the Human Factor in Programming, CACM 15(7), 1972

Dijkstra’s view of Ada

“Just when the computing science community has agreed that simplicity is an essential ingredient of reliability, the DoD adopts Ada! What more can I say? When the late Andrei Erchov from Novosibirsk asked me my opinion about Ada, I told him that I shuddered at the thought that Western security would depend on it and that I would feel much better if I knew that the Red army had adopted Ada as well. Andrei smiled and said ‘Don’t worry.'”

Dijkstra, “By way of introduction“, EWD1041(1989)

Dȳkstra on Lisp

“At the time LISP’s radical novelties were for instance recognized by its characterization as ‘the most intelligent way of misusing a computer’, in retrospect we see its radical novelty because it was what is now known as a language for ‘functional programming’, while now, 40 years later functional programming is still considered in many CS departments as something much too fancy, too sophisticated to be taught to undergraduates.”

E. W. Dȳkstra, “Computing Science: Achievements and Challenges”, EWD1284-0 (1999)

(And things haven’t changed much in the two decades since Dȳkstra wrote this)