"Real Artists Ship"

Colin Johnson’s blog

Archive for the ‘Human-Computer Interaction’ Category

On Responsibility

Sunday, December 30th, 2018

When people collaborate on a codebase to build complex software systems, one of the purported advantages is that fixes spread. It is good to fix or improve something at a high level of abstraction, because then that fix not only helps your own code, but also redounds to improvements in code across the codebase.

However, people often don’t do this. Rather than fixing a problem with some class high up in the class hierarchy, or adding some behaviour to a well-used utility function, they instead write their own, local, often over-specialised version of it.

Why does this happen? One theory is about fear of breaking things. The fix you make might be right for you, but who knows what other changes it will have? The code’s intended functionality might be very well documented, but perhaps people are using abstruse features of a particular implementation to achieve something in their own code. In theory this shouldn’t happen, but in practice the risk:reward ratio is skewed towards not doing the fix.

Another reason—first pointed out to me by Hila Peleg—is that once you have fixed it, your name is in the version control system as the most recent modifier of the code. This often means that the code becomes your de facto responsibility, and questions about it then come to you. Particularly with a large code base and a piece of code that is well used, you end up taking on a large job that you hadn’t asked for, just for the sake of fixing a minor problem in your code. Better to write your own version and duck that responsibility.

Kruft (1)

Sunday, November 20th, 2016

I often refer to the process of taking the content that I want to communicate and putting it into the 200-by-300 pixel box reserved for content in the middle of our University’s webpages as “putting the clutter in”. I get the impression that my colleagues on the Marketing and Communication team don’t quite see it this way.

Autocomplete Fail (1)

Monday, March 9th, 2015

I regularly use Skype to discuss technical issues with colleagues. As part of this we sometimes post code to each other using the Skype chat window. Something that I had forgotten is that certain strings of text—particularly those contained in parentheses—get automatically converted into smilies. As a result, occasionally this happens:

Code with a smiley in the middle.

Uh-oh (1)

Tuesday, November 11th, 2014

From a colleague’s email: “SharePoint is very precise and there is plenty of room for human error to interfere with the workflows.” Uh-oh.

The Extensional Revolution

Wednesday, July 16th, 2014

We are on the threshold of an extensional revolution.

Philosophers draw a distinction between two ways of describing collections of objects. Intensional descriptions give some abstract definition, whereas extensional descriptions list all examples. For example, consider the difference between “the set of all polyhedra that can be made by joining together a number of identical, regular, convex polygons with the same number of polygons meeting at each vertex” (intensional), and “the set {tetrahedron, cube, octahedron, dodecahedron, icosahedron}” (extensional).

Despite its claims to be (amongst other things) the science of data, computer science has been very intensional in its thinking. Programs are treated as realisations of descriptive specifications, satisfying certain mathematically-described properties.

As more data becomes available, we can start to think about doing things in an extensional way. The combination of approximate matching + the availability of large numbers of examples is a very powerful paradigm for doing computing. We have started to see this already in some areas. Machine translation of natural language is a great example. For years, translation was dominated by attempts to produce even more complex models of language, with the idea that eventually these models would be able to represent the translation process. More recently, the dominant model has been “statistical language translation”, where correlations between large scale translated corpora are used to make decisions about how a particular phrase is to be translated. Instead of feeding the phrase to be translated through some engine that breaks it down and translates it via some complex human-built model, a large number of approximations and analogies are found in a corpus and the most dominant comparison used. (I oversimplify, of course).

More simply, we can see how a task like spellchecking can be carried out by sheer force of data. If I am prevaricating between two possible spellings of a word, I just put them both into Google and see which comes out with the most hits.

Once you start thinking extensionally, different approaches to complex problems start appearing. Could visual recognition problems be solved not by trying to find the features within the image that are relevant, but by finding the all the images from a vast collection (like Flickr) that approximately match the target, and then processing the metadata? Could a problem like robot navigation or the self-driving car be solved by taking a vast collection of human-guided trajectories and just picking the closest one second-by-second (perhaps this corpus could be gained from a game, or from monitoring a lot of car journeys)? Can we turn mathematical problems from manipulations of definitions into investigations driven by artificially created data (at least for a first cut)?

The possibilities appear endless.

Lists (1)

Friday, December 13th, 2013

Quick question: What is selected on this list:


No, I don’t know either…

3/5 ≠ 0.6

Monday, September 30th, 2013

Apple’s Pages word processor tries to be clever and anticipatory. When you create a table, by default cells in it are created as spreadsheet-like cells, rather than the text format that you might expect from a word processor. Furthermore, the type of the cells is “automatic”; that means that it waits until you type, and then determines what type to apply based on that.

I’ve just been using this for student marksheets. Interestingly, if I type a mark like 3/5 it “automatically” assumes that you are typing a date, and converts it to “3rd May 2013”. If you type something like “30/50” it assumes that you are typing a vulgar fraction, and converts it to “0.6”.

This seems to fit into the “too helpful” area of HCI failures.

To Ensure Accuracy

Monday, August 12th, 2013

I occasionally get messages like this whilst trying to type my email address into a web site:

In order to ensure accuracy, you are required to type your e-mail address into this field.

This message is triggered when the auto-fill spots the key-phrase “e-mail” and tries to auto fill in my email.

I wonder which is more accurate? I can see what the motivation for writing this might have been&#8212″oh, the autofill might just grab the wrong field or the wrong entry, so let’s make sure”&#8212″but, equally there are lots of occasions where people can mistype an email address. Furthermore, as has been pointed out on several questions on AskMe, a lot of people surprisingly don’t know their own email address and just vaguely assume that anything with their names and a well-known email suffix will get to them eventually.

You Didn’t Need to Ask that Question (1)

Wednesday, May 15th, 2013

Online questionnaire question: "Have you used the Internet?"

Error (1)

Friday, March 1st, 2013

Bizarre error message (from the Tesco web site):

Web form "Middle initials: G" Error message "not a valid letter"

The Law of the Excluded Middle (1)

Wednesday, February 6th, 2013

Non-confidential and Confidential Papers Only

Grabbing Attention

Sunday, January 8th, 2012

This advertising image is very clever; making use of a very specific visual image (the “number of new emails” graphic from iOS) as a way of drawing the eye to a specific part of the screen.

ad with iOS new mails graphic

There is clearly a balance here. The image is unremarkable as such, but to people who use iOS devices the attentional grab of the image is large, much more so than a generic “look here!” sort of splash. The other side of the balance is that people unfamiliar with those devices will not get any of the advantage. Presumably a really finessed version of this would deliver a personalised version of the image depending on the device being used.

Problems with Online Forms

Wednesday, April 14th, 2010

Increasingly we use online forms; generally, a good thing, efficient and ensuring information doesn’t get lost in transcription. One problem with this, though, is that it is hard to get an understanding of the entire process as an outsider who nonetheless needs to understand the process.

A couple of examples

  • I was writing up a description for students about how to fill in a form for applying for postgraduate studies. The problem was that the form started with a “cover sheet” asking for basic details such as email address and course applied for. Okay, fine; I’ll just fill this in with some mock details and then move onto the next stage. No dice! The next page asked me to “check my email”. In the end I had to go quite a long way through the application process before I had all of the details. By contrast, a printed form would have meant that I could just scan through the whole form.
  • Filling in details of a module on the Moodle online learning support system. Filled it in, looked fine to me. A few days later, got a couple of emails from students: “where are the notes that you said you had put online”. What had happened is that my view as a teacher was different from what the students see; I had to click on a picture of an eye to make the item visible to students. Not a bad system overall, but not obvious if you are used to writing traditional web pages.

Both of these relate to the idea of role management in online systems. They assume that it is easy to put people into a role relative to the system; yes, this is reasonable at some level, but we often need to “leap outside” this on some occasions. This is a difficult issue to sort out.