• No results found

5.5 Plugins

6.2.4 Brainstorming Plugin

A brainstorming application was created as a summer project by two undergraduate students – Gregory Darke and James Bunton. The task was to support groups of simultaneous users in both phases of brainstorming – idea generation and idea selection. Rietzschel et al. [2006] found that separating the two phases has a positive effect on the number of ideas generated.

The task of the idea generation phase is to produce a large number of ideas, which should be recorded verbatim. Thus, for maximum productivity, each user is given a keyboard. With the addition of (multiple) keyboards, the task is a departure from the common goals of a pervasive computing interface, but they are necessary for efficient input

6.2. Contributed Plugins CHAPTER 6. SYSTEM EVALUATION

New concepts

Input frame

The background is shown here in white for clarity – usually it is projected black.

Figure 6.4: Brainstorming application part way though selection and grouping phase

of ideas. Notably it is critical for reliable simultaneous input when the tabletop hardware available supports only single touch.

An exploratory user study was conducted with people brainstorming with this plugin for Cruiser. A total of 12 participants, in 4 groups of 3, were asked to brainstorm about two subjects: first-year programming, or about concepts for a Unix course (these were chosen in order to be familiar and motivating to all participants of the study). Unix brainstorming was conducted in the traditional brainstorming fashion, using a whiteboard, and participants were asked to compare this strategy with Cruiser’s.

Cruiser supports idea generation at the tabletop by providing each attached keyboard3 with virtual notepaper, or an input frame, as shown in Figure 6.4. This is a movable, resizable and rotatable image that can be positioned in front of each user, regardless of how they are seated around the tabletop. As ideas are typed, simultaneously, at each keyboard, each user receives input feedback in their personal input frame. A user presses a key combination such as Shift+Enter to add their idea to the shared collection of ideas that accumulates in a spiral in the centre of the table. They are also given a fresh sheet of virtual

notepaper, and the idea is saved to disk in a text file. A screenshot of the brainstorming

application part way through a brainstorming session is shown in Figure6.4.

The ability to concurrently enter ideas removes the blocking that typically occurs when brainstorming with a scribe [Diehl and Stroebe, 1991] – users may forget ideas while they wait for the scribe to finish writing others’ ideas, or they may hesitate to interrupt with their idea [Nijstad et al., 2003]. Ideas, once added, are anonymous. However, loading new ideas into a shared space allows all participants to be aware of the ideas, to help avoid duplication and to stimulate thoughts about new ideas if the user reaches a block. Sitting as a group around a table also has the potential to improve the discussion for the generation of new ideas. Everyone can easily make eye contact, whereas traditional

brainstorming strategies may involve a scribe standing at a whiteboard and others all seated, facing towards only the scribe4.

Cruiser and the brainstorming plugin support the idea selection phase of brainstorming too. All ideas created may be manipulated like regular images in Cruiser – moved, and resized either smaller to compact, or larger make the idea easier to read. As shown in Figure6.4, the Black Hole (§4.3.1) is also present to enable users to quickly delete unwanted or duplicate ideas. Strategies for grouping the ideas can then proceed in a number of ways – participants in our evaluation were free to choose and groups used different strategies. Ideas can be moved into piles, as in Figure6.4, attached to the back of a flipped image (which might be a new idea created that is actually the name of the category), or positioned over the front of a category idea that has been made large. Some participants were observed to make categorised ideas smaller, to indicate their status and reduce clutter.

The results of the user study were mainly qualitative. For example, only 1 participant indicated that they found it easier to enter ideas concurrently at the whiteboard (and this user held the pen at the whiteboard). Most users indicated that they felt that brainstorming at the table was “intuitive”.

What is interesting for this thesis, and the system evaluation of Cruiser, is that this plugin was implemented over the course of a brief summer project by two students who had not previously used the Cruiser framework. They had a total of 3 man-months and were able to develop their prototype with minimal assistance and perform a user study within that time. The same Cruiser core was used without modification – simply omitting all other Cruiser plugins gave a blank slate for the realisation of the brainstorming application.

The extensibility and reusability of the Cruiser framework also helped reduce the coding effort required to implement the plugin. A new NotePaper resource was derived from Image and given a fixed image texture. This took 162 SLOC. The majority of the remaining coding effort was directed at detecting new keyboards5, and managing the input from multiple keyboard sources; registering callbacks with the operating system for the keystrokes, mapping the keystrokes to letters6, and ensuring that the input appears in the correct input frame.

The heavy use of text in the brainstorming application, for representing ideas, highlighted an opportunity to improve performance of text rendering in the Cruiser framework. Text is rendered using polygons in Cruiser so that individual characters may be selected, rather than requiring them to be placed on a canvas (see §5.2.4.3). Polygons were initially re-constructed for each letter, but brainstorming prompted the optimisation whereby each font glyph will be cached as an OpenGL display list the first time each character drawn. Text is deliberately avoided in most of our other tabletop applications, or else kept to a minimum (e.g. because of the goal to support multiple usersat different orientations), so there was previously no evidence to suggest this optimisation was necessary.

Text rendering is no longer a bottleneck for the brainstorming application (see Load Testing in §6.4.1 later in this chapter), and well over 1000 notepaper objects can be present before responsiveness begins to be a problem. Furthermore, because of Cruiser’s framework design, all Cruiser applications were quickly able to benefit from the optimised font rendering introduced into the core library. The decoupling of plugins means that implementing application-specific code does not cause any application to become heavily dependent on particular behaviour of the core library, thus making updates straightforward.

4Lack of the non-verbal social cues that are used in regular conversation means that it is sometimes

necessary for people to put up their hands in these situations, when they wish to speak.

5Even some of this was borrowed from Cruiser’s drive detection plugin (§5.5.1) – detecting a USB

keyboard is not very different from detecting a USB drive.

6This task is usually accomplished by the windowing system which must be bypassed as there is currently

6.3. Applications CHAPTER 6. SYSTEM EVALUATION

When an item is highlighted by the touch point, it grows. The items clockwise from top left are Align (highlighted), Delete, Snap to Grid, Hide, Copy and [attach] Audio.

Figure 6.5: A Pie Menu Activation

In cases such as these, where the exposed core library headers do not change, the plugins need not even be recompiled.