Ethan Glasser-Camp


This howto covers human-computer interaction, specifically the use of HCI techniques to analyze an interface. It covers the use of the cognitive walkthrough technique to analyze learnability by exploration, and the KLM-GOMS technique to analyze the speed of use by an expert.


HCI is the field of Human-Computer Interaction, the field of studying how human beings interact with computers, and studying interfaces between humans and computers. A huge area of study in this field is the area of trying to optimize human interaction with computers, which means making "the best interfaces". This HOWTO covers HCI from a Linux programmer's point of view.

What is an "interface"? An interface is the location at which the user ends and the device begins. Put differently, the interface is the way that the device presents itself to the user. For Mozilla, the interface includes everything from the buttons to go back, to go forward, the box to type in a URL, through to the scrollbars and clicking on a link to travel to them, straight down to the nifty feature where it opens the link in a new window/tab if you middle-click. For C, the interface includes things like malloc() and free() as well as things like the struct feature. gcc's interface includes -O and -Wall, and how long it takes to compile things.

The purpose of this HOWTO is not to tell you which criteria to use to judge how good an interface is -- that depends on the application and the user. The purpose of this HOWTO is to explain two tools you can use to assess interfaces: the cognitive walkthrough and KLM-GOMS.


Copyright © 2004 by Ethan Glasser-Camp. This work is licensed under a Attribution-ShareAlike CreativeCommons license. This means that you are free:

  • to copy, distribute, display, and perform the work

  • to make derivative works

  • to make commercial use of the work

Under the following conditions:

  • Attribution. You must give the original author credit.

  • Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one.

  • For any reuse or distribution, you must make clear to others the license terms of this work.

  • Any of these conditions can be waived if you get permission from the author.

The terms of the license are available at Creative Commons.


Use the information in this document at your own risk. I disavow any potential liability for the contents of this document. Use of the concepts, examples, and/or other content of this document is entirely at your own risk.

All copyrights are owned by their owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark.

Naming of particular products or brands should not be seen as endorsements.

You are strongly recommended to take a backup of your system before major installation and backups at regular intervals.


2007 Jan 22: Minor revisions (email), bring back online. I had some changes shown in SVN that might not have ever made it to the web; I vaguely recall that I was still unhappy with this document, so it probably still sucks. Be warned.

2005 Jan 12: Rahul Sundaram thinks the document is too in-depth for casual readers. That makes me sad. As a result I'm working on adding more material for casual readers.

2004 Oct 18: Small alterations -- qualified that cognitive walkthrough isn't *the* softest analytical technique there is, based on Professor Gray's advice, as it's certainly a lot less soft than what they teach in my Software Design and Documentation course; tried to clear up why I was dissecting dselect and why it really doesn't deserve a flame war. Going to email to the submit list!

2004 July 28: Draft version 1.0 finished. Performing proofread now, and then submission will happen!

2004 Jul 15: Posted this to my homepage to begin soliciting feedback. KLM-GOMS section proclaimed approximately done.

2004 Jun 16: After months of deliberation, I submitted a proposal to the LDP and it got accepted. Happy day!


Thanks to the people on the LDP that responded within minutes with encouraging remarks.

Thanks for Professor Gray's class on Cognitive Engineering for all the information I present here, for really kindling my interest in the HCI field, and for looking over the document for problems.


No translations yet.

Blue Sky design by Jonas John.