This page lists my articles on the following topics:

Interaction Design Articles

Copying and Moving Data with the Visible Clipboard

The design of the clipboard used by graphical user interfaces often confuses users because the data that has been copied onto the clipboard is not visible. This article introduces the visible clipboard, a new idiom for copying and moving data that displays the data on the clipboard while it is being copied or moved.

Monitoring the Progress of Optical-Media Tasks with Progress Discs

The progress bars that visualise the progress of tasks that write data to CDs and DVDs are often overloaded with information and lack a visual correspondence with the circular media they represent. This article introduces progress discs, a new user interface more suited to monitoring the progress of optical-media tasks.

Changing Font Size with Direct Manipulation

This article describes a new idiom for changing font size with direct manipulation. An extension to the idiom is also described that provides a mini toolbar for changing other font characteristics, including font name and styles such as bold, italic and underline.

Flexible Input Controls for Humane User Interfaces

Graphical user interfaces provide input controls that constrain input values to meet database integrity and validation rules. Sometimes, however, users need to enter data temporarily that is known to be invalid or not completely accurate. Current software is inflexible because it prevents invalid and uncertain values to be entered temporarily. This article describes flexible input controls, a new idiom that enables user interfaces to be more humane by acknowledging that users need to use invalid and uncertain values. Flexible input controls allow users to enter invalid values, to mark uncertain values, and to attach explanatory annotations to such values.

A Relational Storage Mechanism for Implementing Flexible Input Controls

Users sometimes need to enter invalid values or values they are not sure of. Flexible input controls allow invalid data values to be entered, they enable values that the user is not sure of to be marked as such, and enable the user to make explanatory annotations. This article describes a storage technique for relational databases that bridges the gap between the invalid and uncertain values used by flexible input controls and the strict data integrity and validation rules required by relational databases.

A Filtering Algorithm for Alphabetical List Item Selection

User interfaces often require users to select an item from a list of alphabetical items. The value to be selected might be known in advance, or browsing might be necessary to pick out the correct item. This article describes a method of selecting alphabetical list items that reduces the number of keystrokes and hand movements from keyboard to mouse.

An Analysis of the Street Names in Four U.K. Cities

This article presents the results of an analysis of the 17,327 street names in four U.K. cities: Cambridge, Cardiff, Edinburgh and Oxford. These results can inform the implementers of indexing and filtering algorithms for applications that require the input of street names with the keyboard or by selection with the mouse from a list.

The WebChooser Dialog

File selection dialogs are one of the most commonly used dialogs in applications with graphical user interfaces. The design of current file selection dialogs assumes that the files to be opened are located on the user's local machine. This assumption creates a usability problem when files are published on web pages and FTP servers: users must first download these files separately with a web browser and then open them into the application. This article describes a new file selection dialog called WebChooser that enables users to select files that are published on web pages and FTP servers, as well as files stored on local machines. The WebChooser dialog also generalises file selection to URL selection which increases the range of information that can be selected to include files, email addresses, newsgroups, and web queries.

Drop Buttons—A Compact User Interface for Selecting Data from Multiple Sources

Drop buttons provide a compact user interface for functionality that accepts input from a variety of input sources. Pushing the button pastes data copied onto the clipboard into an application. Dropping data onto the button's label transfers data into an application with a drag and drop operation. Right-clicking the button displays a drop down menu that enables users to invoke file selection and WebChooser dialogs to select files located on the local machine and on the web, respectively, and to invoke other application specific functionality.

A Genetic Algorithm for Feature Labelling in Interactive Applications

This article describes an algorithm for labelling features in interactive applications such as data visualization. In the first phase, a genetic algorithm searches for a set of label positions that minimises the number of labels that overlap features, other labels, or the bounding box of the region to be labelled. The genetic search has a time limit to ensure that interactive software that uses the algorithm is responsive. If there are any overlapping pixels after the genetic search, the second phase of the algorithm makes small adjustments to the position of the overlapping labels to remove the overlaps.

Data Selection with Partition Labels

Partition labels provide a user interface for displaying and interacting with groups of partitioned data. Partition labels enable users to select the items in a partition, transfer the selected items in a drag and drop operation, and change the colour of the partition.

Learning User Preferences to Personalise Smart Card Applications

This article describes how a record of the actions taken with a user interface can be used to personalise it to individual users. The user interface of an Automated Teller Machine is used to show how transaction data stored on a smart card can be used to personalise the order of the options.

Anthropomorphism on Trial

Agents are semi-autonomous software entities that perform tasks on behalf of their users. One of the attributes an agent may possess is anthropomorphism—the projection of human characteristics onto non-human or inanimate objects. As anthropomorphic agents become more common we need to consider what impact they will have on their human users. I put forward a for and against argument drawn from the current literature on anthropomorphism and then look to the future of anthropomorphic agents.

Anthropomorphism and Persuasion

Jeffrey Morgan and Alistair Kilgour

Interface agents are semi-autonomous software entities that perform tasks on behalf of their users. One of the attributes an agent may possess is anthropomorphism. Could an anthropomorphic agent make people believe information that was not true? This article describes an experiment that investigated the effect the source of a piece of information (i.e. person or computer) had on whether people believed it. Eighty subjects completed a multiple-choice comprehension test on World War II. The subjects were given a mixture of true and false information which they were told was produced by a person or a computer. The results showed that the source of the information did not make a statistically significant difference to whether they believed it.

An Evaluation of Modern Writing Tools

This article evaluates how well modern computer-based writing tools support the writing process. The writing tasks that need to be supported by tools are identified and a set of criteria for tools to support writers is developed. Current writing tools are then evaluated against this criteria to determine how well they suppose writers. The article concludes by examining the implications for the design of new software to support writers.

A Conceptual Model for Personalising an Automated Teller Machine

This article introduces a new conceptual model for automated teller machines called the personal bank teller. The disadvantage of the conceptual model users have of current automated teller machines is of an inflexible mechanical replacement for a bank teller. The personal bank teller aims to personalise automated teller machines by controlling the options that are offered and the order in which they are displayed, and by insulating the user from the differences between domestic and international automated teller machines. Design considerations for an implementation of personal bank tellers are discussed.

Prototyping a User Interface for the ELF Information Browser

This article describes the design, prototyping and evaluation of a user interface for the Electronic Learning Facilitator, an intelligent assistant for researchers browsing the ISLE Object Store. After outlining an initial user interface based on a filing cabinet metaphor, this article describes a prototype user interface inspired by the SuperBook structured browsing and retrieval system.

A Modal Kitchen Timer With Great User Interaction Design

This article describes the interaction design of my kitchen timer. The designers have paid attention to how the timer will be used as well as to how it works, and despite ignoring the conventional wisdom that eschews modal interfaces—the timer has several modes and overloads every button—the interaction is natural and easy to use.

Visualization Articles

Requirements for Visualization Software

This document reviews the problems with current visualization software and develops four groups of requirements for visualization software: hardware and software requirements, user requirements, visualization researcher requirements, and visualization developer requirements. I believe that meeting these requirements will produce visualization software that will be effective, flexible, highly usable, and fast and easy to implement.

The Document Visualizer

The imprecise matching algorithms used by information retrieval systems return results that may not be relevant and users need to evaluate them for relevance. This article describes the Document Visualizer, a prototype document visualization tool that supports the results evaluation task by presenting search terms and document similarities in four visual styles: bar charts, matrix charts, a scatter plot, and a document map. Users are able to explore the documents with dynamic query and interactive sorting facilities, and document details are available on demand.

The Space Filler Explorer

This article describes the Space Filler Explorer, an application for navigating around hierarchical filing systems with three co-ordinated views: a directory tree structure, a list of files, and a tree-map visualization of the files. A tree-map is a 2D space filling representation of a complex hierarchical tree structure. Each file is visualized by a rectangle proportional to its size that enables users to identify rapidly large files. Users can dynamically query the tree-map visualization to filter out files based on their size using several relational operators. A pie chart visualization of disk space usage is also provided.

The Expanding Table—A User Interface Control for Visualizing Tabular Data

This article describes the Expanding Table, a tabular user interface component that enables table cells to expand and contract with smooth animation. The Expanding Table can be used for visualization and browsing applications, and when the user interface component for editing table cell values would make a table prohibitively large. The Expanding Table enables users to expand and contract rows and cells by dragging and provides fisheye views of cells and rows. This article also presents the Expanding Calendar, an example application of the Expanding Table.

Visualizing Information Retrieval Search Results with Document Maps (PDF)

Jeffrey Morgan and Greg Michaelson

A typical set of information retrieval search results will contain relevant and irrelevant results, and users must evaluate them to find the relevant ones. Document maps (DMs), a novel visualization technique based on mapping document similarity to spatial proximity, overcomes the problems of information overload and the weaknesses of linear presentations in results evaluation. DMs are presented and evaluated against five other presentation styles for IR search results. Although DM users were not faster than the other users for search item tasks, they were significantly faster for document similarity tasks. DM users achieved the same high degree of accuracy as the users of the other presentation styles for both types of task. The DM also achieved high subjective ratings indicating it is easy to learn and use and suitable for supporting the results evaluation task.

A Comparative Evaluation of Tabular and Graphical Presentation Styles for Information Retrieval Search Results (PDF)

Jeffrey Morgan and Greg Michaelson

There has been considerable debate about the relative merits of tabular and graphical presentation styles but experimental results are contradictory. One source of these inconsistencies might lie in mismatches between spatial/symbolic tasks and symbolic/spatial presentations. A comparative evaluation of tabular and graphical presentation styles for information retrieval search results was conducted, where spatial or symbolic data retrieval tasks were matched with appropriate spatial or symbolic data presentations. However, when sixty participants performed ten presentation-matched information retrieval tasks, no performance advantages were observed. We suggest that an additional dimension of data relevance to task takes precedence over the match between task and presentation.

The Design and Evaluation of Six Presentation Styles for Information Retrieval Search Results (PDF)

Jeffrey Morgan and Greg Michaelson

The linear list presentation of results used by most information retrieval systems does not help the user to evaluate the results for relevance. Five alternative presentations, one tabular and four graphical, were designed and implemented. Three of the graphical presentations, bar charts, matrix charts, and scatter plots were existing techniques. The fourth, document maps, was a new visualization developed to address the weaknesses of the existing techniques for supporting the results evaluation task. A comparative evaluation found that users of the tabular and graphical presentations performed results evaluation tasks significantly faster and significantly more accurately than the users of the linear list. No overall difference was found between the tabular and graphical presentations, contradicting previous research. The document map users performed document similarity tasks significantly faster than, and with the same high degree of accuracy as, the users of the other tabular and graphical presentations. Furthermore, the document map received the highest subjective usability rating.

Visualizing Web Cache Resources with 3D Virtual Worlds

Hamish Taylor, Jeffrey Morgan and Nick Burton

VORTICES is a novel visual resource discovery tool that enables users to create 3D visualizations of web cache data. Users query a cache resource database with an HTML query form and the results are visualized in two new visualizations styles. The cities visualization presents cache resources as groups of skyscraper blocks floating in a virtual world. The cactals visualization represents cache resources as groups of tree structures. Queries and visualizations are also cached and made available to users. VORTICES has a four-tier architecture that marks up in SGML the data in a Squid cache and stores it in a Zebra Z39.50 database, and generates VRML visualizations of query results.

Visual Filtering of Search Results with Document Maps

Document maps are a new visualization tool that help users filter information retrieval search results. Documents are compactly represented by a square matrix that presents document similarity and frequently occurring search items. Evaluation has shown that document maps enable users to filter search results quickly and accurately.

A Diagonal Layout Algorithm for Matrices

This article describes an algorithm for laying out a list of items diagonally in a square, or nearly square, matrix. The algorithm provides a method for compactly arranging sorted items using proximity and has been used to visualise document similarity data. A Java implementation of the algorithm is presented.

The Hierarchy Editor Tool

One of the types of information that the Document and Code Knowledge Elicitation Toolset (DOCKET) project needs to capture are the hierarchies that exist in systems. This article describes the hierarchy editor tool developed to input hierarchical information into DOCKET. A hierarchy type definition system was developed to enable the generic hierarchy editor to be configured to edit different types of hierarchy.

Information Retrieval Articles

Improving Information Retrieval System Performance with Concepts

The goal of an information retrieval system is to maximise the number of relevant documents returned for each query. Keyword information retrieval systems often return a proportion of irrelevant documents because matching keywords is imprecise: words can have different meanings when used in different contexts, and a single idea can often be expressed by several different words or synonyms. Information retrieval systems can be made more precise by matching concepts, keywords for which the intended meaning has been identified, either with information from a lexicographic database in the case of documents, or by asking the user to choose one meaning from several possible meanings in the case of queries. This article describes the algorithms and data structures needed to implement a concept IR system, how concepts can be used to enhance keyword queries, and describes a prototype user interface for a concept information retrieval system.

Evaluation of a Genetic Algorithm for Modelling User Interests in an Information Retrieval Support System

This article describes the implementation and evaluation of a genetic-algorithm-based user interest model for information retrieval systems. The objective was to support information retrieval system users by automatically making suggestions of relevant information. Suggesting relevant information would alleviate the need for users to construct queries to retrieve that information. To be able to make relevant suggestions a user interest model was developed. User interests change over time so the user interest model had to be able to learn new user interests and adapt as they change.

Personalising On-Line Information Retrieval Support with a Genetic Algorithm

A genetic algorithm is described that models changing user interests in an on-line information retrieval support system. User interests are represented as a population of queries which are issued to a World-Wide Web search engine. User feedback on the queries and their results provides the fitness of each query. A single point crossover operator recombines query terms and two mutation operators replace query terms with randomly selected words and their synonyms, respectively. Initial user testing has shown that the GA approach is more effective in a simple learning task than a non-GA approach.

Personalising Information Retrieval using Evolutionary Modelling

Jeffrey Morgan and Alistair Kilgour

Researchers and students need information retrieval tools that will support them in their work. To provide effective support, such tools must be able to track changing interests and automatically suggest new, possibly unrelated, information that might be helpful. An approach to representing a user interest profile using an evolutionary model, a form of genetic algorithm, is described. The profile is maintained with user feedback and genetic operators and initial testing with a database of academic journal abstracts has found this to be a promising technique.

Geolocation Articles

Serving Location-Specific Content with IP Geolocation

Geolocation is the process of finding the geographical location of a website visitor. This article explains how finding the continent, country, region and city of website visitors enables websites to serve location-specific content.

Optimising IP Geolocation Data

This article explains how to optimise the IP to Country data files used to create the SQL database of an IP geolocator.

Image Processing Articles

A Glossary of Image-Processing Terms

This article provides a glossary of terms used in image processing, the field of computer science that develops techniques for enhancing digital images to make them more enjoyable to look at, and easier to analyse by computers as well as humans.

Web Articles

The IxD Bookshop Website

The Interaction Design (IxD) Bookshop is a simple, uncluttered and easy-to-use website for buying the best books on interaction design, usability testing, human-computer interaction and human factors from Amazon. The IxD Bookshop uses knowledge of the interaction design field to perform targeted searches that give customers highly relevant results. An incremental multi-search interface displays and updates suggestions as customers type in the search box. The incremental search suggestions include books that match the search, books written by authors that match the search, and frequently issued queries that match the search. The IxD Bookshop helps customers manage their shopping cart by displaying the contents of the cart on every page.

Reducing Internet Traffic by Packaging Multiple HTTP Requests

Downloading a web page can produce many HTTP requests. An HTTP request is made for the HTML of the web page itself and a subsequent request is made for each image, audio clip, and other multimedia content referenced in the HTML. This article describes a method of packaging multiple HTTP requests into a single request to reduce Internet traffic. The trade-off is that web servers that service multiple HTTP request packages must package the requested content before delivery to web browsers which must then unpack the content.

Enhancing Browsers with Web Page Levels of Detail

Web pages can be viewed at different levels of detail depending on how much information is required. This article describes six levels of detail and explains how they can be used to implement three browser enhancements: enhanced link tool tips, navigation maps, and pre-emptive page downloading.

Reducing Perceived Download Time with Web Page Pre-Emption

Users often experience a delay between clicking on a link to request a web page and the presentation of the page in the browser. This article describes web page pre-emption, a browser-based method of decreasing the download delays perceived by users, and presents five strategies for selecting which pages to pre-emptively download.

Java Articles

An XML Language for Describing Java Resource Bundles

The resources of a Java application that need to change when it is localised are stored in a Java ResourceBundle class. Hand-coding a ResourceBundle class can be difficult and time consuming, especially for non-textual resources. This article describes an XML language for describing the resources required by a Java application. The XML language simplifies the task of describing textual and byte-encoded resources, such as icons and audio clips, and enables the source code for the corresponding ResourceBundle class to be generated automatically.

A Multiple Source Input Framework

This article describes a Java framework for collecting and processing input from five types of input source: files on the local machine, files on the web, copy and paste and drag and drop operations, and programmatic input. The framework distils the five input sources into a generic Reader object from which the input is read and processed by a data source processor, an abstraction of data processing functionality such as parsing and data analysis.

A Java Class Framework for Describing Application Parameters

This article describes a Java class framework for describing application parameters of commonly occurring data types. Each parameter describes its current value and the allowed range of values that enable its value to be validated and constrained. The framework can automatically construct a user interface component for each type of parameter that enables users to view and edit parameter values. Parameters can be grouped into sets and the framework can automatically generate the user interface of a parameter set which contains the user interface component of each parameter in the set. The framework fires an event when the value of a parameter changes.

Monitoring Progress with Size Input Streams

Progress bars provide visual feedback on the progress of lengthy tasks, such as reading a stream of bytes stored in a file. In some cases, Java progress monitors cannot be used because the number of bytes that remain to be read is not available from the InputStream object that the bytes are read from. This article introduces the SizeInputStream class that enables reading progress to be monitored when the number of bytes to be read can be determined from sources other than an InputStream object, such as from a URLConnection object.

Enhancing Aggregate Data Structures with Selection Iterators

Selection iterators traverse the elements in aggregate data structures such as lists, maps, and trees, and return only those elements that meet a particular criteria. The element selection criteria is encapsulated in a selection object which separates the decision to return an element from the order in which that decision is made. Selection iterators promote cleaner iteration loop code by moving the test for the required elements into the iterator. Aggregate data structures can also be enhanced by using selection iterators to create sub-collections.

Improving Object Storage and Access Efficiency with Adaptive Data Storage Structures

Storing string representations of primitive data type values uses more memory than storing them as primitive data type values. Adaptive data storage structures minimise storage by determining which primitive data type is represented by a string, converting it into a value of that type, and storing it in the most appropriate object wrapper. Identifying the type of each value at storage time enables fast and efficient identification of objects of different classes when performing tasks such as searching, comparisons, and calculations. Adaptive data storage structures provide information about the objects they stores, such as the most frequently occurring class.

Composing Events with Event Accumulators

Event accumulators capture two or more events that occur within a specified maximum amount of time of each other, and combine them into a composite event that is dispatched to interested clients. Event accumulators can be used to overcome the event dispatching limitations of some user interface components.

Monitoring Status with Monitor Threads

Applications often need to monitor the state of the environment in which they run. Monitor threads provide a framework for monitoring changes in the status of part of a system that cannot be monitored by listening for events.

LinkLabels—A Java Component for Hyperlinks

A link label is a Java Swing component that provides hyperlink functionality for Java applications. Link labels display a hyperlink and generate an event when the cursor is moved on and off the hyperlink and when the mouse is clicked over it. Interested clients listen for link label events to enable them to invoke application dependent hyperlink behaviour.

JavaScript Articles

Implementing the Text2Link Firefox Extension

This article describes the implementation of Text2Link, a Firefox extension that enables users to open URLs and send emails to addresses not marked up as HTML links with the a tag. After describing the files that implement Text2Link's XUL user interface and its JavaScript behaviour, this article explains how Text2Link is packaged into a Firefox extension installation file. This article is hosted on the Text2Link website.

Python Articles

Ruby Articles

How to Install Ruby on Mac OS X with RVM

This article explains why you should avoid using the version of Ruby bundled with Mac OS X and should instead install your own version of Ruby with RVM, the Ruby Version Manager.

COBOL Articles

A Computer-Aided Learning COBOL Package

This article describes a COBOL compiler and run-time interpreter for teaching COBOL in a computer-aided learning environment. The compiler converts COBOL source code into an intermediate pseudo code that is executed by the run-time interpreter. This package is the first implementation of COBOL written in BASIC for an unexpanded BBC Micro with a 32K memory.