Ambient Displays: Information Visualization through Physical Interfaces Sandia Ren Submitted to the Department of Electrical Engineering and Computer Science in Partial Fulfillment of the Requirements for the Degrees of Bachelor of Science in Computer Science and Engineering and Master of Engineering in Electrical Engineering and Computer Science at the Massachusetts Institute of Technology May 19, 2000 C 2000 Sandia Ren. All rights reserved. The author hereby grants to M.I.T. permission to reproduce and distribute publicly paper and electronic copies of this thesis and to grant others the right to do so. Va MASSACHUSE T INSTITUTE OF TECH NOLOGY JUL 2 7 2000 LIBRJARIES Author Department of Elec6fcal Engineering and Computer Science May 19, 2000 Certifie d by Hiroshi Ishii Thesis Supervisor Accepted by Arthur C. Smith Chairman, Department Committee on Graduate Theses Ambient Displays: Information Visualization through Physical Interfaces Sandia Ren Submitted to the Department of Electrical Engineering and Computer Science May 19, 2000 In Partial Fulfillment of the Requirements for the Degrees of Bachelor of Science in Computer Science and Engineering and Master of Engineering in Electrical Engineering and Computer Science Abstract Ambient Displays are a means of interfacing humans with digital information in our peripheral perception. They present information through subtle changes in movement, light, and sound that can be processed in the periphery of our attention. This thesis documents the various steps taken towards making some headway into the potential use of these informative physical interfaces. The first was a creation of a toolkit with which ambient displays can be quickly developed and configured. Displays were then designed, implemented, and evaluated for four application domains: stock market activity, website visitor tracking, natural wind movement, and network activity. The process of creating the displays led to a number of initial conclusions about the design of ambient displays. The work described here is meant to be a starting point for user evaluations that will complete the evolution of ambient displays. Thesis Supervisor: Hiroshi Ishii Title: Associate Professor of Media Arts and Sciences, MIT Media Laboratory 2 Acknowledgements This thesis would not have come together without the help of many to whom I owe my deepest thanks and appreciation. Hiroshi Ishii For giving me the chance to venture into this unfamiliar area and for his strong guidance, support, and belief in me along the way. Phil Frei, Jay Lee, Ali Mazalek, James Patten, Brygg Ulmer For the ideas, the brilliance, and the friendship that have made them a wonderful group of people I am blessed with the chance to work with. Phil Frei For all his work in bringing the pinwheels to life, for his creativity and good sense of design, and for being tall enough to reach the pinwheels for me. Brygg Ulmer For providing me with many of the resources I needed to create the displays and for the long discussions that have shone much light on my research. Jay Lee For his sketches that are in this document and for bringing me into TMG. Victor Su For opening the door to this opportunity for me, for his unending patience to my equally unending list of questions, and for his friendship and all his "yes sandia?"s over the past two years. Rujira Hongladaromp For picking up where Victor left off, for his diligence and good work in all of my projects, and for his sense of humor. Seye Ojumu For doing the mundane job of assembling all the pinwheels without complaint. Ali Pearlman For her work in creating the pinwheel and various display structures. Muriel Waldvogel, Jeffrey Huang For their enthusiasm in bringing the pinwheels into the Swisshouse and their renderings and documents that are in this thesis. Rob Poor For all his help and suggestions in the creation of the pinwheels. The pinwheels would not have come about so successfully without him. Andy Wheeler For helping a frustrated Sandia put together the first pinwheel board and for teaching me to solder. 3 0 Laurie Qian, Matt Debski, Duncan Bryce, Charatpong Chotigavanich, Tim Lu, Greg Bollrud, Andy Wheeler, John Gavenonis, Tim Shiau, and all my friends For their unconditional friendship, care, and encouragement that has gotten me through this hectic year. Charles Lee, Lawrence Wang, Jeff Hsing, Alex Shing, and all of Eyeshake For putting up with my schedule and for being such a fun group of people. Dad, Mom, and Abraham For creating a warm nest of love, strength, trust, and understanding, and giving me a happy and loving home. 4 Table of Contents Title 1 Abstract 2 Acknowledgements 3 Table of Contents 5 Table of Figures 6 1 Introduction 8 2 Background 10 3 Pinwheel Development Toolkit 15 15 24 3.1 3.2 4 Hardware & Structure Software API Applications 4.1 4.2 4.3 4.4 4.5 4.6 Interface Design Criteria Graphical User Interface Application I: Stock Market Activity Application II: Website Visitor Activity Application III: Natural Wind Movement Application IV: Network Activity 30 30 31 32 43 55 65 5 Discussion 73 6 Future Work 83 7 Conclusion 88 Appendices A B C D 89 89 91 96 111 Circuit Schematics Pinwheel Structure Components Pinwheel API Swisshouse Floorplan References 112 5 Table of Figures 2 3 4 5 Background ambientROOM media 2.1 2.2 WaterLamp 2.3 Pinwheels 10 12 12 Pinwheel Development Toolkit 3.1 Overall System Architecture 3.2 Block Diagram of Pinwheel Circuitry 3.3 Motor Driver Truth Table 3.4 Sample Motor Behavior Pinwheel Assembly Process 3.5 Modular Dependency Diagram of API classes 3.6 16 18 19 19 21 25 Applications 4.1 Stock Price Fluctuations in a day Possible Stock Portfolio Ambient Display 4.2 4.3 Volume Activity in a day 4.4 Possible Timeline Arrangements Mapping volume changes to pinwheel speeds 4.5 Initial Stock Tracker GUI 4.6 Individual Stock Tracker GUI 4.7 4.8 Close up of Single Array 4.9 Stock Market Ambient Display Directionally Arranged Pinwheels 4.10 4.11 Time Zone Arrangement 4.12 Tree Structure Arrangement Website Tracker System Architecture 4.13 Mapping number of visitors to pinwheel speeds 4.14 4.15 Initial Website Tracker GUI 4.16 GUI for Configuring Website Tracker GUI Displaying Visitor Information 4.17 Rendering of Ambient Display in Swisshouse 4.18 4.19 Ambient display showing wind direction at various time points 4.20 Vector Calculations for Wave Effect Algorithm Counter Increment Time vs. Natural Wind Speed 4.21 Numerical Angles of Directions 4.22 4.23 Conversions for Area Rotations 4.24 Horizontally Oriented Matrix Display 4.25 Vertically Oriented Matrix Display Scattered Clusters Display 4.26 'Daily' Router Activity 4.27 Initial Network Activity GUI 4.28 4.29 Tracking Router Activity 4.30 Ambient Display for Network Activity 33 33 34 35 37 38 39 40 41 44 45 47 48 50 51 51 52 53 56 58 59 60 61 62 62 63 66 69 70 71 Discussion 5.1 Users in Ambient Display Environments 75 6 A B D Circuit Schematics Pinwheel Board A.1 A.2 Serial Port Interface Circuit Board 89 90 Pinwheel Structure Components B.1 Pinwheel Structure Components B.2 Finished pinwheel circuit board Front view of Pinwheel Container B.3 Side view of Pinwheel Container B.4 Back view of Pinwheel Container B.5 B.6 Front view of container with motor B.7 Back view of container with motor Fully stuffed pinwheel container B.8 Front view of pinwheel B.9 Side view of pinwheel B.10 91 92 92 92 93 93 93 94 94 95 Swisshouse Floorplan Swisshouse floorplan showing tentative location of ambient display D.1 7 111 1 Introduction Technology these days presents most of its digital information as "painted bits" on rectangular flat screens. This is restrictive in two ways; it confines the user's focus to a certain space and is only informative if given a significant amount of attention. In this thesis, we present ambient displays, physical interfaces that overcome these restrictions by presenting information in our architectural space through subtle changes in movement, light, and sound that do not require as much focused attention. They are derived from natural ambient displays that awaken our senses and make us aware of events occurring that we are not directly involved in. For example, the sound of rain informs us of the weather; it does so without requiring us to focus our attention on it; rather it is in the periphery of our attention and subconsciously makes us aware of the rain. Whether or not we want to act upon this awareness is then up to us. Ambient displays function in a similar manner. They were designed to take advantage of the human ability to process events in the background of our awareness [2]. With ambient displays, users can be aware of states of things that are important to them without having to devote constant attention to them. While they normally reside in the background of a user's attention, ambient displays also have the ability to move to the foreground of attention when the information they are presenting is in some extreme state, thereby alerting the users when these extremes occur. Ambient displays are made up of kinetic physical objects called ambient fixtures, which can be used either individually or as a group. One such ambient fixture is the pinwheel, which, metaphorically speaking, spins in a "bit wind". This is the fixture currently being used in our ambient displays. By laying out pinwheels in various arrangements, we create displays that use the entire physical environment as an interface between humans and online digital information. With ambient displays, the various sources of information that normally compete for space on a small screen can present themselves throughout one's architectural space. The space can then convey information that smoothly moves into the user's center of attention when needed and fades into the periphery when not in use [3]. Ambient displays can be all around us and are suited for many different environments. They fit well in a home environment where people feel the need to be connected to loved ones that are geographically distant from them. They are also suitable for environments where many streams of information need to be constantly monitored. Because of their ability to move to the foreground of a 8 user's attention, they can be used, for example, in aviation cockpits or power plant control rooms, to signal when something is wrong [1]. Using these ambient physical interfaces to visualize information is a largely unexplored area. The general direction of this thesis was to make some headway into this area by studying how these displays may be used. Three specific research goals were identified. The first was to create a technically sound infrastructure for the pinwheels, to allow for quick and flexible development of robust ambient displays. The second was to study what kinds of contents were appropriate for these displays, i.e. which application domains it would make sense to use them for. The last goal was to study how the pinwheels may be used to map information in these different domains. This involves looking at how the combination of the kinetic motion and layout of the pinwheels may create interfaces that are meaningful and informative. To accomplish these goals, a number of displays were designed, implemented and evaluated. A toolkit was first created that can be used to quickly develop and configure ambient displays. This toolkit was then used to develop ambient displays for four specific application domains: 1) Stock Market Activity, 2) Website Visitor Activity, 3) Natural Wind Movement, and 4) Network Activity. Through the process of creating these displays, we were able to draw some conclusions about the use of ambient displays. This thesis will explain the steps taken to achieve the three goals and discuss the lessons learned in the process. Section 2 discusses the background research and ideas among which ambient displays were born. Section 3 describes the different components of the toolkit and how they fit together. Section 4 looks at each of the ambient displays that were built and discusses both the design considerations behind each of them and their implementations. Section 5 presents some conclusions drawn based on the building of the displays. Section 6 presents a next step for research in ambient displays. Section 7 concludes the thesis by summarizing the findings. 9 2 Background Ambient displays grew out of the research being done at the Tangible Media Group at the MIT Media Lab. This next section will discuss this research and the projects that eventually led to the current ambient displays. This section will also look at the research that has been done in the area of peripheral awareness and information visualization for both are important characteristics of the displays. 2.1 Tangible Bits The idea of using physical objects to convey information evolves from a "Tangible Bits" vision where tangible interfaces are used for human computer interaction [4]. They bridge the digital world with the physical world by coupling bits with everyday physical objects. In this way, information can be brought off the flat rectangular screens and into our physical environments. With tangible user interfaces, it is expected that people can use the skills that they have developed and that feel natural to them to physically manipulate digital information. The other key idea of tangible bits is to make users aware of information at the periphery of their perception. Ambient Displays were born out of these two key concepts [1]. 2.2 ambientROOM The ambientROOM developed previously by the Tangible Media Group explored the ideas behind the Tangible Bits water ripples -natural concept. It was developed as a platform for expressing digital information with ambient media. Ambient media patcles includes environmental light, sound, and movement that can be processed in the background of a person's peripheral bottles awareness [1]. It can be used to inform people of events and to give people a sense of community. People have a need to feel connected to loved ones especially when they are apart; Figure 2.1: ambientROOM media ambient media can be used to create a persistent yet non-intrusive connection with others. The following are some of the ambient media that were a part of the original ambientROOM [1]. 10 M Water Ripples The actions of another can be manifested as the motion of a solenoid in a shallow water tank. This motion causes water ripples whose shadows are then reflected onto the ceiling with a lamp. A constant rippling gives people the feeling that another is active and around them. Active Wallpaper Movement of illuminated spots on the wallpaper can represent activity in a remote work area. The motion of the spots is directly correlated to the level of activity in the work area, providing a display of remote activity. This sort of ambient media unobtrusively makes people aware of things that are going on outside the confines of the ambientROOM. Ambient Sound When sounds of dry-erase pens rubbing against a whiteboard are heard, people become subconsciously aware that there is activity in a work area. This is a common sound in a workplace, so transmitting it into the room at a low volume does not disturb the inhabitant and also conveys remote activity. 2.3 Ambient Fixtures Ambient fixtures are an extension to the ambient media of the ambientROOM. They are standalone kinetic ambient media. While the ones in the ambientROOM were restricted to being inside, ambient fixtures allowed the externalization of the media into open space, thereby allowing many people to benefit from them at once [2]. The Water Lamp (Figure 2.2) is an extension of the water ripples of the ambientROOM. It consists of a light that shines up through a pan of water, which is set in motion by changing information. As the water moves, different patterns of light are projected onto the ceiling above the lamp. The pinwheels (Figure 2.3) evolved from the idea of using airflow in the ambientROOM. The flow of air itself is difficult to control, but visualizing the airflow turned out to be something that could be used to convey information. Thus, the pinwheels are spun by a "bit wind" of digital information that controls the rate and direction of the pinwheels. Compared to something like the WaterLamp, the pinwheels are good fixtures to build large displays out of because of their size and the wide range of possibilities for interfaces of multiple pinwheels. The "bit wind" is also representative of information; the wind flows through the pinwheels similar to the way digital information does. The displays built for this thesis were all made up of pinwheels. 11 Figure 2.2 Figure 2.3 WaterLamp Pinwheels photo by Andrew Dahley photo by Webb Chapell Through the design of ambient fixtures, three main lessons were learned that can be applied to ambient displays as well [1,2]. One was that ambient displays must translate digital information into a pattern that successfully presents the information. Secondly, location of ambient fixtures is important because of their persistency. People learn to look for them in a certain place so placing them well in the architectural space is essential. Lastly, the threshold at which attention transitions from background to foreground is an open design issue that should be looked into. This thesis continues the research in these three areas. 2.4 Information Visualization Information visualization is defined as the use of computer-supported, interactive, visual representation of abstract data to amplify cognition [8]. Quite a bit of research has been done in the area of graphical information visualization. All sorts of frameworks have been developed for visualizing data. COOL, for example, translates textual objects and relations into pictorial representations [9]. With the advent of the Internet, much research has been done in visualizing vast amounts of data for the web [11]. Evaluations have been done on the effectiveness of text, 2D, and 3D visualizations [10]. Not as much research has been done in regards to physical interfaces for information visualization. However, some of the ideas for graphical interfaces can be applied to physical interfaces as well. For example, metaphors are essential in both types of interface design [6]. Awareness of the use of metaphors can make displays more effective in communicating information to a diverse group of users because they make data easily recognizable, understood, and remembered. They achieve effectiveness through associations of organization or operation. 12 Research in the area of architectural spaces as information spaces has shown that the placement of "information objects" in relation to other physical objects depends on many factors [5]. One is the size and area needed to display all the information. A second is the need for persistency and visual accessibility to the objects in the space. A third is the various ways to convey relationships between multiple objects. One last factor is the ambient information in the space that can provide background and context cues. 2.5 Awareness Studies An essential characteristic of ambient displays is their reliance on people's peripheral awareness. Awareness is essential in coordinating collaboration in shared workspaces; people need to know events and activities of other people in the workspace. Our concept of ambient media was motivated by the Fields and Thresholds work of Dunne and Raby (1994) and the Live Wire of Jeremijenko [1]. With our ambient displays, awareness is not limited to other people's activities but also extends into awareness of events that are happening at a more global level - for example, stock market activity and wind movement. The AROMA project (Pederson & Sokoler, 1997) researches ideas around peripheral awareness [13]. They believe that people have developed skills in reading their environment, especially those for everyday needs. For example, the urban citizen maintains awareness of the neighbors by the soundscape of the apartment building and neighborhood. People in office spaces make good use peripheral awareness - we are aware of the comings and goings and activities of our colleagues without paying focused attention on them. There are also various cognitive science theories related to ambient displays. Many were studied during the development of these displays [1]. One is the ecological perspective of psychologists like J.J. Gibson[15] and Ulric Neisser [16]. They describe perception as an active task that humans participate in inside their environment [1]. Our design of ambient displays has also been heavily influenced by attention studies on notions like the "cocktail party effect" [14]. This is a person's ability to selectively move his or her attention around a busy environment. Ambient displays aim to take advantage of this ability. Other attention studies include those by Treisman [18] and Rensink [17]. Treisman showed that information does not necessarily have to be in the foreground of a person's attention in order to be processed. Rensink and others have performed experiments to show how perception is influenced by attention. They have been successful in showing how attention works at a basic level but not with more complex surroundings [1]. 13 2.6 Related Work There have been a few related works in the area of ambient media. Perhaps one of the most noted ones is Natalie Jeremijenko's "Live Wire" that she created when she was an artist in residence at Xerox PARC. It consists of a single string that moves in response to network activity. Thus, it alternately waves calmly or shakes violently throughout the day, depending on the traffic load on the local computer network. The Live Wire has many of the same characteristics as our ambient displays. The AROMA project by Elin Pedersen and Tomas Sokoler attempts to mediate the same awareness that people who are located physically close are effortlessly able to maintain among people who are geographically distant [13]. They explore people's ability to peripherally update a sense of our social and physical context. Towards their goal, they have developed a set of technologies that they call "an augmentation of existing technologies" [13]. They explore the use of abstract representations to peripherally convey a sense of remote presence. Their initial findings suggest that it is possible to make sense of remote activity even with primitive activity displays and that symbolic representations can be processed peripherally to convey a sense of remote presence [13, 19]. This project also explores many of the same ideas behind our ambient displays and its results are encouraging for the use of ambient media. Audio Aura is a project whose goal is to provide serendipitous information via background auditory cues that are tied to people's physical actions in the workplace [7]. A project by Elizabeth Mynatt, Maribeth Back, and Roy Want at Xerox PARC, it explores the usage of audio cues to connect a person's activity in the physical world to information from the virtual world. It aims to leverage the human ability to peripherally process audio to be aware of the state of things around us and thus aimed to develop periphery displays that are not physically distracting. Towards this goal, a number of sonic landscapes were prototyped in VRML worlds. Three different scenarios were explored: 1) entering a bistro gives audio cues about new email, 2) an audio cue for visitors to indicate how long the person they intended to visit has been out of the office, and 3) a group pulse that represents the collective activity of individuals in a group. Initial user reactions were positive. Users found the sound choice to be good in general and that the sounds generally remained nicely in the periphery [7]. Again, this project ties in nicely with the goals of our ambient displays, the main difference being that its focus is more on audio effects while ours is more on visual ones. 14 3 Pinwheel Development Toolkit We envision having ambient displays everywhere and used by everyone. Thus, it would be ideal if users could create displays easily and quickly without having to understand the low-level workings of the pinwheels. To that end, we created a toolkit with which users can develop ambient displays. The toolkit comprises a hardware component that consists of the circuitry needed to run the pinwheels, a structure that is used to hold all the pinwheel components, and a software API that abstracts away the low-level implementation of the pinwheels and allows developers to work at a higher and more understandable level. This section describes the different components of the toolkit, discusses how well they work, and suggests some possible future additions to them. 3.1 Hardware & Structure The hardware and structure component of the toolkit involves circuitry that gives the pinwheels the ability to spin at different speeds and a container and mechanism for assembling the pinwheels and connecting them to the data. Two circuit boards were implemented, one to run an individual pinwheel and another to interface between the computer serial port and the pinwheels. A container was created that snugly fit the motor and circuit board. The hardware and pinwheels structure were designed with fellow Tangible Media Group grad student Phil Frei with the help of Rob Poor of the Personal Information Architecture (PIA) Group at the Media Lab. 3.1.1 Design Considerations To create ambient displays that serve their purpose well, the following were design criteria that were felt to be necessary for the hardware and structure to fulfill. 0 Robustness An important aspect of ambient displays is their persistency. Thus, the circuitry behind the pinwheels needed to most importantly be robust. The usefulness of a display is quite dependent on its accuracy - * a constantly failing circuit board would defeat the purposes of the display. Small and Contained Regular pinwheels are attached to a thin rod that is almost invisible, so what one mostly sees is the spinning pinwheel. It was important that adding a motor and a circuit board did not change this 15 effect by adding too much bulk to the pinwheel. This required the board to be small and for the pinwheel container to hold the parts compactly. * Flexible Many interfaces are possible with pinwheels, so it was necessary for the overall system to be flexible enough to allow the pinwheels to be arranged in any manner. The most form-limiting factor of an ambient display is how the pinwheels are connected to the data. Thus, an unrestrictive method for doing so was needed. 9 General To allow for future development of other ambient fixtures, we aimed to design the board and structure to be general enough so other ambient fixtures could be implemented with the same electrical and mechanical base. 3.1.2 Implementation 3.1.2.1 System Overview Given the design criteria listed above, the following system structure was chosen: LI Serial Data 6 6 Serial Port / Pinwheels interface circuitry Serial Power Ground Ground Power LSerial 6 Pinwheel Circuit Board Figure 3.1: Overall System Architecture The pinwheels are driven by instructions that are generated by the Java program and sent through the serial port. The first circuit board takes in the serial data and bundles it with power and ground signals to create a six-signal bus that serves as the data source for the pinwheels. The pinwheel circuit boards are connected to the bus via telephone cables that connect them to each other and connect 16 the interfacing circuit board to the first pinwheel. Each pinwheel listens to the bus and acts only when an instruction specific to itself passes by on the bus. All other instructions are ignored. As can be seen from figure 3.1, the bus consists of six signals but only has three distinct signals. Since this bus is the only source of signals for each pinwheel board, doubling each signal gives each board a stronger signal, increasing the robustness and stability of each pinwheel. Making the bus symmetrical prevents human errors such as plugging cables in incorrectly that may cause damage to the boards. With this set up, numerous pinwheels can be daisy chained together to form a large ambient display since a pinwheel merely has to be connected to one other pinwheel to receive data. This set up also allows for flexibility in design because it imposes little restriction on the way pinwheels are laid out. 3.1.2.2 Serial Port Interface Circuitry The serial port interface circuitry is the board that resides between the computer and the first pinwheel. Its main function is to convert the +/-10V serial signals from the computer to the 0-5V signals used by the microcontroller on the pinwheel circuit board. After doing so, it bundles the serial signal with power and ground to create the six signal bus described in the previous section. All communication with the pinwheel boards is done using the RS-232C standard for serial communication. The most common data format of the RS-232C standard, known as 8N1, is the one used in this system. It has a start bit, then has 8 bits of data, and ends with a stop bit. There is also no parity checking. The start bit is a transition from a logical HIGH to a logical LOW while the stop bit is the opposite, with a transition from a logical LOW to a logical HIGH. Other data formats have a different number of data bits and more than one stop bit. The other parameter for serial communication is the baud rate. The pinwheels use a baud rate of 2400, meaning that the time needed to send one bit is approximately 417gsec. With 8N1, 10 bits are sent for one byte of data so one byte would take 4.17msec to transmit. On the microcontroller side, all serial communication signals are in the range of 0-5V. On the RS232 side, the signals range from -10 to 1OV. To perform the conversion between +/-10V and 0-5V, a MAXIM Max233 chip is used. Usually, a charge pump is used to produce the +/-10V for the RS232 specs. The Max233 includes the whole charge pump in the chip, so no external capacitors are needed, making it a good solution for converting between the two voltage levels. The reason the RS- 17 232 standard has increased voltages is because of the amount of noise which may result from having long cables. They are not necessarily needed in all applications, but since it is quite possible that the pinwheels may be situated quite a ways away from its source computer, having the Max233 will help reduce the chance of noise causing any problems. The amount of power used by a display is dependent on the number of pinwheels being driven by the power source. A minimum of 9V is needed to drive one pinwheel, 10V have successfully run 10 pinwheels, and 12V was required for 20. The original plan was to use a 9V battery for power but that did not work well because the battery drained out quite quickly. A DC power supply is currently being used, so the amount of power being fed to a display can easily be adjusted. 3.1.2.3 Pinwheel Circuitry The pinwheel circuit board is 3.8cmx2.2cm in size and contains three main components. One is a microcontroller pic chip that reads, interprets, and acts on data from the bus. The second is a bidirectional motor driver that controls the pinwheel motor. Its last component is a voltage regulator that converts the power signal from the bus, which is of at least 9V, into the appropriate 5V signal needed by the pic chip and motor driver. The following is a block diagram of the board. The schematic can be found in appendix A. A picture of the finished board can be found in appendix B. 6/ /Bus0 5V Rj2Vsrc Data 05V5VM Voltage Gnd 6/ /Bus RJ12 Re ulator Gn VsrC- INlout-: IN1 ouT I :IN2 OUT2 IN20u PIC12C672 Gn-MLB1638M Motor 5L Figure 3.2: Block Diagram of Pinwheel Circuitry The telephone cable ends plug into the RJ12 connectors, giving the board the necessary bus signals. Motor Driver The motor driver we are using is an LB1638 low-saturation bi-directional motor driver for lowvoltage applications. This driver is a good choice in many ways. It is small and its bi-directionality allows the pinwheel to be spun in both directions, giving an extra dimension that can be used for representing information. It also has low saturation voltage and drains little current when in standby mode, which is advantageous since the pinwheels are often not moving. 18 The motor driver takes in two digital input signals and outputs two signals that set the motor in the mode determined by the following table: IN 1 H L H L IN 2 L H H L OUT 1 H L L OFF OUT 2 L H L OFF Mode Forward Reverse Brake Standby Figure 3.3: Motor Driver Truth Table A method called pulse width modulation (PWM) is used on the inputs to vary the motor speeds. It creates pulses in the input signals. The pulse widths, also known as the duty cycle, can vary from zero to 100 percent of the waveform period of the signal. The following figure shows IN1 with a 50% duty cycle and IN2 with a 0% duty cycle. IN 1 IN 2 Mode Forw Stdby Forw Stdby Forw Stdby Forw Stdby Figure 3.4: Sample Motor Behavior With these inputs, the motor would appear to be spinning at half speed because it is only spinning intermittently, in this case, only half the time. If IN1 had a 100% duty cycle instead, the motor would spin forward at full speed. By varying the duty cycle, the motor can be made to spin at different speeds. 12C672 MicrocontrollerPic Chip The function of the pic is to read in the serial data, determine if it is an instruction for the particular pinwheel it resides on and if so, output signals to the motor driver according to the instruction. If the instruction does not pertain to its pinwheel, the pic takes no action. The pic code was based on the code Rob Poor wrote for Nami, a project of the PIA group. Instructions are in the form "**pffbb" where * leader character for start of instruction (there may be more than one) unique character id of the pinwheel which this instruction is for p ff two hex chars representing the speed to associate with IN1 to the motor driver bb two hex chars representing the speed to associate with IN2 to the motor driver 19 To distinguish between the pinwheels, each one is given a unique id, which is used to indicate instructions that are for it. Speed is represented with two hex characters, making the minimum speed '00' and the maximum speed 'ff'. Setting the speed to be a number x, where 0 x 5 256, will give the signal a duty cycle of (x/256)(100)%. In other words, the length of the input pulse is directly proportional to the speed specified in the instruction. This form of instruction does not perform any error checking, thus it is possible that an instruction will be sent that causes both IN1 and IN2 to be high, sending the motor into lock mode. It is important that no such instruction is ever sent by the computer. The software API created as the other half of the pinwheel development toolkit prevents this from happening by layering the API so that developers do not have to deal with low-level instructions. The pinwheels receive instructions through serial communication. Specific details about the serial communication are described in the serial port interface circuitry section. Here, the method the pic uses to read in the data will be discussed. This particular microcontroller does not possess serial hardware so the serial data is read in bit by bit. The code first looks for a start bit, which signifies that there is data on the serial port. Once a start bit is detected, the data characters are pieced together bit by bit (8 bits/character). Once a character has been assembled, the pic either checks to see if it is a leader character '*' or, if it is already in the middle of an instruction, stores the character in its relevant variable. This serial sampling code is called once every 69.444 gsec. Once the id part of an instruction has been assembled, the pic immediately checks to see if it is the same as its own id. If it is, instruction assembly continues and variables are set to the new values specified by the instruction. If not, the pic goes back to waiting for a start bit. To create pulsed outputs that become inputs to the motor driver, two counters are kept, one for IN1 and another for IN2. If the counter is greater than zero, then the output is high, otherwise it is low. The initial values of the counters are the speeds specified by the instructions. They are decremented every 34.7 psec (if the current value is greater than zero) and reset every (34.7gsec)(256) = 8.89msec. For example, if the instruction were **A2fOO, INicount would start at 32 and IN2count would start at 0. INlout is high for (32)(34.7) = 1.11msec, at which time it reaches zero and remains low for the next (256-32)(34.7) = 7.78msec. INicount is reset to 32 at that time and the whole cycle occurs again. The resulting INlout is a pulsed signal with a (32/256)(100) = 12.5% duty cycle. IN2count is always zero, making IN2out always low. INlout and IN2out are fed directly into the motor driver's IN1 and IN2 inputs, which spin the motor at, in this case, a relatively low speed. 20 Through the combined methods of sampling the serial line, assembling the instructions, setting, decrementing, and resetting the counters, the microcontroller can successfully read in data from the serial port and produce outputs to the motor driver that spin the motor at speeds specified by the instructions. Voltage Regulator The components on the board require power signals of two different voltages, one of at least 9V to run the motor (used by the motor driver) and another of 5V to power the pic and the motor driver. If both signals were passed in through the bus, then either the bus size would have to increase or the symmetry of the bus would be lost. Since neither of these should happen, a voltage regulator was added which converts the power signal from the bus to a 5V signal. 3.1.3 Pinwheel Structure & Assembly As mentioned above, a small and contained method of assembling the pinwheels was needed. Phil Frei, with the help of Ali Pearlman designed a 4.28cm x 3.35cm x 2.29cm rectangular container which compactly holds the motor and the pinwheel circuit board and provides a mechanism for fastening the paper pinwheel onto the shaft of the motor. Figure 3.5: Pinwheel Assembly Process The motor slides into a cylindrical hole in the bottom half of the container and the board fits in on the top. The wires of the motor fit into a ridge in the back of container and are soldered into two holes at the back edge of the board. Two plastic screws hold the board in place. When the motor is inside the container, its shaft protrudes out of a hole in the front of the container. The paper 21 pinwheel slides onto the shaft and is fastened with a shaft collar. Pictures of the pinwheel components can be found in appendix B. Given the rectangular shape of the container, the pinwheels can easily be mounted in many orientations. Other ambient displays can use this same structure because different shapes of different types of material can be mounted onto the motor shaft. 3.1.4 Evaluation Overall, a robust and flexible hardware system was built for creating ambient displays. The pinwheel circuitry has shown to be pretty robust, some pinwheels have been running for over seven months now and only one breakdown has occurred. The structure for the pinwheels holds all its components compactly and does not aesthetically add any weight to the pinwheel. The only non-trivial problem has to do with varying the speed of the motor. Setting the pulse width to be directly proportional to the speed specified in the instruction does not give 256 distinct speeds. There are cluster of speeds that seem to make the pinwheel spin at the same speed. There is a clear distinction between one speed and the one after it up to approximately speed 16, after which the numbers of speeds in a cluster gradually increase. After speed 128, there is no noticeable difference between the speeds anymore. One solution to this would be to not map speeds directly to pulse width, but to map more speeds to shorter pulse widths since those are more distinct from each other. Spinning generated by longer pulse widths all appear to be the same, so fewer speeds should be mapped to it. Adding a function in the pic code that maps instruction speeds to an appropriate counter value, rather than setting the counter value directly to the specified speed, would be a way to implement this solution. 3.1.5 Future Work Using the telephone cable as a bus between the pinwheels still imposes some restrictions to the displays. It requires the pinwheels to be fixed to one position. This will probably be true of most displays built, but if, for some reason, there was a need to spin the whole pinwheel on its vertical axis, the telephone cable would eventually get tangled around that axis. The telephone cable also requires the pinwheels to be relatively near each other so they can be connected together. This would prevent displays from, for example, being on different floors. 22 A possible replacement for the telephone cables would be to have no cables at all. A wireless ambient display would not only allow the pinwheels to be placed anywhere but make them even more like the regular undigitized pinwheels. This solution could be implemented by having the base component (the serial port interface circuit board) communicate with the pinwheels through RF communication. Each pinwheel would again listen for instructions for itself and act accordingly. 23 M 3.2 Software API The software component of the toolkit is an API for pinwheel development. It presents the pinwheel as a black box to the developer so he/she will not need to have low-level knowledge of how the pinwheels work. At the simplest level, a developer can control a pinwheel by simply specifying the speed. The API developed allows users to develop the system at a high level, without having to worry about the underlying details. It also allows developers to work with sets of pinwheels, giving them yet an even higher level of abstraction to work with. Additionally, it prevents human error from causing hardware errors because it keeps developers from working at the level where software bugs could cause hardware failure. 3.2.1 Design Considerations To be a truly useful part of the toolkit, the following were design criteria the API needed to fulfill: 0 Reliable A standard requirement for APIs, reliability means that developers should be able to trust that the API does what it claims to do. In other words, it should be bug free, or bugs should be clearly pointed out to users. * Configurable The API should be easy to use and should allow developers to build applications quickly. Having a hard to use API defeats the purposes of having an API, developers would probably rather work with low-level details than figure out how to use the API. 0 Platform-independent Its is very likely that ambient displays will be developed on a range of operating system platforms, not just on Windows, or on Unix, or on any other specific platform. The API should be usable on any platform the developer chooses to use. 0 Layered Developers should be able to work at different levels of implementation. They should be able to work with a single pinwheel at a time or with a whole set of pinwheels. They should be able to use the predefined speeds of the pinwheels or create their own set of speeds that is more fitting for their particular application. The API should allow for working at these various levels. 24 0 Open There should be no limit on adding functionality. The API should keep users from dealing with lowlevel instructions to the pinwheels but should not impose any restrictions on adding functionality on top of the already existing API. * Flexible The API should not restrict developers to certain ambient display configurations. In fact, it should not be dependent on any configuration and should give users full creativity in that aspect. * Thread-safe Threads are now a common occurrence in many applications. Thus, the API should actively support threads and not cause any threading issues if used in a program that is thread dependent. 3.2.2 The Pinwheel API Java was used to develop the API. It is platform independent and has a familiar API structure that the Pinwheel API easily fits into. The Pinwheel API consists of three main classes: 1) SpeedMapping, 2) Pinwheel, and 3) PinwheelSet. This section will discuss the functionality of and motivation behind each one in turn. The following is a modular dependency diagram of the classes in the API. Documentation for the API can be found in appendix C. PinwheelSet b, Pinwheel SpeedMapping Figure 3.6: Modular Dependency Diagram of API classes 25 M 3.2.2.1 SpeedMapping As described in the hardware section, the pinwheel can be set to spin at 256 different speeds. These will be referred to as basic pinwheel speeds. A SpeedMapping allows developers to map speeds to basic speeds. In other words, a SpeedMapping object acts as a function, f(x), where x = (1.. .s} and f(x) = basic pinwheel speed user would like to map to x. For example, a user may want a pinwheel to spin at speeds 5, 10, 15, and 20 only. A SpeedMapping could then be created that maps speed 1 to basic speed 5, speed 2 to basic speed 10, 3 to 15, and 4 to 20. Giving a pinwheel this SpeedMapping allows the user to use incSpeed and decSpeed functions on the pinwheel. Instead of incrementing by one, it increments up to the basic speed the next speed is mapped to. Having this class also adds modularity since the developer can easily change the basic speeds the pinwheels spin at without going into the rest of the code. The SpeedMapping class is implemented with a java.util.Vector that holds the speeds in increasing order. It has functions to add and remove speeds, get mapped speeds, and get the mapped speeds before and after a certain speed. To cut out complications, speeds must map to basic pinwheel speeds in increasing order, i.e. Vi,j where i<j and f is the SpeedMapping function, f(i) f(j). The class takes care of sorting of the speeds, so users only have to decide which speeds they would like to use. At creation, the set of basic pinwheel speeds that is passed in is first sorted with an insertion sort algorithm. Inserted speeds are inserted in the correct position. This may pose to be a limitation but it makes things easier for developers - they need only to worry about choosing which speeds they'd like to use. The class currently does not allow users to set a certain speed to be mapped to a certain basic speed because it might cause the mapped speeds to be out of order. This is not necessarily a bad thing, but in the interest of simplicity, this functionality was not added to the class. If users wish to create an unordered SpeedMapping, something that probably will not happen often, there are definitely ways for them to do it. 3.2.2.2 Pinwheel The Pinwheel class represents one pinwheel. Each Pinwheel object has to have a unique id, a speed, a direction, and a java.io.OutputStream that is a handle to the serial port. Additionally, it may have a SpeedMapping and a name. 26 At the simplest level, a pinwheel object can be created with just a unique char id and an OutputStream. The pinwheel starts with speed zero, no speed mapping, and default direction forward. Three other constructors exist with which a Pinwheel can be created with more information. Get methods exist for getting the id, current speed, SpeedMapping, direction, and name. Set methods exist for the speed, SpeedMapping, direction and name. In setting the speed, the argument is an unmapped speed. If a SpeedMapping exists, the argument is mapped to a basic pinwheel speed that the pinwheel is then set to spin at. If no SpeedMapping exists, the pinwheel is set directly to spin at the specified speed. If no new direction is specified in setSpeedO, the pinwheel continues to spin in the same direction. The class also contains incSpeedQ and decSpeedO methods. Similar to the setSpeedO methods, if a SpeedMapping exists, the speed is incremented or decremented to the next or previous mapped speed. If no SpeedMapping exists, the speed is incremented or decremented by one. The Pinwheel class is a level above direct serial communication with the pinwheels. It was created mainly to keep the users from having to follow the instruction format for communicating with the pinwheels. As mentioned in the hardware section, if an instruction was sent that caused both lines for the motor to be high, the motor would lock and the pinwheel would have to be reset. Since pinwheels are often situated in a space that is not easily accessible, resetting them is not an easy task. Encapsulating everything in a Pinwheel object prevents this sort of error. 3.2.2.3 PinwheelSet A PinwheelSet holds a set of pinwheels. It may optionally have a name and a SpeedMapping which all pinwheels in the set use, unless a particular Pinwheel's SpeedMapping is set to something else afterwards. All Pinwheel objects in a set must have an id different from the rest of the Pinwheels in the set. A PinwheelSet can be created from a Vector of Pinwheel objects or from none at all. It can also be created with a start char id, an end char id, and an OutputStream. This constructor creates Pinwheel objects with ids from the start char to the end char and creates the PinwheelSet with those new objects. The class acts very much like the Vector class. It has methods to add and remove Pinwheel objects from a set. As in a Vector, Pinwheels are added one after another to a PinwheelSet, giving the set an order. They may be removed by id, name, or by object. They may be retrieved from a set by those three attributes as well. Because the PinwheelSet is ordered, there are methods for retrieving its first and last Pinwheels and a method to retrieve the next Pinwheel after a given one. The 27 PinwheelSet also provides an easy way for manipulating multiple Pinwheel objects, i.e. they can all be started and stopped at the same time with one command. The start method can be used to set all Pinwheels to a certain speed. In building ambient displays, grouping pinwheels together or having them relate to each other in some way is a common occurrence. The PinwheelSet class gives developers the ability to work at this higher level of abstraction. For example, in the stock market application, five pinwheels are allocated to one stock. Every five seconds, the speed of a pinwheel changes to the speed of the pinwheel before it. Having the PinwheelSet makes performing that sort of transition much easier. 3.2.3 Evaluation The goal of the Pinwheel API was to provide developers with an easy way to program contents for and control ambient displays. It was designed with the criteria listed previously in mind. Standard verification methods, black box and white box testing, were used to test each class of the API. As applications were built, the API continued to go through development as more functionality, such as different methods for retrieving Pinwheels from a PinwheelSet and replacing a Pinwheel in a set, was added to each class. Regression testing was used to ensure that the additions did not break already existing functionality. Through the applications that were built, the resulting API has shown to be reliable and easy to use. The use of Java makes it platform independent and it allows developers to work at different levels of implementation. Additionally, it places no restrictions on the displays, either in form or functionality. Developers can build on top of the existing API to create classes for, for example, arrays or matrices of pinwheels. It has also been used in conjunction with Threads and has not caused any problems. To conclude, all the criteria set for creating a software toolkit to aid in the development of ambient displays have been met. 3.2.4 Future Work The use of Java makes it possible to port this API onto devices other than the computer. If these devices also support serial communication, running of the ambient displays can be moved entirely off the computer and onto a much smaller device. An example of such a device is the TINI board. TINI stands for Tiny Internet Interface and allows one to web-enable just about any piece of electrical equipment. With the TINI board, all control of the pinwheels can reside on just this board, adding to the portability of the system. The TINI board has not yet been used because it does not have an easily visible graphical interface that is needed for the GUI portion of an ambient display. Another example of a smaller device that can be used and also has a visual interface is the Palm. It supports 28 Java and can also perform serial communication, so ambient displays could be run off of this small handheld device. A simple GUI component could easily fit onto the Palm interface, completing the display. 29 4 Applications The core of this thesis was to study possible application domains for the ambient displays and investigate the kind of contents and interfaces appropriate for the pinwheels. Several possible application domains were discussed and ambient displays were built for four of them: 1) Stock Market Activity, 2) Website Visitor Activity, 3) Natural Wind Movement, and 4) Network Activity. The following section will first describe the design criteria for an interface of an ambient display. Then for each application, it will discuss possible contents and interfaces for that domain, the specific contents that were chosen, the interface that was built, and the implementation and evaluation of that display. 4.1 Interface Design Criteria There are many ways pinwheels can be situated in a display. For example, one could use a single pinwheel to display one bit of information. The pinwheels could also be set up in an array where each pinwheel represents a point in time, making the whole array a timeline. They could also be set up as a matrix, where movement in the x and y directions together portray movement over a certain area. Other possible arrangements include concentric circles or tree structures. Arrangements vary depending on the application domain. However, all the interfaces of the displays should have the following characteristics: 0 Representative The interfaces should most importantly be representative of the data. Since they give information through subtle changes in movement, sound, and light, there should be a clear difference in its motions if its data is different. For example, a sudden large difference in data could be reflected as a sudden large change in the speed of a pinwheel. 0 Understandable By just looking at a display, most people cannot tell what information is being presented. The interfaces need to be put in context; given this context, users need to be able to make some conclusions about the information being portrayed with little explanation. They might not necessarily get the full picture but the display should at least intuitively make sense to them. 30 * Aggregately Informative Each individual ambient fixture represents one bit of information. All together, the interface should show how each of these bits relates to each other. Thus, each display should not only give disjointed information but also tie together all the bits and portray the aggregate information as well. An example of such a display is one that portrays trends in a certain domain. * Aesthetically Pleasing One of the most attractive characteristics of ambient displays is that they are aesthetically pleasing. If they were not, there would be less of an argument to use them as an alternative to onscreen interfaces. The pinwheels themselves are simple and elegant and the displays should not destroy this effect. A bulky display is rather obtrusive, going against the definition of an ambient display. * Believable Perhaps the biggest danger with ambient displays is that they are not believable. Users need to be convinced that the pinwheels are truly and accurately portraying the data they claim to be mapped to. 4.2 Graphical User Interface Ambient displays subconsciously give users a sense of events happening outside or away from them. If users wish to act upon their new awareness, they should have the choice to turn to a graphical interface that will give them more precise information about the events. Having a graphical interface as part of an ambient display is beneficial in many ways. Besides giving more specific data, it can also be used to make the displays more understandable because it can tell users what information is being presented. It can also convince the user that the physical interface is correctly mapping the data being monitored. The physical and graphical interfaces coupled should give users a sense of causality. This is key in making the displays believable. The graphical interfaces should be designed so that they are easily associated with the physical interfaces they are complementing. Doing so will make the correlation between the graphical and the physical interfaces more convincing and will also make it easier for people to understand the displays and remember their contents. 31 4.3 Application I: Stock Market Activity The stock market is very dynamic. Stock prices go up and down and large volumes of transactions occur every second. Additionally, it is something that many people care about. They would all like to know immediately when the market is crashing or going up tremendously. However, it is difficult for most to be constantly watching the market because in order to do so, a significant amount of foreground attention has to be paid to a stock ticker. An ambient display could "watch" the market for them. For these reasons, stock market activity looked to be a good candidate for using an ambient display. Having a display that presents what is happening on the market can peripherally give people a sense of the information they want about the market without them having to give any foreground attention to it. If activities on the market were normal, then the pinwheels would probably spin normally, sometimes on, sometimes off, sometimes fast, sometimes slow. The display could give people a sense of activity on the market without causing them any disruption. If, however, there were remarkable activity on the market (i.e. stock prices falling or rising rapidly) and the display reflected this activity by either having all the pinwheels stop or spin rapidly, the user would very likely notice this and, if he chooses to, turn his attention to the market. Ambient displays are well suited for this application domain because displays can be ignored when activity is normal but will call for attention when it is not. Additionally, if people do want a sense of what is happening on the market, they can find out quickly by taking a glance at the display. 4.3.1 Possible Contents and Interfaces 4.3.1.1 Stock Price One possible component of the stock market that could be tracked by the pinwheels is stock prices. They can go through quite a bit of fluctuation just in the period of a day, as can be seen in the following chart from the Yahoo! Finance pages. 32 Kana Commun icat ions Inc 28-Apr 1: 27pm 45.00 42.50 40.00 K 37.50 u2A --------- --------------------__ _ --------- - 35.00 12pm Prev CIs 10am 2pm 4pm -----http: //f inance. yahoo. com/ Copyright 2000 Yahoo! Inc. Figure 4.1: Stock Price Fluctuations in a day One pinwheel could be used to track the changes in price of one stock. Forward spinning would represent a positive change while backwards spinning would mean a fall in price. The rate of spin would be proportional to the amount of change. With this mapping, it would be very easy for users to take a quick glance at the pinwheel to see how the stock is doing. Constant rapid spinning in the forward or backward direction would be noticeable and make users aware that the price is going through a dramatic change. An ambient display could comprise a number of these pinwheels, one for each stock in one's portfolio. This display would help a user keep track of how all of his investments in the market are doing. The arrangement of the pinwheels in this type of display needs to be one that facilitates the user remembering which pinwheel corresponds to which stock. One possibility is to situate the pinwheels in an array, with a complementary graphical interface that shows which stock is being tracked by each pinwheel. The following figure shows such a setup. Figure 4.2: Possible Stock Portfolio Ambient Display 33 Positioning the pinwheels in an array also calls more attention to the display when one pinwheel starts to spin much faster than the others. The faster pinwheel stands out, making the change more noticeable than when there is only one pinwheel in a display. Another possibility is to give the user the freedom to situate the pinwheels. Since there is no strict spatial relationship between the stocks, there is no need to keep the pinwheels that represent them in a certain arrangement. Leaving the design to the users allows them to situate the pinwheels in a way that would help them remember which pinwheels are mapped to which stocks. For example, they could group stocks by company type, color code them, or order them by importance, placing the more important ones closer by. This assumes that the display is primarily being used by only one user, making it possible for him to personalize the display. 4.3.1.2 Volume of Activity Another value of the stock market that can be tracked is the volume of activity for a stock, i.e. the number of shares that are bought and sold for that stock. Again, this value is constantly changing because both large and small transactions are happening all the time. The following figure shows the variation in volume over a period of four hours. Kana Communications Inc 28-Apr 1:27pm 60000 50000 40000 30000 20000 - t-- - -- - -- L - _ ------ hi- 10000 Copyright 2000 Yahoo! Inc. Volume http://finance. yahoo.com/ Figure 4.3: Volume Activity in a day One pinwheel can again be used to map volume. However, volume is never negative, so the pinwheel would only spin in one direction. The speed of the spin would depend on the volume of activity. Slow or no spinning would indicate little or no activity; rapid spinning would mean the opposite. Arrangements similar to the ones described in the previous section could also be used with this content. However, given just one pinwheel, mapping volume is not as meaningful as mapping price because people care more about the price than about the volume of activity for a stock. A more interesting statistic that can be mapped with multiple pinwheels is how the volume of activity fluctuates over time. If a number of pinwheels are each used to map the change in volume over contiguous intervals of time, a timeline can be created that gives users information about activity over an extended amount of time. 34 There are a number of ways the pinwheels can be situated to create this sort of timeline. One is to arrange them in a way similar to that of a conventional graphical timeline, with events in chronological order from left to right (Figure 4.4a). This means an array of pinwheels, with the pinwheel tracking the most recent change in volume on the right. Another possibility is to also use an array arrangement but instead of following the conventional timeline, have the information flow through the array from left to right (Figure 4.4b). The pinwheel on the far left would then represent the most current time point. Some time later, its information flows into the pinwheel next to it while it gets reset to the most current change in volume. One other option is to simulate time by arranging the pinwheels along the z-axis (Figure 4.4c). In other words, have the most current one in front, with the others behind it. The further back the pinwheel, the further back in time it represents. cuttent past past (a) c) cument (b) Figure 4.4: Possible Timeline Arrangements. The arrow indicates information flow. Having a timeline display also gives aggregate information about how much stock has been bought and sold at multiple points of time, as opposed to just one. Given just one point, one cannot tell from the display if a lot of activity has been happening or if one just happened to look at the display at a moment of high activity. With multiple points, users can tell with one glance what the trend of activity has been. 4.3.2 Implemented Display The main display that was built for the stock market domain is a timeline display. It tracks the volume of activity for a stock over contiguous intervals of time. We decided to track volume instead of stock price because on most days, given different points of time, there is usually a much bigger fluctuation in activity volume than in price. We were also interested in looking into the different interfaces possible for tracking multiple points of time. Having time as a component of the display makes the display aggregately informative as well. 35 The display built consists of two arrays of pinwheels, each made up of five pinwheels, with each pinwheel mapping the amount of stock bought and sold in a 5 second interval for one stock. In one array, information is traveling from left to right, so the leftmost pinwheel shows the amount of activity in the past 5 seconds, the one to its right shows activity in the past 5-10 seconds, then 15-20, then 20-25, and lastly, the rightmost pinwheel represents activity in the past 25-30 seconds. The second array is the opposite, with information flowing from right to left. The pinwheels are updated every five seconds. Users choose which stocks they wish to track by inputting them on an initial GUI. They may also track total activity on the NASDAQ or NYSE. The main accompanying GUI shows 1) the average daily volume, 2) the time of the last reading, 3) the volume at the last reading, and 4) a bar graph representation of the pinwheels. Each pinwheel corresponds to a bar whose height is the speed of the pinwheel and each bar is labeled with the amount of change that it represents. From this GUI, people can tell how much change occurred in one time interval and how the pinwheel speed matches that change. 4.3.3 Implementation Details 4.3.3.1 Retrieving Data All stock information is read off the Yahoo! Finance web pages located at http://finance.yahoo.com. The Yahoo! pages have many views, e.g. DayWatch view which has the price the stock was last traded at, the change in price from the previous day closing, the volume of stock bought and sold today, the average daily volume, the opening price, and the day's range of prices. This view suited our needs because we only needed the day's volume and the average daily volume (explained later in this section). An example web page of this view can be seen at http://finance.yahoo.com/q?s=kana&d=v2. In the program, such a web page is read in as a java.net.URL object. The URL is parsed and the relevant data, mainly the current volume and the average daily volume, is read in. 4.3.3.2 Mapping Volume Changes to Pinwheel Speeds Seven basic pinwheels speeds were chosen for a pinwheel, 0 and 4-9. A SpeedMapping was created that mapped speeds 0-6 to them. A wide range of speeds was not selected because it was important that each speed be distinct from the others. Thus, speeds that were too similar were not picked. 36 Mapping the change in volume to a pinwheel speed was not as simple as it first seemed to be. The problem is that there is a finite set of speeds for the pinwheels, while there are an infinite number of possible changes in volume. In addition, the volume of activity that occurs for one stock can be very different from the volume for another stock, so it would be difficult to come up with a strict definition for what is a large change and what is a small change that would apply to all stocks. Thus, a different approach was used that involves using the average daily volume. By determining how much change usually occurs every five seconds for a stock, we have a base to which current changes can be compared. The following snip of code determines the speed the pinwheel should spin at depending on the change: // determine how much activity there is on average during timeDifference // timeDifference * (average volume / (6.5 hours * 60 minutes * 60 seconds)) double currentAverage = timeDifference * average / (6.5 * 60 * 60); // normalize the amount of activity to the average amount to get a ratio between / and 6 double ratio = (currentVolume - lastVolume)/(2.0 * currentAverage) * 6.0; newspeed = (int)ratio; if (newspeed > 6) newspeed = 6; timeDfference is the amount of time that has elapsed since the last reading. This is normally five seconds, but because of network lag, it is sometimes more. The following chart shows how the volume changes are mapped to the pinwheel speeds: speed 6 5 0~ 4 --- 3 2 0 - 1/3 ave 2/3 ave 4/3 ave 532ve change in volune ave Figure 4.5: Mapping volume changes to pinwheel speeds 37 4.3.3.3 Creating the Timeline Effect Once the new speed has been determined, the following code is used to update the pinwheels: Pinwheel currentpw = pinwheelSet.getFirstPinwheeo; while (currentpw != pinwheelSet.getLastPinwheelo) { Pinwheel nextPinwheel = pinwheelSet.getNextPinwheel(currentpw); currentpw.setSpeed(nextPinwheel.getSpeedo); currentpw = nextPinwheel; } pinwheelSet.getLastPinwheeQ.setSpeed(newspeed); The speed of each pinwheel is set to the speed of the next pinwheel in the set. The speed of the last pinwheel then set to the newest speed. Thus, the last pinwheel in the set corresponds to the pinwheel mapping the most current point in time and the first pinwheel corresponds to the point furthest back in time. This achieves the timeline effect. 4.3.3.4 Pinwheels Control Program The software implementation of the displays has three main classes: 1) StockMarket, 2) StockTracker, and 3) TrackerGUL. StockMarket The StockMarket class starts the program by first initiating serial communication with the pinwheels. This is accomplished using the javax.comm. serial communications package. The program opens a connection between serial port COM1 on the computer and the pinwheels and sets the following parameters to their necessary values: baud rate = 2400 data bits = 8 stop bits = 1 parity = none After serial initialization, the following GUI is brought up to let users choose which stocks they wish to track. Figure 4.6: Initial Stock Tracker GUI 38 As can be seen from the GUI, four stocks may be tracked at a time. Since only two arrays of pinwheels were built, only two stocks were tracked at any given time in our display. As part of initialization, the program creates a PinwheelSet of five Pinwheel objects for each array. StockTracker When the user chooses to start tracking the activity of a stock, a thread is created that is a StockTracker object. The StockTracker class extends java's Thread class and its objects are created with a stock name and a PinwheelSet. The StockTracker object reads, interprets, and maps the data to the Pinwheels in the PinwheelSet. It uses a javax.swing.Timer object to repeat the process of parsing the url and changing the speed of the pinwheels once every five seconds. TrackerGUI The last module in the implementation of this display is the TrackerGUI, the graphical interface that accompanies the display and gives more information. The first GUI built only gave three pieces of information: 1) the average daily volume, 2) the time of the last reading, and 3) the volume at the last reading. This GUI was not convincing enough because it did not show what kind of data was driving the pinwheels. From the GUI, people could guess that the information being mapped was volumerelated but there was nothing that suggested a strong correspondence between the data and the physical display. Thus, a second GUI was built that also includes a bar graph representation that shows how the pinwheels' speeds correspond to the change in volume during one time interval. This GUI, shown below, is currently being used. One is created for each stock being tracked. Figure 4.7: Individual Stock Tracker GUI 39 4.3.4 Discussion An ambient display was created that successfully tracks the amount of activity on the stock market. Figure 4.8: Close up of Single Array Upon being told that it tracks stock market activity, most people's immediate reaction was to assume that it was tracking stock price and that each pinwheel corresponds to one stock. This was because the forward and backwards motion of the pinwheel map naturally to the rise and fall of stock price. One of the most common questions about the display was about our choice of tracking volume changes rather than stock price. This choice stemmed from our theory that active displays are more interesting than mostly stationary displays. Since volume change varies much more than stock price from one five second interval to the next, tracking it seemed more likely to produce an active display. However, it seems that for the general user, a display that tracks stock price is more useful than one that tracks volume changes. People care more about whether stock price is currently going up than about how much stock is currently being bought and sold. Given this, we still chose to track volume because we were interested in how displays could be aggregately informative. In this case, we wanted to look at changes over time. It is possible to track stock price changes over time, but since stock price does not change that much every five seconds, a display tracking stock price would be normally quiet, with one pinwheel spinning occasionally. From our experience, such a display would also probably be better at catching a user's attention because a quiet display that suddenly becomes active is quite noticeable. However, we often need to demonstrate our projects, so we needed an active display that would better serve as a proof of concept. For these reasons, we chose to track volume changes instead of stock price. In the future, user evaluations should be performed on both displays to determine which is more informative and which is more useful to a stock market conscious individual. 40 Figure 4.9: Stock Market Ambient Display As stated before, the two pinwheel arrays of the display had information flowing in different directions; the one with it flowing from left to right was more natural than the other was. This may have been because in our society, we are used to a left to right flow, since we read in that direction. However, an interesting flow is created if the two arrays are combined. Because the right to left array is situated behind the left to right array, information can be thought of as flowing through the closer array from left to right, then curving to the back and flowing through the further array from right to left. A potential problem with this display is its lack of fiduciary marks. To a passerby, the physical interface itself is simply arrays of pinwheels spinning randomly. There is nothing that indicates to them what stock is being tracked and how it is being tracked. Even after they are told that the display is tracking volume changes over time, they may be likely to forget the length of the time intervals and in what direction information is flowing. Thus, it seems that in order for this display to be used in a social space, the pinwheel arrays need to be put in context. However, doing so will most likely require adding labels that can take away from the abstractness and cause bulkiness. The other option is to make the display a more personal one, intended only for a single user or a number of users that will interact with it and frequently have it in their periphery. The lack of some sort of legend or labeling might then be acceptable because the small number of users can learn and get to know the display. 41 -M From my experience with the display, I have found that while it is normally ignored, it does successfully grab attention when the pinwheels stop moving or are all spinning quickly. These situations usually induce looking at the graphical interface to see what kinds of changes in volume are occurring. Surprisingly, the noise caused by the spinning of the pinwheels is often more of an indication of the state of the display than the visible motion of the pinwheels. Our preliminary findings suggest that this type of display can be useful as a personal display. 42 4.4 Application II: Website Visitor Activity People who have sites on the Internet are often interested in statistics about visits to their website, e.g. who is visiting their website and how often it is visited. There are many free and paid services that accumulate and keep these statistics but they are mostly web based and require the user to actively look them up. This is information that people care about but cannot afford to spend much time on, making it a seemingly ideal situation for using an ambient display. An opportunity for such a display arose in collaboration with Dr. Muriel Waldvogel and Professor Jeffrey Huang who are architecting and building the Swisshouse, a digital consulate for science and technology located in Cambridge, MA. The Swisshouse combines physical facilities and digital infrastructures to support a new diplomacy in advanced research and education [20]. Dr. Waldvogel and Professor Huang hope to make it a place for Swiss scientists, researchers, and others to meet and discuss their ideas, both physically and virtually. Their web site is an integral part of this because it allows people to remotely visit the Swisshouse. By using an ambient display to track hits to their site, the people who are physically at the Swisshouse can get a real sense of the activity on the website through the physical motion of the pinwheels. It would be as if the actions of the remote visitors are physically causing the pinwheels to move. On top of that, such a display could also give actual visitors of the Swisshouse a sense of the number of virtual visitors who are there with them. The Swisshouse website will most likely be one that is visited often, so an ambient display for hits to it would be constantly active, making it more interesting than one for a site that is only occasionally visited. 4.4.1 Possible Contents and Interfaces A few possibilities for mapping visitor activity to the pinwheels were discussed. The possible interfaces varied depending on the contents. 4.4.1.1 Geographical Location Mapping visitors to pinwheels based on geographical location would give one a sense of where the visitors were coming from. For people in the Swisshouse, a display with such a mapping could tell them about the people they are interacting with. Since geography is often blurred by the Internet these days, this would be more meaningful and would also provide a means for showing where there is activity in the world. One could see if the hit patterns around the world matched the times when different parts of the world are awake. 43 This sort of mapping is a little difficult because there needs to be a way of dividing the world up into different parts. One possibility is to split it into four: north, south, east, and west. This is also tricky because one cannot easily divide the globe up into these four segments. Since the display is meant to give people a sense of activity in other parts of the world, it seems reasonable to set north, south, east, and west portions of the globe relative to the location of the display. This would mean taking a 2D map of the world, centering it on Cambridge, MA and defining the regions accordingly. The speed of the pinwheel for a certain region would then depend on the number of visitors to the site from that region. The pinwheel arrangement for this type of setup would need to clearly show which pinwheel is mapped to which part of the world. This could be done by situating the pinwheels so that they are in a north, south, east, and west configuration, as shown below. Each pinwheel would be in the position that corresponds to the region they are representing. In order for this arrangement to work well though, either the viewers of the display would have to be situated in a specific place or the pinwheels would have to be spread throughout the space. The latter might weaken the effect of the display since spreading the pinwheels apart would make it more difficult to make comparisons that show that one area is more active than another. Figure 4.10: Directionally Arranged Pinwheels The world can also be divided by time zones. With this division, having one pinwheel per time zone would clearly show if high activity corresponded to certain parts of the day for all parts of the world. The pinwheels could be situated in a circle, following the positions of their respective time zones. However, it would be difficult to tell which pinwheel represented which time zone, unless each was labeled. Labeling the pinwheels adds text to the display, which tends to take away from its abstractness, so it was generally avoided if possible. An alternative arrangement, shown below, is an 44 array of 24 pinwheels (for the 24 time zones), laid out on top of a map of the world, such that each pinwheel falls in the time zone it represents. People are familiar with maps, making them an addition that can be used without explanation. Such an arrangement is similar to the wall of clocks one often sees at airports that shows the time in different cities of the world. It shows what area each pinwheel is mapping and allows for comparisons of activity in different parts of the world. Figure 4.11: Time Zone Arrangement Instead of placing a pinwheel in a time zone on the map, they could also be placed in different locations on the map to track activity from those different locations. This type of display would work well because of its clarity in showing what each pinwheel is mapping. It is quite easy to make the connection that a pinwheel situated on Geneva is tracking the number of visitors from Geneva. There would be little doubt in a user's mind about the contents of each individual pinwheel. In the case of the Swisshouse, it would make sense to place pinwheels on locations of people it wishes to bring together with the Swisshouse, e.g. places in Switzerland, key research labs in the US, academic institutions around the world, etc. An interactive display could even give users the ability to move the pinwheels around to different locations, giving them full control of the information they see. This could potentially make the display more believable. It would also make it easy to reconfigure the display if, for example, a large research institution were to move locations. 4.4.1.2 Domain Name The difficulty in mapping visitors by geographical location is in actually getting a visitor's geographical location. A visitor's IP address is the most location relevant information that can be gotten about a visitor. With an IP address, we can get the host name of the computer, which often 45 indicates what country the computer is located in. However, there are many .com or .edu or .org hostnames that could be anywhere in the world. Frequent travelers also pose a problem because they dial up and use the same hostname everywhere they go. Since it is currently technically very difficult to pinpoint the exact location of a visitor to the website, an alternative mapping is to map the visitors to the pinwheels based on domain names. For example, with five pinwheels, all .com visitors could be mapped to one pinwheel, .edu to another, .org to another, .gov to another, and all others to the last one. This display would give a sense of what kind of people are visiting the web site, whether they are corporate employees, government officials, members of academia, etc. Since there is no spatial relationship between the contents of these pinwheels, a clean and simple array arrangement would work best. But we would then again have the problem of users not being able to easily identify which domain name each pinwheel is tracking. As an alternative to labeling, a pictorial representation of the domain name could be used as a background for a pinwheel to indicate which domain name it is tracking. Using a pictorial representation does not add text but is a potential source of confusion because it is not always clear what a picture is representing. 4.4.1.3 Web Page Yet another approach to mapping visitors to pinwheels would be to have the pinwheels present the number of visitors to a certain page or group of pages. The Swisshouse website, like many other web sites, is split into several sections. If one pinwheel were used to track one section of the website and each pinwheel's rate of spin were directly proportional to the number of visitors to its section, the physical display would show what sections of the site are most frequently visited. An accompanying GUI could show the domain names of the visitors, making the overall display one that presents both which sections of the site are popular and what kind of people are visiting the site. With these contents, there is no particular spatial relationship between the sections of the website so again, a clean and simple array would work best. The display would then give users a sense of how many people are visiting a section of the site, allow for easy comparison of activity at different parts of the site, and aggregately inform people whether or not there are virtual visitors to the Swisshouse. To put the array in context, images that are used in the website as icons for certain sections can be used to label the pinwheels. If these images are obvious icons of the sections, it would not be hard for users to associate each pinwheel with its corresponding section of the website. 46 An alternative web page based content relies on the fact that web sites often have a tree like structure. If one pinwheel mapped activity to one page, the pinwheels could be situated in the same tree arrangement its pages are in. The display could then be used to track one visitor's path through the web site and provide a means for studying how people normally navigate through the site. This type of display, however, is no longer ambient in the sense that information cannot be gathered from it peripherally. Peripherally, the most information one would get is that there is a visitor to the site. But to get all the intended information, one would have to watch the pinwheels rather closely. Figure 4.12: Tree Structure Arrangement 4.4.2 Implemented Display The display built for this application domain tracks visitors by web page sections. The pinwheels are situated in an array and control of which pinwheel is being mapped to which section is given to the user. An array was chosen because it was clean and simple. The Swisshouse has a busy environment and having a rather complicated arrangement amongst all the activity would most likely cause confusion. The accompanying GUI allows users to choose a section to track and which pinwheel to track it with. Users can change this section to pinwheel mapping at any time. The GUI also shows the visitors to a certain section, their IP addresses, and the time they entered that section. The pinwheels are updated whenever a visitor enters or exits a section of the website. 47 4.4.3 Implementation Details 4.4.3.1 Overall System Architecture The most challenging part of the implementation was keeping track of the visitors to the different areas of the site. This was accomplished with the use of PostgreSQL and AOLserver. PostgreSQL is an object-relational DBMS that supports almost all SQL constructs. It is the database being used to track visitor activity. With PostgreSQL, we can easily determine how many visitors are on a page, where they are from, how often they have visited the page, and even where they were before. AOLserver is a multithreaded, Tcl-enabled dynamic web server that is often used for large scale, dynamic web sites. It supports AOLserver Dynamic Pages (ADPs) that allow embedding of Tcl scripts in HTML pages. With the Tcl scripts, visitor activity can be inserted into and updated on the database. Tcl has several functions, including getting the IP address of the visitor and the hostname from an IP address, both of which are useful for this application. Both PostgreSQL and the AOLserver are installed on grasp.media.mit.edu, a local lab machine. We can successfully track visitors using PostgreSQL and AOLserver. The Java program that controls the pinwheels accesses information from the database using JDBCTM. The following diagram shows the architecture of the system. grasp.me dia.mitedu AOLserver: Dynamlic Pinwheels C COntrol Progzamn +-+ -- Pages --- AOLsevei PostgreSQL _ (T a HTM pages + Figure 4.13: Website Tracker System Architecture 4.4.3.2 Tracking Visitors It would be ideal if the Swisshouse web site were built using AOLserver because the Tcl scripts could be embedded into the web pages, allowing them to directly communicate with the database and thereby removing the middle layer in the diagram shown above. However, this should not be a 48 restriction, so the system that was built does not rely on the Swisshouse site using the AOLserver. This also makes the system a black box that can easily be used to track other web sites. Since the Swisshouse web site has not yet been completed, a prototype web site was built for the system. In this prototype, the web site was broken down into six different sections, each consisting of one page. It would be easy to increase the sections to ones of multiple pages. Two tables are stored in the database, websitevisitors, and hostnames. The former tracks visitor activity and the latter keeps a table of IP addresses and their corresponding hostnames. The middle layer between the web pages and the database consists of two ADP pages, enter.adp and exit.adp, that are called by a web page when it is loaded and exited, respectively. enter.adp takes one argument, the page being entered entepage, and performs the following sql statement: insert into websitevisitors values ('$ipaddress', '$enterpage', '$time', 't'); This creates an entry in the database indicating that visitor with IP address ipaddress entered page enterpage at time time and is onsite (t for true). It also checks to see if Opaddressis in the hostnames table and adds an entry for it if it is not. A call to enter.adpis embedded in the page to be tracked with the following html code: <body background=http://grasp /sren/enter.adp?enterpage=main bgcolor=white>. The call is invisible to the user. exit.adp takes in two arguments, the page being exited, exipage, and the page the visitor wishes to go to, topage. It then performs the following sql statement: update websitevisitors set onsite='f' where ipaddress ='$ipaddress' and page='$exitpage' and onsite='t'; This simply takes the entry created when this page was entered and sets the onsite variable to 'f', indicating that the visitor has left the page. An alternative would have been to remove the entry completely, but leaving it in gives us a history of the website activity. After updating the database, the page redirects the browser to topage. While a normal link out of an html page looks like the following: <a href="http://feng.media.mit.edu/background.html">Background</a>, links are now coded like so to incorporate exit.adp: <a href="http://grasp/sren/exit.adpexitpage=main& topage=http://feng.media.mit.edu/background.html">Background</a> Tracking another website would simply entail incorporating calls to the two ADP pages into the html pages. 49 4.4.3.3 Mapping Number of Visitors to Pinwheel Speeds With speeds, we again have the problem of mapping an infinite number of values (possible number of visitors) to a finite number of speeds. In this case, it seems fair to say that if there are, for example, 100 visitors to a page, then it doesn't really matter if the number becomes 101. However, if there is only one visitor to a page, then increasing to five visitors means a 5-fold increase, which is rather significant. Thus, the following mapping was chosen: Number of Visitors (x) 0 15 x <5 55 x <25 x <125 25 1255 x <625 6255 x <1000 1000 x Speed 0 1 2 3 4 5 6 Figure 4.14: Mapping number of visitors to pinwheel speeds There is a five-fold increase associated with each speed increment. These numbers were set assuming that normal activity on the web site will be in the hundreds and that the number of visitors will sometimes reach 1000. Once the Swisshouse web site is complete, the numbers should be recalibrated to ones that make sense, given the usual amount of activity on the site. 4.4.3.4 Pinwheels Control Program The Java program that controls the pinwheels uses JDBCTm to access the tables in the database and retrieve information about the visitors who are currently on a page (or in the future, a section of the site). It also has the GUI component of the display that shows where the visitors on the different pages are from. The main classes of the program are 1) WebSiteTracking, 2) WebSiteInfoPanel, 3) PageTracker, and 4) PinwheelInfoFrame. WebSiteTracking The WebSiteTracking class is the main class that performs program initialization. This entails first creating a connection with the database. Then serial communications are set up, in the same way as in the Stock Market Activity application. Lastly, the main GUI, consisting mainly of the WebSiteInfoPanel, is created. From this GUI, one can choose to start tracking a new page with a pinwheel, edit the tracker for a page, or stop tracking a page. 50 IIng- Figure 4.15: Initial Website Tracker GUI PinwheelInfoFrameandPageTracker Choosing one of the first two options brings up the following PinwheelInfoFrame object. Figure 4.16: GUI for Configuring Website Tracker From it, one can set a page to track and which pinwheel to track it with. PageTracker objects are thread objects that hold this information - each object checks activity levels for a certain page and reflects it in the specified pinwheel and in the GUI. Upon closing of the PinwheelInfoFrame, a new PageTracker object is created if a new page is being tracked (option 1) and values for an existing PageTracker are reset if the tracker was edited (option 2). Every two seconds, a PageTracker object checks the websitevisitors table in the database to determine how many visitors are on its page using the following sql statement: select * from websitevisitors where page= page name and onsite = 't' The PageTracker object then determines the new pinwheel speed and updates the pinwheels accordingly. WebSiteInfoPanel Each PageTracker object also has a GUI that lists the IP addresses of visitors to the page, their corresponding hostnames (determined using the hostnames table of the database) and the time they 51 entered the site. This GUI is added to the WebSitelnfoPanel and is shown when the user selects the page from the list of pages being tracked, as shown in the figure below. Currenly Tracking applications backrond 2000-1615-47530 1,rfemedamtedu 18. myediiamitiedu ___2_._ 18.85-28.63 stomymedia.mitedu 185 28,63 smymedia mit edu 18.85-28.63 s 19.8.28.053 stormy media mt-9du 18.85 2863 stormy media mit edu stomrmedia mitedu 18.8528.63 18,858.63 media mil.edu stommedia mlt edu 2000-03-1615:47:30.0 2000-03-1610:20:19.0 2000-03-1618-50:56,0 2000-03-1618-51:01.0 2000-03-16_18 51:14.0 2000-03-17 1534:19 0 2000-03-1715 34:37 0 2000-03-1715 58:09.0 Figure 4.17: GUI Displaying Visitor Information This GUI gives people full control of which pinwheel is mapped to which section of the website. Thus, users can choose what information they want to see and how they want to see it. 4.4.4 Location An important characteristic of an ambient display that arose in discussions about the Swisshouse is the location of the display. In the room the pinwheels are to be in, Dr. Waldvogel and Professor Huang plan on having one wall that is a screen projecting things from the web. It was first thought that the pinwheels could be placed in front of that screen, making it look as if the pinwheels were being spun by a bit wind that is coming from the screen. However, this might cause confusion between what the display is presenting and what the screen is projecting, since the two are not related. Superimposing the display on a possibly active big screen might also lessen the effect of the spinning pinwheels. The point of the display is to give visitors of the Swisshouse a sense of the virtual visitors that are there with them. Thus, its current tentative placement (since the House is not complete) is as a portal to another area of the house where virtual communication will take place, e.g. video conferencing, distant collaboration, etc. The pinwheels will line the entrance, giving users who are about to enter that portion of the house a sense of how many people will also be in that area with them. A blueprint of the Swiss House, with the pinwheels' locations marked can be found in appendix D. 52 4.4.5 Discussion Unfortunately, the Swisshouse is not yet complete so the display for this application is not fully in place and functioning. However, the prototype built is complete and will be easy to port to use with the Swisshouse web site. The following is a rendering of the Swisshouse with the pinwheels. Figure 4.18: Rendering of Ambient Display in Swisshouse The only problem with implementation was that the tracking system relied on the ADPs on grasp being called every time a visitor entered a page. However, this does not always happen because browsers often cache pages. Thus, when a user goes back to a page, the database is not informed. Besides this, the system successfully tracks visitor activity to a web site. In the discussion of possible interfaces for the Swisshouse ambient display, we felt that an array arrangement was good because of its simplicity. From our experience, arrays seem to be the best arrangement for data that does not have obvious spatial relationships. With this type of data, it is better to use a simple array instead of trying to convey some subtle spatial relationship with a 53 complicated layout. However, as discussed in the stock market application, the problem with arrays is that it is not obvious what the contents of each individual pinwheel are. In order for the display to be one that is informative to users that are not in frequent contact with it, as is the case with the Swisshouse, it must be placed in context somehow, preferably by an addition to the physical interface that is not bulky or distracting. Having the GUI also accomplishes the task but does so only if users go to look at it. 54 4.5 Application III: Natural Wind Movement The movements of natural phenomenons such as solar wind, hurricanes, and pressure systems are hard for one to envision because of their intangibility and large span. Ambient displays can be used in this type of application domain to present information that is normally hard to visualize. They will not only inform people of natural events that are important to them but also give people a sense of what is happening over their area in a global sense. Wind movement is such a natural event. Many people, from the professional aviator to the casual sailor, care about the speed and direction of the wind in their area. When they are outside, most people can feel the wind direction at one certain point but do not know how it changes or flows over a whole area. The information people normally get about the wind is in the form of numbers and letters; nothing gives them a real sense of how the wind is blowing. An ambient display, on the other hand, could possibly do so. 4.5.1 Possible Contents and Interfaces 4.5.1.1 Wind at a Single Location An ambient display for tracking wind movement should firstly show what direction the wind is blowing and secondly give a sense of the strength of the wind. One idea is to have the pinwheels spin as if they were being blown by the wind. However, a pinwheel can only spin in two directions and winds of different directions, for example a wind from the north and one from the northeast, will likely cause it to spin in the same manner. Thus, using only the spin will not be enough to present both pieces of information. Since wind is directional, it can be thought of as flowing through a space. If many pinwheels occupied this space, each would spin at a different time depending on when the wind flowed through its particular area. Thus, another possible display would comprise a matrix of pinwheels, each spinning at different times to portray wind flowing through the area. For example, a natural wind from the northwest would create a "wind" that flows through a matrix of pinwheels and causes them to spin in the pattern shown below. 55 1 Time Point 2 Time Point 3 Time Point 4 Time Point Figure 4.19 Ambient display showing wind direction at various time points. The pattern is repeated to convey wind blowing in from the northwest. Time Point 5 A wave effect is created that shows the direction of the natural wind. The speed of the natural wind can be portrayed either by the speed at which the "wind" flows through the matrix or by the speed at which the pinwheels are spinning. The former would clearly show how fast the wind is blowing while 56 the latter would give more of a sense of the strength of the wind. A combination of both could be used. With this type of display, the pinwheels could be arranged in many ways over an area. One option is an organized matrix; the resulting "wind" wave would then travel through the area very systematically. Another option is to scatter clusters of pinwheels throughout the area. As opposed to the former option, the timing of the spinning would not be as rigid. There would be pauses of different lengths between the spinning clusters. The matrix would probably give a much clearer indication of the direction of the wind while the scattered clusters would be more aesthetically interesting and natural because of their higher entropy. 4.5.1.2 Multiple Wind Systems Given a large area, many wind systems could be moving over it at the same time. An area of pinwheels could again be used to show how all the wind systems are interacting. A wave effect can also be used, but instead of moving through the area at a consistent angle, the wave could change directions somewhere in the area, to portray that another wind system is more dominant in the area. Another possible display for showing multiple wind forces does not use the wave effect. Instead, the pinwheels spin at different speeds depending on how the different wind forces on them balance out. Thus, in this collection of pinwheels, some would spin quickly, some slowly, and some not at all. This display would not give a sense of wind direction but would give a sense of the strength of the wind at different points of an area. Superimposing the physical display on top of a map of the area that is being tracked would place the pinwheels in context and make it easy for users to tell what the strength of the wind is at a certain location. Tracking multiple wind forces means that the ambient display is tracking wind movement over a large area since there is only one wind speed and direction at a given geographical point. Only from a more global view can one see the different wind systems moving over a geographical area. Because of this, tracking multiple wind forces would require a large collection of pinwheels. With only a few, it would be difficult to see a change in wind direction or to compare wind strengths in different areas. 4.5.2 Implemented Display For this application domain, wind at a single location was tracked. A 3x3 matrix was built and the wave effect described previously was used to portray wind direction and speed. We decided to build 57 this type of display because it was more appropriate than one for multiple wind systems, given the number of pinwheels we have. The program reads in wind speed and direction from the web every hour and updates the pinwheels accordingly. 4.5.3 Implementation Details 4.5.3.1 Wave Effect Algorithm The most difficult part of this implementation was creating the wave effect. This required determining the time at which each pinwheel should start and stop spinning. To do so, the wind is represented as a vector that enters the pinwheel area from the top left corner and travels through the area at the angle of the natural wind it is representing. As it travels, it enters and exits pinwheels, causing them to start and stop spinning respectively. The wave effect algorithm first calculates the distance the vector must travel before it hits each pinwheel. This distance, enterLength, is defined as the distance from point a to point b in the diagram below. The distance from point a to point c is the distance, exit~ength, the vector must travel before it exits a pinwheel. a windetection (0,0) d )c+ theta d a- 2 ZC if (d: wjndDjrectjon) theta = windDirect ion - d else theta = d - windDirection enterLength = z * cos(theta) enterLength b + pinwheel width, y + pinwheel height) e3itLength C Figure 4.20: Vector Calculations for Wave Effect Algorithm The equations on the right side of the diagram show the calculations involved in determining enterLength. To determine exitLength, x andy are substituted by x + pinwheel width andy + pinwheel height, 58 respectively, and the same calculations are made. With this set up, the pinwheels can be anywhere in the area, not in a fixed order. Thus, both the matrix of pinwheels and the scattered clusters of pinwheels can be implemented as an interface. The speed at which the wave travels through the area is directly proportional to the speed of the natural wind it is representing. Given the speed of the natural wind, natspeed, a timer is created that goes off once every 2000/natpeedmsecs. A counter, count, is used that increments by one every time the timer goes off. count is set to zero every time the wind vector first enters the pinwheel area and keeps counting up until the vector has traveled through the whole area. When count = enterLength for a pinwheel, the pinwheel starts spinning; when count = exitLength for a pinwheel, it stops spinning. Thus, the time between counter increments is the time it takes for the wind vector to travel one unit of distance through the pinwheel area. The following is a graph of this time vs. natural wind speed for speeds between 0 and 50 mph. 2500 2000 1500 1000 500 00 10 30 20 40 50 60 Speed (mph) Figure 4.21: Counter Increment Time vs. Natural Wind Speed As can be seen from the graph, the faster the wind speed, the shorter the time increment. This shortens the amount of time elapsed before the wind reaches a pinwheel, shortening the overall time needed for the wind to travel through the area. Thus, the wave appears to be moving faster through the area. After the wind has traveled through the area, count is reset to zero and the wind enters the area again from the top left corner. 4.5.3.2 Retrieving Data Currently, weather is being read in from The Weather Channel at http:/ /www.weather.com. It provides relatively current reports of weather all over the world. For example, 59 http:/ /www.weather.com/weather/us /zips/02139.html, shows weather for Cambridge, MA. Weather conditions are updated once an hour and wind conditions are reported in the format: speed mph from the direction, e.g. 13 mph from the Southwest. The URL is read in and parsed in the same way the Stock Market Activity application reads in its URLs. The speed is used as it is, while the direction is converted into a numerical angle between 00 and 3600. The following figure shows the conversion. S 90 A SW ,,45 SE 135 EIS8O ,OW 225/ NE 315 NW 270 N Figure 4.22: Numerical Angles of Directions 4.5.3.3 Pinwheels Control Program The Java program that controls the pinwheels consists of two main classes: 1) WindMovement and 2) WindPinwheel. WindPinwheel A WindPinwheel object contains a Pinwheel, (x,y) coordinates for the pinwheel's location in the area, and the enterLength, and exitLength for the pinwheel. The (x,y) coordinates are used to calculate enterLength and exitLength. WindMovement The WindMovement class is the initialization class. It first performs the serial communication initialization that is required for each program to communicate with the pinwheels. It then reads in 60 the (x,y) coordinates for each pinwheel in the area from a file and creates a WindPinwheel for each one. The wave effect algorithm described above works only if the wind is coming from a direction between North and West (between 2700 and 360'), for it assumes the wind vector enters the area from the top left corner. Suppose, however, that the wind were blowing from a direction between South and West (between 00 and 900). If we rotated the area by 900 to the right, we could then use the same algorithm because the wind would now be coming from a direction between North and West. Rotating the area involves changing the coordinates of each WindPinwheel. Thus, another task of the WindMovement class is to rotate the area, change the coordinates for each WindPinwheel accordingly, and change the direction of the wind. The figure below shows the rotation required for the four different sets of directions and how the coordinates and direction should change given the rotation. 90 windDirection < 180 0 5 windDirection < 90 windDirection = 180 - windDirection x = are a_width - (x + pinwheelWidth) y = are aheight - (y + pinwheelHeight) windDirection = 90 - windDirection x = area_width - (y + pinwheelHeight) y=x 180 5 winddirection < 270 windDirection = 270 - windDirection x=y y = are a_width - (x + pinwheelWidth) 270 5 windDirection < 360 windDirection = 360 - wvmdDirection x=x y=y Figure 4.23: Conversions for Area Rotations After initialization and rotation has been completed, the WindMovement class calculates enterLength and exitLength for each WindPinwheel. count is then set to zero, the timer is started, and the program follows the rest of the wave effect algorithm, starting and stopping pinwheels at their appropriate calculated times. 4.5.4 Display Orientation A design issue that was overlooked in the initial design is the orientation of the display. We experimented with two, a horizontal orientation where the pinwheels are facing up and a vertical 61 orientation where the pinwheels are facing forward. The horizontal orientation was more natural because the simulated wind flowed through the display horizontally, the same way natural wind does. When the natural wind was blowing from the northeast, the wave also traveled through the display from the northeast. Figure 4.24: Horizontally Oriented Matrix Display We also experimented with the vertical orientation because displays are normally vertically upright. This display was more unnatural because waves traveled vertically through it. However, from reading maps, people are used to mapping the directions to vertical positions. Thus, it was not too difficult to interpret a wave traveling from left to right as a wave traveling from west to east. Figure 4.25: Vertically Oriented Matrix Display 62 Another possible orientation is to have the pinwheels laid out horizontally and face down from the ceiling. With the display over them, users can get a real sense of movement when the wave travels through the display. This might be most effective in giving users the sense that wind is blowing through the area. 4.5.5 Discussion Since the positions of the pinwheels are read in from a file, it was easy to create displays of many different pinwheel arrangements. Thus, both a matrix arrangement and a scattered clusters arrangement were implemented and evaluated. The matrix arrangement worked well in portraying the direction and speed of the wind. Upon being told that the display tracked wind movement, most people were able to see the direction in which the wave was moving and inferred that it was the direction in which wind was moving. The scattered arrangement also worked well in portraying direction, mainly because there were only eight possible directions. Figure 4.26: Scattered Clusters Display To explore the ability of the displays to present directions other than those eight, angle directions were manually keyed into the program. What was found was that it was easier to distinguish between directions that varied by 100 with the matrix arrangement. This was due to its systematic timing; since there was never a point where no pinwheel was spinning, it was easier to track the path of the wave through the matrix. Exact direction could not be determined, but most people got a sense that the wind, for example, "was not coming directly from the north, but from a little to the left". 63 Another display that was tested was one where all the pinwheels were spinning constantly, but sped up when the wave went through its area. On our 3x3 matrix, this only made the display confusing, but it would probably work much better with a larger matrix. This type of display could show that there is wind over the area, with the constantly spinning pinwheels, while also showing the direction and speed of the wind. A display that visualizes characteristics of natural wind was successfully built for this application domain. However, this display may not qualify completely as being ambient for it does not peripherally give people a sense of the direction of the wind. Without directly focusing on it, it seems that users can become aware that there is wind and even get a sense of how fast the wind is, but their foreground attention may be needed to tell wind direction. Though using the wave effect to portray wind direction seems to work, one may argue that it is unintuitive because it portrays wind as a block of flowing air that moves through a space, affecting different areas of the space at different times. Thus, it might be more natural to use a weathervane to portray wind direction, or an anemometer that gives both wind speed and direction. While this is true, the advantage of using this type of ambient display is that it can gives users a real sense of movement. A weathervane can indicate that there is wind from a certain direction, but it does not show that movement in any way. Since one of the key characteristics of ambient displays is their kinetic motion, it made sense to us to use them to portray wind movement through an area. 64 4.6 Application IV: Network Activity Of the three previous applications, the first tracked a rather global event that many people care about, the second tracked a more personal piece the we hope will give viewers a sense of presence of others, and the third tracked a natural event. For a fourth application, we wanted something that could potentially cause people to take action in one way or another. For this to happen, the application domain needed to be something we had control over and therefore something closer to home. Network activity in the Media Lab turned out to be a fitting choice. The MIT Media Lab is one of constant activity. There are people working at almost all hours of the day and many are often engaging in network intensive work. Thousands of bytes per second are sent through the lab's routers throughout the day. What makes it an interesting domain for ambient displays is that network activity varies from floor to floor and at different points in the day. An ambient display could show where the most activity is occurring in the building. This may be because that particular area has a large demo or paper submission deadline the next day. An ambient display could also show if there is a pattern of activity in the building, i.e. if one area of the building usually arrived and was active earlier than another. It could also help explain to its viewers network problems. If the network is slow, a glance at the display could tell them if there was heavy activity on their particular router that was causing the lag. If a user's network is down, the display could tell him if it was only his machine that was experiencing the problem, or if the network in his area (or the whole building) was down. We also wanted to see if such a display could induce its viewers to take some action. For example, if the display indicated that there was no activity in a certain area, during a point of the day when it was highly unlikely that no activity was occurring, it might induce people to check to see if there was something wrong with the router in that area. If several routers were dependent on a main router that suddenly went down, such a display could also indicate the source of the problem and lead to someone fixing the main router. For these reasons, an ambient display for network activity seemed to be a potentially interesting display. 65 4.6.1 Possible Contents and Interfaces The contents of for the display were not difficult to decide on. By network activity, one usually means the amount of traffic on the routers, both incoming and outgoing. The following graph shows the activity on one of the routers in the media lab, plexus-6-1.media.mit.edu. 'Daily' Graph (5 Minute Average) 12560.0 k 2560.0 k - - - -- --:- --- - 1i280.0 k (i 640.0 k 19I2. OX / (2.% k .Bs(..9%) CrntI:6 % A....g. I:2..kB.(. k 0 22 20 :18 16 14 12 10 6 6 4 2 0 22 20 18 ±16__ Max Jn.2529.S kB/s (20.2%) Average In 127.3 kB/s (1.0%70) Current In.-116.6 kB/s Q).9%) Max Out: 518.8 kB/s (4.2%) Average Out: 47.0 kB/s (0.4%) Current Out: 51.6 kB/s (0.4%) Figure 4.27: 'Daily' Router Activity As can be seen from the graph, there can be quite a big of variance in activity from one five-minute interval to the next. The difference between the amount of incoming and outgoing data also varies with the time intervals. Thus, an ambient display tracking both incoming and outgoing data will be quite active and will allow for comparison of the two. Tracking network activity is similar to tracking stock market activity so many of the interfaces discussed for that application could apply to this domain as well. However, while stocks had no spatial relationship to each other, the different routers in the building do. This characteristic introduces some other potential interfaces. One possibility is to use two pinwheels to track each router (one for incoming bytes and one for outgoing bytes), and to lay them out in the same spatial arrangement as they are physically situated in the building. This means creating different levels that correspond to floors and laying the pinwheels horizontally on each level. Given some simple landmarks to use as points of references, it would then be simple for a viewer who is familiar with the Media Lab to see how much activity is currently occurring in any section of the lab. Another possible interface that takes advantage of the spatial location of the routers is one that is not as specific about where activity is occurring. Instead of tracking activity by individual routers, it categorizes it into activity on different floors of the lab and uses two pinwheels to track activity on 66 each floor. The pinwheels are laid out in a matrix of two columns, with each row representing one floor. This arrangement is simple and allows users to easily sense and compare the amount of activity occurring on the different floors. The arrangement of the pinwheels in a matrix also makes it simple to determine which pinwheels are mapping activity on which floor; the top row maps activity on the top floor and the bottom row maps activity in the basement. In this way, we can quite successfully show the contents of each individual pinwheel. 4.6.2 Implemented Display The ambient display that was built for this application domain tracks the amount of activity floor by floor and has the pinwheels laid out as a 2x4 matrix. The floors represented in the matrix are, in order, the fourth, third, second, and basement. No lab activity occurs on the first floor. Each row represents one floor and consists of two pinwheels. The left pinwheel represents the average number of bytes per second of incoming data that went through the routers in the past five minutes on that floor and the right pinwheel represents the average number of bytes per second of outgoing data. The pinwheels are updated every five minutes, so they are always showing the average amount of activity in the past five minutes. The left pinwheel spins in a clockwise motion while the right spins counterclockwise. This makes it look as if there is an incoming "bit wind" that is spinning the left pinwheel while the right pinwheel is spinning out an outgoing "bit wind". This interface was chosen because of its simplicity. The other interface discussed, where each router had its own set of pinwheels, could potentially get very large and bulky. In addition, users would probably not be able to get much information peripherally if there are numerous pinwheels each spinning with their own information. This interface, though very informative, might be rather confusing. Thus, we decided to implement the 2x4 matrix, hoping it would peripherally give users a general sense of the activity in the lab. However, we did not want to restrict users to tracking activity by floors. They should be able to track activity on specific routers if they wish. The display's accompanying GUI provides this option. For each row of pinwheels, users can choose which router on the floor they wish to track, or they may track all activity on the floor. Thus, if there is a specific area of the lab they want to pay attention to, they may still do so. 67 4.6.3 Implementation Details 4.6.3.1 Retrieving Data Current activity for all the routers is available from the Media Lab's NeCSys (network and computing systems) router monitor page, at http://necsys.media.mit.edu/mrtg. Information for specific routers is at http://necsys.media.mit.edu/mrtg/<name of router>.html. Each of these pages has graphs of activity on their specific router, like the graph shown previously. The four pieces of information that are used are the daily average number of bytes of incoming and outgoing data per second, and the current (5 minute) average number of bytes of incoming and outgoing data per second. The URL is read in as a java.net.URL object and parsed for those pieces of information. As stated before, users could choose to track total activity on the floor. This is accomplished by reading in data for all the routers on a specific floor and adding them all up. 4.6.3.2 Mapping amount of activity to pinwheel speeds The amount of activity is mapped to pinwheel speeds the same way changes in volume were mapped to the speeds in the stock market application. Thus, the speed is set according to how the current average compares to the daily average. The seven basic pinwheel speeds chosen for this display were 0, and 5-10. These speeds worked best for the pinwheels used. Speeds below five could not make the pinwheels spin, most likely because of the weight of the paper pinwheel. 4.6.3.3 Pinwheels control program The Java program for this display contains two main classes: 1) NetworkActivity and 2) Tracker. The NetworkActivity class is the initialization class. It performs serial initialization and creates the accompanying GUI shown below. 68 Router CurTentBytes In Current Bytes Out Figure 4.28: Initial Network Activity GUI From the GUI, users can input the specific router they wish to track or they may input "All" to track all routers on a floor. Pressing the start buttons creates Tracker objects that are responsible for tracking activity for one or multiple routers. Each Tracker is created with a router name and a PinwheelSet of two pinwheels. Every five minutes, the object reads in the appropriate URL(s) and parses them for the relevant data. After normalizing current activity to average activity, it updates its pair of pinwheels to the appropriate new speeds. Additionally, it updates the GUI to reflect the current statistics. 69 plexus.meaia.mit eau Router Curren~ytes in Current ytes Out -~ -~ t x .-- 4 2. meJi r a tri i . 7 CA 0 1 129j95 Figure 4.29: Tracking Router Activity The GUI was designed so the numbers are physically laid out and colored the same way the pinwheels are. This allows for easy correlation between the specific numbers and the pinwheels they are spinning. 4.6.4 Discussion An ambient display for presenting network activity information was successfully created. With it, users can get a sense of how much activity is occurring in different areas and floors of the lab. It also allows for comparison of activity between the floors. 70 Figure 4.30: Ambient Display for Network Activity unconnected to data (left), and a typical state of the display during the day (right) The display did present to us a pattern of activity. The second floor pinwheels are most consistent from day to day. This follows because most people on the second floor follow normal working hours and are the most consistent in their day-to-day work. For the other floors, we often see a sudden fast spinning of the pinwheels, indicating that someone is making heavy use of the network, or spinning late into the night, indicating that someone is working late. The simple layout of the pinwheels does make the display easier to read. Upon being told that the display tracked incoming and outgoing activity on the different floors, all of the small number of people that we introduced to the display were able to conclude that the different rows mapped to the different floors, in top to bottom order. A simple addition to the acrylic on which the pinwheels are mounted could take away the need to tell users that the display is floor-based. For example, we could add a picture collage of the projects that are on the fourth floor between the two pinwheels of the 71 first row, to indicate that that row is tracking fourth floor activity. One potential problem is that people may forget which pinwheel is tracking incoming data and which is tracking outgoing data. While again it could be solved with a "IN" and "OUT" label, a more aesthetically pleasing solution might be to use icons that people are familiar with and naturally associate with incoming and outgoing events. The display does a good job of peripherally giving one a sense of network activity in the Media Lab. A next step would be to use this display for an extended amount of time to see if it is a good indication of network problems and if it induces users to take action. A scenario for doing so is discussed in section 6. 72 5 Discussion Throughout the design, implementation, and evaluation of the ambient displays built for this thesis, various issues were recurring themes that came up with each application. This next section will discuss these issues and make some conclusions about ambient displays based on the research that was done for this thesis. 5.1 Appropriate Display Contents One of the main goals of this thesis was to determine characteristics that make for appropriate contents for the displays. Through our experiences with the displays, the following are some such characteristics we have discovered: 0 Constantly varying Application domains that have constantly varying data are appropriate for ambient displays because the displays easily reflect these changes in data. With an ambient display, users will most likely not have to devote part of their foreground attention to the data sources for this domain. The ambient display can, in real-time, give them a sense of what is happening. Such an ambient display seems to be more effective because it is more active and therefore less likely to fall completely into a user's background of attention and be forgotten. * Imprecise Ambient displays seem best at giving people a sense of activity. There is almost no way for people to get precise data from just the physical displays. Thus, any domain that depends on precision should probably not use ambient displays to convey information. In our applications, multiple changes in information were often mapped to the same speed. It did not matter to us if 1000 shares of a stock were just sold or if 1005 shares were just sold. What did matter was that a larger than average amount of stock was just sold; this is the information the displays convey. 0 Intangible As discussed in the wind movement section, ambient displays can be used to visualize information that is intangible and hard to imagine. For example, they can be applied to many natural events, such as wind movement, solar winds, and earth movements. These are hard to envision because of their global scale but can be materialized with ambient displays. While materialization of these natural 73 events may make them unnatural, e.g. interpreting wind as a block of flowing air, the advantage of an ambient display is its ability to portray movement through real motion of its own. 0 Alerting Ambient displays can also be useful for telling users when an event has occurred, for example, when someone one needs to speak to has arrived at work or when an important email has arrived. Assuming the display can successfully move out of the periphery of the user's attention and into the foreground, it can save users the need to constantly check if the person or the email has arrived. * Important to intended users Ambient displays should portray information that is important to their intended users. Having a display that tracks stock market activity in a kindergarten classroom would not make as much sense as having one that tracks wind movement. Thus, in picking contents for an ambient display, one should start with all domains that are interesting to the people who will be exposed to the display. 5.2 Purpose of Ambient Displays One prevalent research issue about ambient displays is what purpose they should serve. Should they be solely informative displays or should they be action inducing? In other words, to what level should they induce the user to react to the information they are presenting? Ambient displays should mostly remain in the periphery of one's attention and should have the capability of transitioning to the foreground of one's attention should anything extreme occur. This transition should bring the situation to the user's attention but should not force the user to take any action. The purpose of ambient displays, like the natural ambient events they are derived from, is to inform users of the state of events; whether users choose to act upon this knowledge is up to them. To fulfill this purpose, displays need to be able to catch users' attention. Obtrusive displays can do this, but ambient displays should be unobtrusive. Thus, an alternative method is needed. From the displays built, it seems the best method is to have some sudden change in the motion in the display, i.e. have all the pinwheels stop suddenly, or have them all spin very quickly for an extended amount of time. These sudden changes seem to work best for catching a user's attention. The displays built all use one of these effects to portray extreme states in their application domain. 74 5.3 Intended Users The intended audience of a display is a crucial factor in designing displays. Not only is it important in determining what domain is appropriate for a display; it also influences the design of the physical interface. From the different situations we have thought of, it seems the space of ambient display environments can be split, based on intended users, into the following 2x2 matrix: Business Home Personal These users are in constant contact with the ambient display. They "own" the display and have the chance to get accustomed to it and learn how its rhythms and motions correspond to different data. Social These users share the display Many people are exposed to with a few others and come in displays in this location, frequent but not constant potentially only for a short contact with the display. while and infrequently. Figure 5.1: Users in Ambient Display Environments The home/personal and business/personal spaces were combined because their only potential difference is in the type of content that is mapped. The displays in that combined space can be very personalized and their single intended user should be given as much control as possible over their configuration. Giving the user control makes the display much more meaningful to the user because he has chosen exactly what he wants to see. These displays can get by with almost no fiduciary marks that put the pinwheels in context because it seems that the user is less likely to forget something he configured himself. The persistency of the display in his space will allow him to get used to the display and it is expected that he will eventually learn to "read" the display fully without paying too much attention to it. As an example, our stock market display could work well for this type of user because he knows exactly which stock(s) is being tracked and how it is being tracked. By "Social", we mean displays that are accessed by many during a day. In a home environment, the users of the display stay relatively constant, so it seems that there is some chance for them to personalize the display (based on some group consensus) and to grow accustomed to it. However, these users are not likely to have the display constantly in their space, so it is more likely for them to forget the current mapping of the display. Thus, these displays need to be either somewhat intuitive or they need to be put in context, at least enough so that the users can be quickly reminded of the contents of the display, if they should forget. 75 The social/business block has displays that have many users, each of whom are in contact with the display for varying amounts of time. The advantage of these displays is that they can reach a larger number of people and therefore can be used for domains like network activity, a local (as opposed to global) application that is important to all users in the building. In order to be meaningful to all their possible users, these displays must be clear in what they are representing. It seems that people who are not in frequent contact with a display will not likely remember what domain it is mapping and are even less likely to remember how it is mapping events in that domain to the pinwheels. Therefore, putting the displays in context is especially important in a social/business space. It is hard for displays to be ambient in a social/business space because people are not around it enough to get information peripherally. Thus, for this thesis, I focused a lot more on a personal and social/home environment, where people have the chance to get accustomed to the display. For me, using an ambient display in those settings makes more sense because people get the chance to personalize the display and understand how the information is being mapped. Creating an ambient display for social/business settings can be useful because the display is in the physical environment and accessible to a multitude of users. However, in my opinion, these displays are no longer ambient media and are only physical interfaces that visualize information. Thus, the displays need to be almost as explicit as graphical representations. Marian Petre, in her paper Why Looking Isn't Always Seeing: Readership Skills and Graphical Programming[21], states: "Much of what contributes to the comprehensibility of a graphical representation isn't part of the formal programming notation but a 'secondary notation' of layout, typographic cues, and graphical enhancements that is subject to individual skill." It is difficult for ambient displays to use these secondary notations because that would entail the addition of labels and other enhancements that could very likely take away from the display. Thus, it is important to consider carefully whether an ambient display for a certain domain is appropriate for social/business settings. Sometimes it is probably better to use a real physical implementation of a graphical interface instead of an abstract ambient display that might very likely be ignored by many because of its lack of clarity. 5.4 Creating Convincing and Believable Displays The accompanying GUI enhances the believability of the display. Showing users exactly what data is being presented by the displays makes the display more convincing than a standalone physical interface. With the latter, there would be nothing to keep users from suspecting that the pinwheels 76 were being randomly spun at different speeds. Given the GUI, users can see that the data really corresponds to the motion of the pinwheels. For this reason, our displays have accompanying GUIs. Allowing people to interact with the displays seems to be an even stronger way to convince people of the validity of the display. It seems that users believe in a display more when they have a sense of causality. They want to see a display behave differently if they change its contents. If it does, they are more likely to believe that the display is showing actual data. If it does not, the display loses all credibility. Currently, this interaction is being done completely through graphical interfaces. An alternative would be to make the display a sort of tangible user interface. Tokens could be created that hold different contents. Putting different tokens on the display would then cause it to be mapped to different contents. This sort of interaction might be a good way to give users a sense of causality because their physical act of placing a token on the display causes the display to act a certain way. However, making a display this sort of TUI requires adding to the physical interface and should therefore be designed carefully so as not to make the display colossal or obtrusive. The mapping of a display can also attribute to its credibility. If people have a sense of what the data is doing and therefore an expectation of how the display should act, their expectations should be met, or they may decide that the display is inaccurate. This is also why it is crucial to use a mapping that makes sense to users. 5.5 Putting the Displays in Context Given just the physical display of pinwheels, it is almost impossible for users to determine what information the display is presenting without someone telling them or the presence of a visual cue there to clue them in. For this reason and reasons discussed in the previous section, it is essential that each display be put in context in some way, especially if it is intended for a social setting. This can be done by adding on to the physical interface or with the accompanying GUI. The former is better because it allows people to get information fully from the display, without first glancing at the GUI. The challenge is to do this without adding bulk to the display and taking away from the elegance and simplicity of the pinwheels. 5.5.1 Indicating Display Contents Several ways of putting the displays in context by adding to the physical interface were discussed in the design of the displays. One is to label the display. We tried very hard to stay away from textually labeling the displays for two reasons. The first was that it made it obvious that the display was an 77 informational display and would prevent it from blending and fitting in with the architectural space. The second was that it took away from the abstractness of the display. In my opinion, ambient displays will never be as explicit and quantitatively informative as a graphical display. If an ambient display can only work if it is as explicitly labeled as a graphical display is, then one should probably consider whether or not a graphical representation might be more appropriate for the given situation. Another option for indicating display contents is to use a graphical background that literally puts the pinwheels in context with an image. This way people can tell what information is being mapped to each pinwheel and with the right background, the display remains artistic and aesthetically pleasing. These images, however, need to be obvious in what they are representing. A good method for choosing images seems to be to choose ones that people are familiar with and would very naturally associate with the intended content. 5.5.2 Indicating Individual Pinwheel Contents Once the displays are in context, the next challenge is to show what information each individual pinwheel is presenting. This is important because it is how people can get information out of the display. Simply knowing what domain a display is mapping is almost useless if the user does not also know how and what events in the domain are being mapped to the display. In addition to indicating display contents, the GUI can also be used to show the contents of each pinwheel. The Stock Market application uses this approach. Having the GUI be similar to the actual physical interface makes the information each pinwheel is mapping clearer. It allows users to directly correlate each pinwheel to its complementary part in the GUI. Another option is to give control to the users, allowing them to determine which pinwheel is presenting each stream of information. As previously discussed, this is suitable for displays that are in a personal setting. Giving users the ability to personalize the display allows them to create a display that works best for them. Graphical backgrounds can also be informative of what each pinwheel is mapping. As with the images discussed in the previous section, it is also essential for these backgrounds to be intuitive. The use of a map seems to be a particularly good choice because people are familiar with them and know how to use and read them. Giving people something they are used to as a reference can aid greatly in putting the individual pinwheels in context. 78 The arrangement of the pinwheels in the display can also show the contents of each pinwheel. If done well, the display will be more intuitive to its viewers, making it easier to understand. In the Stock Market application, the interface used is a left to right array of pinwheels. This interface does not make people think that the pinwheels are creating a time line. An interface that would probably have been more intuitive for this particular content is an array in the xz plane, where the pinwheels are placed one behind another. With it, people would be more likely to think in terms of time flow, since pinwheels that represent points further back in time are physically further away from the viewer. In the Network Activity application, the layout of the pinwheels correlates easily to the building, with each level of the matrix representing a floor of the building. This is a good example of how layout can be used to imply contents since one can see that the higher the pinwheel, the higher up in the building the activity it is tracking. 5.6 Using Displays vs. Using Fixtures Ambient displays consist of ambient fixtures, standalone ambient media objects. The purpose of ambient fixtures was also to peripherally convey events through changes in motion, sound, light, etc. The ambient displays are much more powerful because they comprise a collection of ambient fixtures. Through the design of these displays, we have found that having multiple fixtures creates a much stronger effect not only because of its ability to portray aggregate information but also because it allows users to compare pinwheels to each other. It seems to be easier to see that a pinwheel is spinning quickly when it is next to a slower spinning pinwheel than when it is by itself. Giving them this basis for comparison helps the user discern the differences in speed and makes the displays more meaningful to them. 5.7 Using Audio vs. Visual Effects The pinwheels convey changes in information through changes in their spinning. Their intended use was for people to visually notice a change in their motion and thus sense a change in information. Surprisingly, their accompanying audio was more effective. Faster spinning pinwheels made more noise, thus lots of noise corresponded to high activity, and little noise corresponded to low activity. A sudden stop in noise worked very well in catching people's attention. For me, it is mainly how the displays transitioned from the background to the foreground of attention. This finding seems to imply that ambient displays that convey changes through audio effects might be more effective than those that use visual effects. Consider an ambient display that uses flowing 79 water to convey change. It has both a visual effect and an audio effect. The sound of flowing water is unobtrusive and not disturbing for most people and can be processed in the background of one's attention. While people who are not paying much attention to it might not visually notice if the water stops flowing, a stop in the sound of water flowing will likely catch their attention. The visual effect is necessary though to present the information. Thus, a good model for an ambient display might be one that has both visual and audio effects; the visual to convey information and the audio to perform the background to foreground transition. 5.8 Learning Effect As found in studies with the ambientROOM, there is a learning effect associated with ambient environments. A user's ability to get information from such an environment is dependent on how long they have been associating with it. From the displays built, we found that this is also true with ambient displays. However, one problem with ambient displays is that people may get so used to them that they fall into the background of a user's attention completely. At that point, it is very difficult for the display to perform the transition between the foreground and background of a user's attention. It seems that this problem may be overcome by having the displays have audio effects. Just like visual effects, users get used to the audio effects and learn to interpret the amount of noise as the amount of activity. As discussed earlier, audio effects are also more effective in grabbing a user's attention. 5.9 Location Location of the displays is an important factor in how effective the displays are. In order for them to be truly ambient, the displays need to be in a location that is peripherally accessible to their intended users. It is almost impossible for an ambient display to be visually informative if it is not at least peripherally viewable by its users. Ambient displays that are not are then only revealing when users glance at them. Although this requires foreground attention, they are still useful because they are quickly accessible, definitely much more so than a graphical display from the web. Thus, it is best if visually dependent displays are in the periphery of a user's vision, but if this is not possible, they should at least be in a visually easily accessible area. Audio effects are again relevant here because they can be used to convey information when a user cannot easily view the actual display. Most of the time, the Stock Market display is not in my line of 80 vision, but from the sounds of its spinning, I can still get a sense of the level of activity on the market. Lighting is another effective technique for portraying information to users when the display is not in their line of sight. Casting lighting on the pinwheels in a certain way creates shadows that change depending on the motion of the pinwheels. This technique is used in the Web Site application. In the Swisshouse, using this technique allows users to get information from the display even if they have their backs to the display and are looking at another exhibit. The shadows are cast onto visitors, giving them a sense of the activity of the display and therefore the number of virtual visitors that are in the Swisshouse with them. This technique allows an ambient display to reach many more users. 5.10 Pinwheel wind vs. Real wind Another issue that often came up in discussion is that of whether the pinwheels should be spinning realistically, that is if the "bit wind" that spins them should follow the rules of nature. Imagine strips of paper being blown by the wind. One would defmitely find it odd if two adjacent strips were being blown in opposite directions, because it would look unnatural. Deciding whether this should be an issue with ambient displays was crucial in the design stage because it would have a lot of affect on the resulting displays. What we found is that imposing the restriction that a display also has to be natural would take away almost all the changeable dimensions of the display since in nature, it would be almost impossible to have a collection of pinwheels not all spin in the same direction and speed. In addition, the bit winds that flow through the displays are supposed to be metaphors for actual data, so users understand that the displays will not follow the laws of physics. In fact, almost no one who has been introduced to the displays has commented on their unnatural behavior. Thus, we decided not to take the laws of nature into account in designing the displays. 5.11 Mapping multiple values to finite number speeds In almost all the applications, we were faced with having to map an infinite number of possible values to a finite number of speeds. Only a small number of speeds were chosen because it is necessary that users are easily able to distinguish between the various speeds. Having multiple pinwheels instead of a single one facilitated this, but it was mainly made possible by the choice in speeds. The speeds chosen are 1) all distinguishable from each other, 2) capable of making the pinwheels spin, and 3) not so noisy as to make the display obtrusive and annoying. To map the 81 multiple values to the finite set of speeds, we normalized all data to its average and set the speed depending on how the data compared to the average. 82 6 Future Work Ambient displays were born out of ideas and research done on peripheral awareness and tangible user interfaces (TUIs). We have many ideas and hypotheses about how ambient displays can be used. With our toolkit, we now have a technically sound infrastructure from which we can quickly develop numerous ambient displays. We have also built a number of displays, proving the concept of ambient displays, and have looked into the multitude of possible contents and mappings for the pinwheels. The next step for research in ambient displays should be to bring the displays into different environments to test our ideas and hypotheses. These user evaluations, if successful, will complete the evolution of ambient displays and solidify their place in the world of ambient and tangible media. 6.1 Difficulty of User Evaluations User evaluations for ambient displays cannot be done in a short amount of time. It would not work to have subjects come and "use" these displays for just an hour. During that time, the subjects, knowing the point of the experiment, would probably not be able to "ignore" the displays. They would most likely give the displays too much foreground attention and get more information than they would if the displays were really in the periphery of their attention. A short period is also not enough for the learning effect to take effect. It would probably take a significant amount of time just for the subjects to get used to the display. Thus, to truly test the effectiveness of ambient displays, there needs to be long evaluation periods where users can get accustomed to the displays and interact with them on a regular basis. The results from these evaluations will more accurately give us a sense of whether the displays work the way they are intended to. Given the timeframe and other goals of this thesis, we were unable to perform these long term evaluations, but in this section, we propose some possible scenarios for user evaluations. 6.2 User Evaluation Goals The user evaluations should serve to answer the following questions about ambient displays: * Do displays give users the intended information? We claim that creating a timeline for stock market activity can give users a sense of the trend of activity. User evaluations should determine if users can peripherally get this sort of intended information from the displays. 83 * Are they intuitive to understand? Many different interfaces and pinwheel arrangements were discussed in the design of the displays. They were all designed to be simple and easy to understand. While this may theoretically be true, user evaluations should test the validity of the ideas behind the interface designs. * Are they believable? This is a simple question to ask users but it is a crucial one. In order for ambient displays to be an alternative to graphical information interfaces, they need to be believable. * Do they perform the background to foreground transition well? As discussed before, a key characteristic of ambient displays is their ability to catch a user's attention if an extreme state occurs. While we hypothesize that this is done best with a sudden stop or start of the pinwheels, user evaluations should test our hypothesis and help pinpoint the exact threshold at which an object moves to a user's center of attention. User evaluations that answer these questions will not only give us feedback about the effectiveness of our displays but also provide some insight into how the displays may potentially be improved. It would be best if the user evaluations had subjects that are not already familiar with ambient media. The evaluations would then give feedback about how the general public would react and use the displays, not just about how those of us who have already thought about and interacted quite a bit with ambient media would. 6.3 Possible User Evaluation Scenarios 6.3.1 Stock Market Conscious Individuals The stock market ambient display is definitely a good candidate for user evaluations. It would require having one subject who is invested in the stock market and cares about its daily ups and downs. Since most people who have seen the displays have commented that a display showing the stock price activity of the stocks in one's portfolio would be more useful, such a display should be used instead of the one tracking volume that we currently have built. The user evaluation could involve having the subject use this display for an extended amount of time, perhaps several months. At the end of each day, the user could be asked to answer the following questions: 84 1. According to the display, how did your stocks do today? Do you believe it? 2. Was the display 3. a. noticeable most of the time b. sometimes noticed, sometimes not c. almost unnoticed Were there ever periods where the display caught your attention? If so, describe the circumstances and what your course of action afterwards. By watching these answers over a long period of time, we would be able to tell if the subject was able to get information out of the display and if this information was received peripherally or because the subject paid attention to the display. We would also be able to watch the learning effect take place; we would be able to see when the novelty of the display wears out and whether the user grows more accustomed to the display with time. The evaluation period should be at least a month. At the end, asking the subject whether or not he enjoyed having the display and his suggestions for it would help us determine the feasibility of using displays as an alternative to, in this case, a stock ticker. 6.3.2 Physical Presence and Activity One of our main ideas about ambient displays is that they should give people a sense of activity. Thus, a fitting place for a display is one where there is a lot of human activity and where a person's physical presence is pertinent to the rest of the people in the area. One such place is an office or a research lab. Another possible evaluation, then, is to place a display in a professor's office that comprises of pinwheels that represent presence and activity of all of his students. The spinning of a pinwheel would correlate to the presence and activity level of a student. If a student were not in lab, the pinwheel would be inactive. If a student were in his office, but not working much, the pinwheel would spin slowly. High activity would cause the pinwheel to spin quickly. This user evaluation would be particularly good for evaluating how effective displays are at performing the transition between the background to foreground of a user's attention by spinning or stopping suddenly. The subject (professor) would be asked to note when each student arrives at and leaves the lab area. He will be able to do so if the display successfully catches his attention. He can also be asked question two from the previous section to determine how and when he becomes accustomed to the display. At the end of the evaluation period, the subject should be asked if he has 85 come to rely largely on the display to determine if a student is in the lab and if the student is busy or in the middle of something. If this is true, then the display is successful in at least that respect. 6.3.3 Network Activity Like the stock market, network activity is also a good candidate for user evaluations. A good test of the display would be to leave it in an area of the Media Lab that is at least peripherally accessible to a number of students. After a brief introduction, the display should be left alone and not given special attention. By doing so, it is more likely to fade into the periphery of attention and its true effectiveness can be explored. After a year of use, the subjects (people in the area) should be asked the following questions: 1. Do you think the display was successful in peripherally giving you information about the current network activity? 2. Did you use the display? for what reasons? 3. Did the display help in indicating sources of problems with the network? 4. Did the display ever catch your attention? If so, in what circumstances? What was your following course of action? Leaving the display in an environment for an extended amount of time and asking for subject evaluations afterwards will give us very good insight into how people react to the display and how they learn to use it. This evaluation would also explore the issue of how action inducing the displays should and can be. 6.3.4 Interface Interpretation Questionnaires A less time consuming evaluation would be on the different interfaces for the displays. The displays need to be representative, intuitive, and believable. The different interfaces for each application domain can be tested for each of these qualities through questionnaires that probe into how people intuitively interpret the displays. One type of questionnaire could present an application domain, show an arrangement of the pinwheels and ask the subjects how they would interpret the display. With the stock market application, most people assumed that the display was tracking stock price, with one pinwheel per stock. This seemed to indicate that people might tend to map single bits of information to each 86 pinwheel; a single bit of information in the stock market is the price of one stock. This type of questionnaire would give more of this type of indications. Another questionnaire could simply present the interfaces and ask users if each of the contents and mappings made sense and if each display was believable. Given out to enough people, this type of questionnaire could give us a good sense of people's general reactions to the different interfaces. 6.4 Summary The scenarios described here are just a few of the many possible user evaluations that can be done for the ambient displays. We are now at a point where the most important next step is to move the displays out into different environments. Doing so will show us how realistic our concepts and intent for ambient displays are. 87 7 Conclusion The goal set forth for this thesis was three-fold. The first was to create a sound technical infrastructure for the pinwheels. The second was to study appropriate contents for ambient displays and the third was to study the different mappings possible for these displays. To accomplish these goals, a toolkit for pinwheel development was first built that allows for easy assembly and configuration of robust ambient displays. This toolkit consists of hardware and software components and abstracts away many of the low level implementation details of the pinwheels. It will allow for easy development of ambient displays by many users in the future. From the applications developed thus far, the toolkit has shown to be reliable and easy to use. In an effort to reach some conclusions about ambient displays, four displays were built. The first tracked stock market activity by following the volume of stock that exchanged hands over contiguous intervals of time. The second was a website application catered towards the Swisshouse that gives actual visitors to the Swisshouse a sense of the virtual visitors that are there with them. The third tracked a natural event, wind movement, showing that ambient displays can be used to visualize occurrences that are normally hard to envision. The last tracked network activity in the Media Lab, a domain that is important and in our control, in hopes that it would show activity patterns in the lab and help users pinpoint causes of network problems. Through the development of these displays, we were able to make some conclusions about the contents and design of ambient displays. Ambient displays are mainly informative interfaces that give users a sense of activity in a domain that is important to them. Peripherally, they present a general sense of the current happenings of that domain, but up front, they can present aggregate information on top of individual pieces of data. The layout and background of the displays can be used to place the pinwheels in context and to show what information is spinning each pinwheel, two elements that are crucial in making a display meaningful to users. An ambient display is also not complete without a GUI interface from which people can get specifics about the information if they wish; the GUI is also instrumental in convincing users of the validity of the display. The next big step in the research of ambient displays is to perform user evaluations to see if they can really be used as an informative layer between users and graphical interfaces that demand constant foreground attention. From the research done for this thesis, the possibility for this is promising. 88 Appendix A: H' [H' UIND HHI"_Wz (*4 I~b * 00 --4 0 Circuit Schematics 11. 14 This appendix contains the circuit schematics. 14 ON ~ -0 '0 (*1 III Figure A.1: Pinwheel Board 89 14 -4 M ~ j -tin -A I (*1 t~ * sn 0 0 0 (*1 (*1 III 1,041 (.4 I o +5V +5V Ji 1 - 2T10UT 3 44 T15 Ul 1 15 10 6 0 2 1 RIN R10UT 3 20 1 R22 R20UT 13 2 3 4 5 12 6 i 19 6 RJ12 TN T2IN T20UT 18 2+8 2+ C2+ C2C2- Cl+ Ci- N V GND VCC V- V- ______ 14 32 RJ12 __ MAJ033CSD 0 p Title Pinwheel Serial htjafface Board Size B Date: File: Number (c) 2000 TMG LIT Media Lab, Tangible Media (roup Sheet of 12-May-2000 C:\WIDOWS\.eria.sch Drawn By: Revisin. Sandia Ren Appendix B: Pinwheel Structure Components This appendix contains pictures of the pinwheel components and how they fit together. Figure B.1 Pinwheel Structure Components 91 B.1 Pinwheel Circuitry Figure B.2 Finished pinwheel circuit board. To minimize size of board, RJ12 connectors were mounted on one side with all other components on the other. B.2 Pinwheel Container Figure B.3 Front view of Pinwheel Container. Figure B.4 Side view of Pinwheel Container. 92 Figure B.5 Back view of Pinwheel Container. Figure B.6 Front view of container with motor. The motor shaft protudes out of the large hole in front. Screws inserted in the two small holes hold the motor in place. Figure B.7 Back view of container with motor. Wires of the motor lay along the ridge and connect to pinwheel board at the top. 93 Figure B.8 Fully stuffed pinwheel container. The motor slides into the bottom half while the pinwheel circuit board fits into space on top. B.3 Pinwheel Figure B.9 Front view of pinwheel. The paper is slid onto motor shaft and its corners are folded in. A shaft collar on top of the paper corners keeps them in place. 94 Figure B.10 Side view of pinwheel. 95 Appendix C: Pinwheel API This appendix contains the Pinwheel API, the software component of the toolkit. It can be used by any Java program. The overall package summary is followed by the API for each main class. This documentation was created using javadoc. C.1 Pinwheels Package Summary Package pinwheels Clas Summar Pinwheel PinwheelSet SpeedMapping Exception Summary _ InvalidSetException InvalidSpeedException LastPinwheelException NoSuchSpeedException NotInSetException 96 C.2 Pinwheel Class pinwheels Class Pinwheel java. lang.Object +--pinwheels . Pinwheel public class Pinwheel extends java.lang.Object Field Summary static int BACKWARDS static int FORWARDS Constructor Summary Pinwheel(char c, java.io.OutputStream outstream) Pinwheel(char c, java.io.OutputStream outstream, SpeedMapping smapping) Pinwheel (char c, java. io .OutputStream outstream, java. lang. String pwname) Pinwheel(char c, java.io.OutputStream outstream, java. lang. String pwname, SpeedMapping smapping) Method Su mmary d, 4) void decSpeed() decreases pinwheel speed by one int getDirection() get current pinwheel spin direction char getID() get pinwheel id java. lang. String getName () get pinwheel name int cretSDeed() 97 get current pinwheel speed SpeedMapping getSpeedMapping () get pinwheel speed mapping void incSpeed() increases pinwheel speed by one void setDirection(int dir) sets direction of spin for this pinwheel void setName (java. lang. String strName) sets the name of this pinwheel void setSpeed(int newspeed) sets pinwheel to a new speed in the current direction void setSpeed(int changespeed, int direction) sets the pinwheel to a new speed in a certain direction void setSpeedMapping (SpeedMapping speeds) sets speed mapping for this pinwheel java.lang.String toString() prints out pinwheel characteristics: name, id, and speed Methods inherited from class java.lang.Object clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Field-Deti FORWARDS public static final int FORWARDS BACKWARDS public static final mnt BACKWARDS Constructor Detail Pinwheel public Pinwheel(char c, java.io.OutputStream outstream) Parameters: c - unqiue pinwheel id outs tream - OutputStream to allow writing to serial port Pinwheel public Pinwheel(char c, java. io . OutputStream outs tream, SpeedMapping smapping) Parameters: c - unique pinwheel id 98 out sream - OutputStream to allow writing to serial port smapping - this pinwheel's SpeedMapping Pinwheel public Pinwheel(char c, java.io.OutputStream outstream, java. lang. String pwname) Parameters: c - unique pinwheel id outsream - OutputStream to allow writing to serial port pwname - pinwheel name Pinwheel public Pinwheel(char c, java.io.OutputStream outstream, java.lang.String pwname, SpeedMapping smapping) Parameters: c - unique pinwheel id outsream - OutputStream to allow writing to serial port pwname - pinwheel name smapping - this pinwheel's SpeedMapping Method Detail getID public char getID() get pinwheel id Returns: char id getSpeed public int getSpeed() get current pinwheel speed Returns: int current speed getSpeedMapping public SpeedMapping getSpeedMapping () get pinwheel speed mapping Returns: SpeedMapping speed mapping getDirection public int getDirection() get current pinwheel spin direction Returns: int current direction getName public java.lang.String getName() get pinwheel name Returns: String pinwheel name 99 setName public void setName (java. lang. sets the name of this pinwheel Parameters: String strName) String - name of pinwheel setDirection public void setDirection(int dir) sets direction of spin for this pinwheel Parameters: int - direction for pinwheel to spin setSpeedMapping public void setSpeedMapping(SpeedMapping speeds) sets speed mapping for this pinwheel Parameters: SpeedMapping - speed mapping setSpeed public void setSpeed(int changespeed, int direction) throws InvalidSpeedException, java.io.IOException sets the pinwheel to a new speed in a certain direction Parameters: int - new speed int - direction of spin Throws: InvalidSpeedException - new speed is invalid (unmapped) speed java.io.IOException - problem writing to the serial port setSpeed public void setSpeed(int newspeed) throws InvalidSpeedException, java.io.IOException sets pinwheel to a new speed in the current direction Parameters: int - new speed to set pinwheel Throws: InvalidSpeedException - new speed is an invalid/unmapped speed java.io.IOException - problem writing to the serial port incSpeed public void incfpeed() throws InvalidSpeedException, java.io.IOException increases pinwheel speed by one Throws: InvalidSpeedException - increasing speed results in invalid speed java.io.IOException - problem writing to serial port 100 decSpeed public void decSpeed() throws InvalidSpeedException, java.io.IOException decreases pinwheel speed by one Throws: InvalidSpeedException - decreasing speed results in invalid speed java.io.IOException - problem writing to serial port toString public java.lang.String toString() prints out pinwheel characteristics: name, id, and speed Overrides: toString in class java.lang.Object Returns: String pinwheel characteristics 101 C.3 PinwheelSet Class pinwheels Class PinwheelSet java.lang.Object +--pinwheels .PinwheelSet public class PinwheelSet extends java.lang.Object Constructor Summary PinwheelSet () constructor creates an empty set of pinwheels with no name PinwheelSet (char initpw, char endpw, java.lang.String name, java.io.OutputStream outstream) constructor creates a set of pinwheels with ids from a start id to an ending id. PinwheelSet (java.util.Vector pinwheels) constructor creates a set using the pinwheels passed in. PinwheelSet (j ava. util.Vector pinwheels, java. lang. String name) constructor creates a set using the pinwheels passed in and the name Method Summary void addPinwheel (Pinwheel pinwheel) adds a new pinwheel to the set Pinwheel getFirstPinwheel () returns first pinwheel of the set Pinwheel getLastPinwheel () get last pinwheel of the set java. lang. String getName () returns name of the set Pinwheel getNextPinwheel (Pinwheel pinwheel) gets the next pinwheel from a set int getNumPinwheels () gets number of pinwheels Pinwheel getPinwheel (char pinwheelID) gets a pinwheel from the set with a certain id Pinwheel getPinwheel (java.lang. String pinwheelName) gets a pinwheel from the set with a certain name java.util .Vector getPinwheels () returns pinwheels in the set as a vector 102 void removePinwheel (char pinwheel) removes pinwheel with a certain char id void removePinwheel (Pinwheel pinwheel) removes pinwheel void removePinwheel (java. lang.String pinwheel) removes pinwheel with a certain name void replacePinwheel (Pinwheel oldPinwheel, Pinwheel newPinwheel) replaces a pinwheel in the set with another one void setSpeedMapping (SpeedMapping speeds) sets a SpeedMapping for all pinwheels void start(int speed) starts all pinwheels spinning at a certain speed void start(int speed, int direction) starts all pinwheels spinning at certain speed in certain direction void stop() stops all pinwheels java. lang. String toString() returns string with pinwheel set infoormation Methods inherited from class java.lang.Object clone, equals, wait, wait finalize, getClass, hashCode, notify, notifyAll, Co structor Detail PinwheelSet public PinwheelSet () constructor creates an empty set of pinwheels with no name PinwheelSet public PinwheelSet (java.util.Vector pinwheels) constructor creates a set using the pinwheels passed in. Parameters: Vector - pinwheels to create set out of PinwheelSet public PinwheelSet (java.util.Vector pinwheels, java.lang.String name) constructor creates a set using the pinwheels passed in and the name Parameters: Vector - pinwheels to create set out of String - name of this set 103 wait, PinwheelSet public PinwheelSet(char initpw, char endpw, java.lang.String name, java.io.OutputStream outstream) throws InvalidSetException constructor creates a set of pinwheels with ids from a start id to an ending id. Parameters: char - id of first pinwheel char - id of last pinwheel String - name of this set OutputStream - handle on serial port to create pinwheels with Throws: InvalidSetException - thrown if end id is before start id Method Detail getPinwheel public Pinwheel getPinwheel(char pinwheelID) throws NotInSetException gets a pinwheel from the set with a certain id Parameters: char - id of pinwheel to retrieve Returns: Pinwheel pinwheel in the set with that id Throws: NotInSetException - thrown if no pinwheel in set has that id getPinwheel public Pinwheel getPinwheel (java. lang. String pinwheelName) throws NotInSetException gets a pinwheel from the set with a certain name Parameters: String - name of pinwheel to retrieve Returns: Pinwheel pinwheel in set with that name Throws: NotInSetException - thrown if no pinwheel in set has that name getNumPinwheels public int getNumPinwheels() gets number of pinwheels Returns: int number of pinwheels in set getPinwheels public java.util .Vector getPinwheels () returns pinwheels in the set as a vector Returns: Vector vector of all the pinwheels in the set getName public java.lang.String getName() 104 returns name of the set Returns: String name of pinwheel set getFirstPinwheel public Pinwheel getFirstPinwheel () throws pinwheels .exceptions .EmptySetException returns first pinwheel of the set Returns: Pinwheel first pinwheel in the set Throws: pinwheels.exceptions.EmptySetException - thrown if set is empty getNextPinwheel public Pinwheel getNextPinwheel(Pinwheel pinwheel) throws NotInSetException, LastPinwheelException gets the next pinwheel from a set Parameters: Pinwheel - pinwheel to get next pinwheel after Returns: Pinwheel pinwheel after the one passed in as a parameter Throws: NotInSetException - thrown if passed in pinwheel is not in the set LastPinwheelException - thrown if passed in pinwheel is the last one in the set getLastPinwheel public Pinwheel getLastPinwheel() throws pinwheels .exceptions .EmptySetException get last pinwheel of the set Returns: Pinwheel last pinwheel of the set Throws: pinwheels.exceptions.EmptySetException - thrown if the pinwheel set is empty addPinwheel public void addPinwheel (Pinwheel pinwheel) throws pinwheels .exceptions .DuplicatePinwheelException adds a new pinwheel to the set Parameters: Pinwheel - pinwheel to add to the set Throws: pinwheels.exceptions.DuplicatePinwheelException - thrown if a pinwheel with the same char id already exists in the set replacePinwheel public void replacePinwheel(Pinwheel oldPinwheel, Pinwheel newPinwheel) throws NotInSetException, pinwheels .exceptions .DuplicatePinwheelException replaces a pinwheel in the set with another one Parameters: 105 Pinwheel - pinwheel to replace Pinwheel - pinwheel to replace with Throws: NotInSetException - thrown if pinwheel to be replaced doesn't exist in the set pinwheels.exceptions.DuplicatePinwheelException - thrown if another pinwheel with the same char id as the new pinwheel already exists in the set removePinwheel public void removePinwheel (java. lang. String pinwheel) throws NotInSetException removes pinwheel with a certain name Parameters: String - name of pinwheel to remove Throws: NotInSetException - thrown if no pinwheel by that name exists in set removePinwheel public void removePinwheel (char pinwheel) throws NotInSetException removes pinwheel with a certain char id Parameters: char - id of pinwheel to remove Throws: NotInSetException - thrown if no pinwheel with that id exists in set removePinwheel public void removePinwheel(Pinwheel pinwheel) throws NotInSetException removes pinwheel Parameters: Pinwheel - pinwheel to remove Throws: NotInSetException - thrown if pinwheel isn't in set start public void start(int speed) throws InvalidSpeedException, java.io.IOException starts all pinwheels spinning at a certain speed Parameters: int - speed to start pinwheels spinning at start public void start(int speed, int direction) throws InvalidSpeedException, java.io.IOException starts all pinwheels spinning at certain speed in certain direction Parameters: int - speed to start pinwheels spinning at int - direction to spin pinwheels in 106 stop public void stop() stops all pinwheels setSpeedMapping public void setSpeedMapping(SpeedMapping speeds) sets a SpeedMapping for all pinwheels Parameters: SpeedMapping - speed mapping for all pinwheels toString public java.lang.String toString() returns string with pinwheel set infoormation Overrides: toString in class java.lang.Object Returns: String pinwheel set name and information about all pinwheels in set 107 C.4 SpeedMapping pinwheels Class SpeedMapping java. lang.Object +--pinwheels .SpeedMapping public class SpeedMapping extends java.lang.Object Constructor Summary .Vector speeds) SpeedMapping (j ava .util constructor - sorts the speeds that are passed in and maps speeds 1, 2, 3, etc. IMethod'Summr y void add(int speed) adds a new speed to the mapping - it wil be inserted in the appropriate place to keep the order of the mappings java . util .Enumeration getAllMappedSpeeds () returns all mapped speeds in order int getMappedSpeed(int speed) returns mapped speed int getNextSpeed(int speed) returns speed mapped to the next speed after the argument speed. int getNumSpeeds() gets number of speeds in the mapping int getPrevSpeed(int speed) returns speed mapped to the one before the argument speed for example, getPrevSpeed(3) returns f(2), where f is the mapping function void remove(int speed) removes a speed from the mapping java. lang. String toString () toStringo procedure 108 Methods inherited from class java.lang.Object clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Constructor Detail SpeedMapping public SpeedMapping (java. util .Vector speeds) constructor - sorts the speeds that are passed in and maps speeds 1,2,3, etc. to them Parameters: vector - mapped speeds Method Detail add public void add(int speed) adds a new speed to the mapping - it will be inserted in the appropriate place to keep the order of the mappings Parameters: int - new speed to add remove public void remove(int speed) throws NoSuchSpeedException removes a speed from the mapping Parameters: int - speed to remove Throws: NoSuchSpeedException - speed does not exist in mapping getNumSpeeds public int getNumSpeeds() gets number of speeds in the mapping Returns: int number of speeds in the mapping getMappedSpeed public int getMappedSpeed(int speed) throws InvalidSpeedException returns mapped speed Parameters: int - unmapped speed to get mapped speed of Returns: int speed mapped to argument getNextSpeed public int getNextSpeed(int speed) throws InvalidSpeedException returns speed mapped to the next speed after the argument speed. for example, getNextSpeed(3) returns f(4), where f is the mapping function 109 ~-~------" .-. ~ - - -~ ~ z.~ U I Parameters: int - unmapped speed to get next mapped speed of Throws: InvalidSpeedException - thrown if argument is not mapped in this mapping or if no next speed exists getPrevSpeed public int getPrevSpeed(int speed) throws InvalidSpeedException returns speed mapped to the one before the argument speed for example, getPrevSpeed(3) returns f(2), where f is the mapping function Parameters: int - unmapped speed to get previous mapped speed of Throws: InvalidSpeedException - thrown if argument is not mapped in this mapping or if no previous speed exists getAllMappedSpeeds public java.util . Enumeration getAllMappedSpeeds () returns all mapped speeds in order Returns: Enumeration all the mapped speeds toString public java.lang.String toString() toStringo procedure Overrides: toString in class java.lang.Object Returns: String string representation of mapping 110 Appendix D: Swisshouse Floorplan This appendix contains an image of the Swisshouse floorplan, as designed by Dr. Muriel Waldvogel and Professor Jeffrey Huang. The proposed location of the website ambient display is shown. The black squares represent the individual pinwheels. L I I I b~~ I _.IK 0 U. C) Figure D.1: Swisshouse floorplan showing tentative location of ambient display 111 References 1. Wisneski, C., Ishii, H., Dahley, A., Gorbet, M., Brave, S., Ullmer, B., Yarin, P. (1998). Ambient Displays: Turning Architectural Space into an Interface between People and Digital Information. in Proceedings of International Workshop on Cooperative Buildings (CoBuild '98), (Darmstadt, Germany, February 1998). Lecture Notes in Computer Science. Springer Publishing. 22-32. 2. Dahley, A., Wisneski, C., and Ishii, H. (1998) Water Lamp and Pinwheels: Ambient Projection of Digital Information into Architectural Space. In Summary of CHI '98, ACM Press, 269-270. 3. Ishii, H., Wisneski, C., Brave, S., Dahley, A., Gorbet, M., Ullmer, B., and Yarin, P. (1998). ambientROOM: Integrating Ambient Media with Architectural Space. In Summary of CHI '98, ACM Press, 173-174. 4. Ishii, H., Ullmer, B. (1997). Tangible Bits: Towards Seamless Interfaces between People, Bits and Atoms. Proceedingsof CHI '97, ACM Press, 234-241. 5. Streitz, N. (1998). Integrated design of real architectural spaces and virtual information spaces. In Summary of CHI '98,ACM Press, 263-264. 6. Marcus, A. (1998). Metaphor design for user interfaces. In Summary of CHI '98, ACM Press, 129130. 7. Mynatt, E., Back, E., Want, R., Baer, M., and Ellis, J. (1998) Designing Audio Aura. Proceedingsof CHI '98, ACM Press, 566-573. 8. Card, S., Mackinlay, J., and Shneiderman, B. (1999) Readings In Information Visualization. Morgan Kaufmann Publishers, Inc. San Francisco, CA. 9. Kamada, T., Kawai, S. (1991) A general framework for visualizing abstract objects and relations. ACM Transactionson Graphics,ACM Press, Vol. 10, No.1, January 1991, 1-39. 10. Sebrechts, M., Cugini, J., Laskowski, S., Vasilakis, J., and Miller, M. (1999) Visualization of search results: a comparative evaluation of text, 2D, and 3D interfaces. Proceedings of SIGIR '99, ACM Press, 3-10. 11. Terveen, L., Hill, W., and Amento, B. (1999) Constructing, organizing, and visualizing collections of topically related Web resources. ACM Transactionson Computer-Human Interaction,ACM Press, Vol. 6, No. 1, 67-94. 12. Meyer, J., Staples, L., Minneman, S., Naimark, M., and Glassner, A. (1998) Artists and technologists working together (panel). Proceedingsof UIST '98,ACM Press, 67-69. 13. Pederson, E., Sokoler, T. (1997) AROMA: abstract representation of presence supporting mutual awareness, Proceedingsof CHI '97, ACM Press, 51-58. 14. Cherry, E.C. (1953). Some experiments on the recognition of speech with one and two ears. Journalof the Acoustical Sodety ofAmerica, 25: 975-979. 112 15. Gibson J.J. (1979). The Ecological Approach to Visual Perception. Lawrence Erlbaum Associates. 16. Neisser, U. (1976). Cognition and Reality. W H Freeman & Co. 17. Rensink RA, O'Regan JK, and Clark JJ (1997). To See or Not to See: The Need for Attention to Perceive Changes in Scenes. PsychologicalScience,8: 368-373. 18. Treisman, A. (1960). Verbal cues, language, and meaning in selective attention. QuarterlyJournal ExperimentalPsycholog, 12: 242-248. 19. Pederson, E. (1998). People presence or Room Activity Supporting Peripheral Awareness over Distance,Proceedings of CHI '98, 283. 20. Waldvogel, M., Huang, J. (2000). Swisshouse, A Digital Consulate for Science and Technology in Cambridge. 21. Petre, M. (1995). Why Looking Isn't Always Seeing: Readership Skills and Graphical Programming.Communicationsof the ACM, v38, June 1995, pp. 33-44. 22. TINI board homepage. http://www.ibutton.com/TINI/index.html 23. W3C Reference Library. http://www.cs.vu.nl/-eliens/WWW5/papers/W3C.html 24. Requirements for Writing Java API Specifications. http://java.sun.com/products/jdk/javadoc/writingapispecs.html 113