Benjamin Broderick Phillips PC

From BenningtonWiki
Jump to: navigation, search


Physical Computing Spring 12, Class wiki


Everyone - Exhibit design article by Frank Oppenheimer. My guiding philosophy for this course.

Arduino API

Inventables innovative materials


Zeke & Ben - Midterm


Final Update

Assessment and Media of finished piece



Week 1 (4/27-5/1)

  • Produce final design concept for the exhibit
  • Make materials list
  • Buy all products/animals I anticipate needing
  • Begin coding
  • Determine responsiveness of crickets (done, they are REALLY sensitive and scatter exuberantly, although they are getting used to it so I might have to swap them out)

Week 2 (5/2-5/8)

  • New agenda
  • Final design concept for cricket box
  • Finish beta Arduino program
  • Wire the Arduino for testing of code - unfinished, but see #Hardware
  • Solder the Spikerbox, and experiment with it (FedEx had a digital tracking error or something and it's stuck in Connecticut, I'm sorting it out...)

Week 3 (5/9-5/15)

  • New Agenda
  • Get plexiglass
  • Get power supplies for 24V solenoids - Solenoids are no go, 12V/24V not strong enough. Using Tim's air mattress blower with a servo instead:

Servo controlled fan

Week 4 (5/16-5/22)

  • Finish the cricket cage
  • Begin tweaking the exhibit and code with crickets
  • Determine the necessity of a Faraday cage to reduce electrical noise in the neural recordings
  • Bring crickets to class for fun???
  • Test on users unfamiliar with the exhibit
  • Tweak interaction design accordingly
  • Improve the visual appearance of the exhibit

Week 5 (5/23-5/31)

  • Find a stopping point and set up the exhibit
  • Document final version on the wiki
  • Set my crickets free

Penultimate update (5/24)

My progress these past two weeks:

  • Obtained materials: plexiglass from C.L. Whites, PVC pipe from Home Depot, various gadgets from Tim, and scrap wood from the shop.
  • Built the box for the arduino and air blower:

Benbp cricket box.jpg

  • Engineered the piping for the air, and the mechanism to rotate the direction of airflow:

Benbp air blower.jpg

  • Soldered the Spikerbox together and gave it a test run in class:

Benbp spikerbox.jpg

  • Working on soundproofing the box:

Began filing the plexi to make the box for crickets.

Still to do

  • Compile the box into a working prototype.
  • Code and wire the Arduino (basically a program with a couple servos, pots, and buttons).
  • Figure out cricket stuff (audio of the neural signals? amplification of signal for the screen? lasting anesthetization)
  • Build plexi box
  • Paint foamboard and PVC tubing.


Most people don't think very much about insects. Instead they find them gross and scary. And people without these aversions often lack any interest in them anyways. However, I believe insects provide a fascinating perspective into how organisms which are radically different from us exist in the world. I aim to create a small interactive exhibit which illuminates how crickets (or cockroaches) perceive the world through sensitivity to wind and sound. My main intention is to create an interaction in which users will be able to experiment with how wind and sound affect crickets, and also be able to observe both behavioral and neural responses to these stimuli. I hope users will walk away with an appreciation for the relationship between the underlying neural machinery of crickets and how it manifests in behavior, and also the larger picture that insects are incredibly intricate and unique animals who show us that there is more to the world than just what is naturally perceived by humans.

Technical details and info

Crickets use the acceleration of wind as one of their main sensory inputs for avoiding predators. Even slight gusts will send them jumping around, since in the wild these gusts might be indicative of a toad lunging out its tongue. While we obviously can perceive wind, we certainly do not perceive it in the same way that these insects do.

Crickets will be housed in a clear box, on short grass. On either side of the box (and partially within it) will be an air blower. Behind the box there will be a cricket pinned to a surface with recording electrodes (this let's me record the neural activity of the cricket). To the left of this cricket will be another air blower, and behind it will be a screen showing a waveform of its neural activity.

In front of the box will be two sets of a knob and button. Each knob will control the direction of its corresponding air blower, and each button will turn on that air blower and the blower behind the box for a short burst of wind. This will enable whoever is controlling these inputs to observe both the behavioral response of the crickets in the box, and the neural activity of the other cricket, at the same time to the wind.

Air blower: Canned air with a solenoid on top to press down the nozzle. This will be housed in a larger, more aesthetic container.

Inquiry cycle of a typical science museum exhibit:

(1) Surprising phenomenon - Unexpected phenomenon of an exhibit

(2) Exploration - Users explore this phenomenon

(3) Explanation - Explains the phenomenon in light of scientific principles

(4) Relevance - The label makes a connection to the everyday experience

Summarized from Designs for Learning: Studying Science Museum Exhibits That Do More Than Entertain by Sue Allen

My piece somewhat fits into these design criteria:

(1) Surprising phenomenon - I think the setup itself is surprising, less the behavior of the crickets. The neural activity might be something that people have not encountered before, but it is not providing any behavior that surprises people because it is not what they would expect.

(2) - Some room to explore. Play with responses of crickets, though no room to alter the input to the neural response.

(3) - Very important in this case

(4) - Also important. Could write about the relevance of research in invertebrate wind receptors to the recovery of patients who have experienced strokes



Spikerbox product page

Spikerbox parts info

Solenoid instructables

Solenoid schematic

Solenoid circuit diagram

1N4004 Diode

Schematic for our 12V Solenoid


Alpha program

#include <Servo.h>

Servo air1;
Servo air2;

const int POT1 = 0;
const int POT2 = 1;

const int BUTTON1 = 6;
const int BUTTON2 = 7;

const int SOL1 = 8;
const int SOL2 = 9;
const int SOL3 = 10;

int b1;
int b2;
int p1;
int p2;
boolean state1 = false;
boolean state2 = false;

void setup(){
	pinMode(BUTTON1, INPUT);
	pinMode(BUTTON2, INPUT);
	pinMode(POT1, INPUT);
	pinMode(POT2, INPUT);
	pinMode(SOL1, OUTPUT);
	pinMode(SOL2, OUTPUT);
	pinMode(SOL3, OUTPUT);

void loop(){
	int b1 = digitalRead(BUTTON1);
	int b2 = digitalRead(BUTTON2);

	if(b1 == HIGH && state1 == false){
		state1 = true;
		digitalWrite(SOL1, HIGH);
		digitalWrite(SOL3, HIGH);
		digitalWrite(SOL1, LOW);
		digitalWrite(SOL3, LOW);
	} else {
		state1 = false;
	if(b2 == HIGH && state2 == false){
		state2 = true;
		digitalWrite(SOL2, HIGH);
		digitalWrite(SOL3, HIGH);
		digitalWrite(SOL2, LOW);
		digitalWrite(SOL3, LOW);
	} else {
		state2 = false;

	int p1 = map(analogRead(POT1), 0, 1023, 0, 179);
	int p2 = map(analogRead(POT2), 0, 1023, 0, 179);

Control Fan with Arduino

Analog to Digital conversion

Analog Input


Chicago Museum of Science and Industry Chick Hatchery
I was doing some research for another class on chick hatcheries, and realized that they might be a good model exhibit to try to emulate. It showcases natural life processes, invites people to observe for long periods of time, and also instills emotional involvement. Obviously part of this is because chicks are cute and fuzzy, which crickets are not. However, it led me to try to change the rest of the exhibit so that it would be more inviting, which I hope will be accomplished by adding grass. I've seen other works in galleries which contained grass, and they were always attractive because most people have fond associations with grass. Placing it in a gallery setting is even more striking. The idea of crickets in grass feels much different and more natural than crickets in a cage, and might make people more willing to stick around/play with the piece.

Exploratorium - Aeolian Landscape
This is an exhibit which lets users play with wind, only the wind affects the formation of sand dunes instead of the movement of crickets. Nonetheless, I want to recreate the nature of the interaction with this exhibit (I have personally used it). There is a natural phenomena which users can observe, but at the same time, they get to control an aspect of the environment and play with causality. In this case it lets them experiment with how wind direction influences the shape of dunes. In my case it would let them experiment with how insects respond to different levels of wind and sound.

Neurotica - Silent Barrage
Interesting because it is the only piece I could find which involved live neural activity. Very, very complex, and only involves cells, but still a nice example of how people might interact with an exhibit showcasing neurons.

Eunyoung Kang - Dynamic Canvas
Another exhibit which uses wind to shape an environment, although it is an artificial/virtual environment.

Video game involving controlling a paramecium
A game involving animals, in which users try to cause them to do specific behaviors.




Sensors (arduino playground) - Distance/environmental sensors. Resource includes both hardware links and code libraries.

Low-tech sensors/actuators

Ultrasound (2cm to 3m)

Muscle Sensing (EMG)

Water level float switch - interesting sensor to think about using.


Bitwise operations in Arduino - In case I need to do any bitpacking



Arduino Example 4

Arduino Example 5

Arduino Example 6


"Tinkering is what happens when you try something you don’t quite know how to do, guided by whim, imagination, and curiosity. When you tinker, there are no instructions—but there are also no failures, no right or wrong ways of doing things. It’s about figuring out how things work and reworking them. Contraptions, machines, wildly mismatched objects working in harmony— this is the stuff of tinkering. Tinkering is, at its most basic, a process that marries play and inquiry."

Fine Art Projects

Ned KahnAeolian Landscape
A piece found in the Exploratorium science museum. "I strive to create artworks that enable viewers to observe and interact with natural processes." Very neat, great balance of art, science, and interactivity.

Scott SnibbeBlow UpMake Like a TreeDeep Walls
What I really love about these pieces, especially Blow Up, is their focus on attracting inquiry and play. Blow Up involves a grid of small fans (each a couple of inches in diameter) placed on a table across from a grid of much larger fans (each a couple of feet in diameter). When one blows on the small fans, the corresponding larger fans move proportionally. This allows one to "amplify" their breath. It is a very simple presentation with the potential for dynamic, entertaining, and long-lasting interaction. How the user interacts with the piece is very open-ended as well. It is this spirit of interaction which I am most attracted to, and which I think is an essential component of successful inquiry-based science exhibits.

Casey ReasSignals

Kelly DobsonBlendie

Science Education Projects

James PattenCreate a Chemical Reaction
This is a project done by James Patten, for the Chicago Museum of Science and Industry. The periodic table is projected onto a surface, and there are pucks which users can move around on the surface as well. These pucks enable users to grab different atoms and combine them, exploring what reactions will subsequently occur. The ensuing chemical reactions are graphically displayed on the surface. I am interested by this because it is an example of an interactive piece which enables people to interact with something (in this case atoms) which are generally very hard to manipulate, dangerous, and expensive, and which is of a scientific nature.

ExploratoriumBernoulli Blower
Simple. Very intriguing. Extremely interactive. It's not physical computing but it embodies the level of interactivity and inquiry that I aim to create. A cone blows fast air at a beach ball. Due to the Bernoulli effect, the ball appears to float in mid-air, no matter what angle the cone is pointing at. I saw dozens of people playing with this over the course of a FWT, and each interaction was personalized and unique from others.

Technical Projects

Punching bag lamp design

German site, more pics

This project by Fluid Forms let's users punch a punching bag to design their own lampshade. Each punch on the bag results in a corresponding deformation in a 3d modeling program. "Sensors in the inside of the punching bag transmit the punches to the computer, which morph the cylinder according to the positions of the blows."

Mind controlled slot car


Tom Gerhardt - Mudtub - Allows users to control a computer with a tub of mud
James Patten - Sensetable platform - Senses manipulation of objects on a surface for making interactive tabletops


Tinkering Studio

Massive list of Arduino projects

Related activities

Toy dissections

Mr. Squawky Talky

I picked up an electronic toy, Mr. Squawky Talky, at Goodwill so I could see what was inside.

Mr. Squawky Talky in good health Mr. Squawky Talky dissection Mr. Squawky Talky plucked and feathered Mr. Squawky Talky inner parts

There is a motor, a small speaker, 10 LEDs, and a board with what appears to be 12 small-sized pressure sensors. It looks the original toy came with a cell phone, so perhaps there is some wireless receiver inside as well. There are also a bunch of small gears which might prove useful.

I can't find any information on schematics just yet, although I did find some related patent documents which might hold some clues.

Patent for Interactive Teaching Toy by VTech

Patent for Interactive Educational Toy by VTech

Waveshield Setup

(April 2012) Once you have the Waveshield soldered together and put on top of an Arduino (likely the Uno), head to the wavehc library site and download the top link ( Unzip the downloaded file. Open up the folder that was unzipped, and within that find a folder called WaveHC. You need to create a folder called libraries, and place the WaveHC folder within it. Move the libraries folder to your Arduino Sketch folder (you can find this in preferences/options in the Arduino program). Now if you move the example programs (anything.pde) into your sketch folder, they should all work. The first example program is daphc.pde, which will just auto play all of the files on the SD card. Further examples can be found here. If the code is overwhelming, just skip past all of the stuff involving Serial and go right to void loop() and below. These are the parts you'll likely modify if you have to for your own needs. With the examples, some google searching and persistence you should be able to get most tasks done.

Midterm programs - "Code for Uno": will play random sound files based on input from a photoresistor (in darkness, triggered by an LED from another arduino). Any other analog input could also work in this program. "Code for Nano": triggers the Uno to play sound files, but no wave shield code is involved.

Example program - this program will play random sound files with three seconds of space in between (provided you name your files 1.WAV, 2.WAV...and so on). Make sure you change the file name extension to .pde

Reading Notes


Code, Circuits, and Construction

"All inductive loads (like motors, electromagnets, and solenoids) work on this same principle: induce a magnetic field by putting current through a wire, use it to attract or repulse a magnetic body. However, the principle works in reverse as well. When you spin a wire in an existing magnetic field, the field induces a current in the wire. So if you’ve got a motor spinning, and you turn it off, the fact that the motor’s coil is spinning in a magnetic field will generate a current in the wire for a brief amount of time. This current comes back in the reverse direction of the current flow you generated to run the motor. It’s called blowback, or back voltage, and it can cause damage to your electronics. Usually it’s stopped by putting a diode in line with your motor, to stop the back voltage."

Controlling high current devices

"A relay is a switch that’s controlled by a small electric current. Relays take advantage of the fact that when you pass an electric current through a wire, a magnetic field is generated surrounding the wire as well. When you place an iron shaft inside a coil of wire and pass current through the wire, the magnetic field moves the iron shaft. If that iron shaft is part of a switch, the switch can be turned on and off by putting current through the coil, which moves the shaft, closing the contact."

"Note the diode in parallel with the load here. This is used only when the load is a motor, solenoid, or some other inductive load, and when it is switched off, will generate a blowback voltage. The diode protects against this."


"If the sender were sending “ABC” over and over, as “ABCABCABCABC” etc, it’s possible that the receiver might not start receiving at the beginning, and get “BCABCABCABCABCA” instead. This is a problem if, say, A is the right switch, B is the center switch, and C is the left switch. In order to avoid this, it’s sometimes useful to send some value at the start or the end of your data string that’s a constant number, and different from the other values. For example, if A can range from 0 to 100, and B can range from 0 to 100, and C can range from 0 to 100, perhaps you send 101 at the beginning of each string. - Source

Access Serial from Terminal

Analog Output


"Filter circuits are circuits which allow voltage changes of only a certain frequency range to pass. For example, a low-pass filter would block frequencies above a certain range. This means that if the voltage is changing more than a certain number of times per second, these changes would not make it past the filter, and only an average voltage would be seen."

The User Illusion

"What we perceive at any moment, therefore, is limited to an extremely small compartment in the stream of information about our surroundings flowing in from the sense organs." p. 124

"Consciousness does not consist of hot dogs but consists of hot dogs that have been apprehended." p. 125

"...telephone systems capable of transmitting thousands of bits a second, but the human consciousness cannot perceive more than 40 bits/sec!" p. 137 - but he's using two separate units here, and referring to them with the same word. The perceived bit of information he's referring to is not the same as a bit of information in a circuit. This is a danger of viewing the mind as functioning analogously to a computer, and trying to measure it as such. The overall point though that our consciousness is more like a spotlight than a wide-angled lens is well-taken. The author addresses this criticism:

" 'The tragedy of Kupfmuller's publication consists in its initial positive effect on psychologists because their interests were drawn to the fact that cognitive variables are quantifiable by information theoretical methods. On the other hand, however, it implicitly presented arguments against the generality of bandwidth of information flow. By this the use of the conception has been made dubious.' " p. 141

Design of Everyday Things

"The mental model of a device is formed largely by interpreting its perceived actions and its visible structure...when the system image is incoherent or inappropriate...then the user cannot easily use the device. If it is incomplete or contradictory, there will be trouble." p. 17

"Natural mapping, by which I mean taking advantage of physical analogies and cultural standards, leads to immediate understanding. For example, a designer can use spatial analogy: to move an object up, move the control up. To control an array of lights, arrange the controls in the same pattern as the lights. Some natural mappings are cultural or biological, as in the universal standard that a rising level represents more, a diminishing level, less." p. 23 -- Similar and probably inherited from George Lakoff and Mark Johnson's ideas in Metaphors We Live By. I wonder whether more abstract, yet common, conceptual metaphors like argument is war or love is a journey can be harnessed to communicate naturally with the user.

"Whenever the number of functions and required operations exceeds the number of controls, the design becomes arbitrary, unnatural, and complicated. The same technology that simplifies life by providing more functions in each device also complicates life by making the device harder to learn, harder to use. This is the paradox of technology." p. 31

Variables, Analog Input

Arduino base number notation: Dec: 163 Hex: 0x0A3 Binary: B10100011

"The result is 270, which is more than can fit in a byte. What happens in this case is that the variable rolls over. If we put 256 in the variable, it reads as 0, 257, reads as 1, and so forth. Counting this way, 270 would read as 14. The result is 490. This doesn’t fit in a byte variable, so the result will roll over. The result would read as 235." - Variables

"Note that defines are always preceded by a #, and are don’t have a semicolon at the end of the line. Defines always come at the beginning of the program. They actually work a bit like aliases. What happens is that you define a number as a name, and before compiling, the compiler checks for all occurrences of that name in the program and replaces it with the number. This way, defines don’t take up any memory, but you get all the convenience of a named constant. There are several defines in the libraries of the Arduino core libraries, so it’s preferable to use const instead of #define for constants." - Variables

"The higher the fixed resistor, the higher the bottom of the voltage range will be. Use a fixed resistor that’s in the same order of magnitude as the the range of the variable resistor. For example, if your variable resistor measures from 10 kilohms to 100 kilohms, use a 10 kilohm fixed resistor." - Analog Input

"If you find the readings from your analog inputs are inconsistent (for example, you see changes on one channel when the sensor on a different channel is the one sensing action), it helps to decouple your input circuit. Decoupling means smoothing out the dips and spikes going into the circuit from the rest of your microcontroller circuit. To do this, place a 0.1microfarad capacitor from voltage to ground as close to where the analog input connects to voltage." - Analog Input

Understanding Electricity

Diagram symbols

Don’t wire a polarized capacitor backwards; it might explode.

Arduino ch. 1-4

"Arduino was born to teach Interaction Design, a design discipline that puts prototyping at the centre of its methodology." p. 2

"Learning about keyboard hacking is a key building block of prototyping and Physical Computing." p. 13

"Accumulate junk and go through it before starting to build something from scratch." p. 14

"Actuators" - electronic components that can convert an electric signal into a physical action.

"In particular, you should see what happens when you make the delays very small, but use different delays for on and off ... there is a moment when something strange happens; this “something” will be very useful when you learn about pulse-width modulation later in this book." p. 36



"A microcontroller is a small, inexpensive computer, usually used for sensing input from the real world and controlling devices based on that input."

Pay attention to interface capabilities, I/O capacity and type, power, processing speed, memory, physical size.

  • Languages listed for level of Microcontroller:
    • Low Level Microcontrollers - Low level languages (C, Assembler, BASIC), 3rd party higher-level dev environments exist
    • Mid-Level Microcontrollers - Wiring (simple C variation similar to processing), BX BASIC
    • High-Level - High Level Languages (Processing, Max/MSP, Actionscript)
  • Price points:
    • Low Level - $1-5 (free samples possible with some bullshitting)
    • Mid-Level - $30-80
    • High-Level - $130-$530

"Some programmers have cables to allow them to connect to the circuit in which the microcontroller is embedded in order to reprogram it. This is called in-circuit programming."

Actuator - cause (a machine or device) to operate

Arduino Nano


  • No DC jack, Mini-B USB, 6-20V unregulated, 5V regulated
  • 14 Digital I/O (6 PWM out), 8 Analog
  • 16KB flash memory (14KB available) on ATmega168, 32KB (30 available) on mega328

"Each of the 14 digital pins on the Nano can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions."

"The Nano has 8 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values). By default they measure from ground to 5 volts, though is it possible to change the upper end of their range using the analogReference() function."

"The ATmega168 or ATmega328 on the Arduino Nano comes preburned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the original STK500 protocol. You can also bypass the bootloader and program the microcontroller through the ICSP header; see these instructions for details."

"Arduino Nano is designed in a way that allows it to be reset by software running on a connected computer."

"When the Nano is connected to either a computer running Mac OS X or Linux, it resets each time a connection is made to it from software (via USB). For the following half-second or so, the bootloader is running on the Nano. While it is programmed to ignore malformed data (i.e. anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a connection is opened. If a sketch running on the board receives one-time configuration or other data when it first starts, make sure that the software with which it communicates waits a second after opening the connection and before sending this data."

Pulse-width Modulation - The average value of voltage (and current) fed to the load is controlled by turning the switch between supply and load on and off at a fast pace. The longer the switch is on compared to the off periods, the higher the power supplied to the load is. - Wikipedia

Static random-access memory (SRAM) - is a type of semiconductor memory where the word static indicates that, unlike dynamic RAM (DRAM), it does not need to be periodically refreshed... - Wikipedia

EEPROM - stands for Electrically Erasable Programmable Read-Only Memory and is a type of non-volatile memory used in computers and other electronic devices to store small amounts of data that must be saved when power is removed, e.g., calibration tables or device configuration. - Wikipedia

Digital I/O

Read input in Wiring

// give the pin numbers names:
const int inputPin = 2;
const int outputPin = 3;
void setup() {
 // declare inputPin to be an input:
 pinMode(inputPin, INPUT);
 pinMode(outputPin, OUTPUT);

void loop() {
 if (digitalRead(inputPin) == 1) {
 	digitalWrite(outputPin, HIGH);

Blinking LED program in Wiring

//give pin number a name:
const int LEDpin = 13;

void setup() {
 pinMode(LEDPin, OUTPUT);

void loop() {
 digitalWrite(LEDpin, HIGH);
 digitalWrite(LEDpin, LOW);


Listening • Thinking • Speaking


The meat is in the thinking "...thinking constitutes the content of your work." p. 40

Data structures should be in the front of my mind

Be consistent and complete with the world you create in your interaction


"Ask yourself: What data structures will I need to tackle my problem?" p. 40 "Designing the data structure is often the first step in designing the algorithm" p. 44

"At the deepest level, successful interactivity design demands that you offer ideas to your customers. Furthermore, it is not enough, as it is with other media, to offer merely a hodgepodge of interesting, useful, or edifying ideas; the designer must create a closed, complete, and consistent working model of whatever the product addresses." p. 42

"If you would listen well, then you must give your user the language to speak well." p. 49

"At every juncture of uncertainty, the user attempts to second-guess your intentions." p. 52

"The mouse Is Itself an Interaction...We demonstrate our appreciation of this concept whenever we refer to the cursor as the mouse." p. 53

  • "The first rule of all interactivity design is to start with the carbs..." p. 62
    • What do you want your user to be able to accomplish with your program?
    • What skills do you have to offer, and how might your user most easily take command of those skills?
    • What must your user tell you for you to be able to do your stuff?
    • What actions (verbs) most directly express the user's goals?
    • (buy) is the most important verb for you, not the user. The user's desired verb set is more complicated.
    • Don't just organize lots of information into tidy little structures that make perfect sense to somebody who already understands everything.
    • Try to imagine yourself ignorant; what questions would you ask?
    • By what circuitous routes might your curiosity lead you to the information?
    • Remember that you can't teach anybody anything; you can only facilitate a person's own learning process. What actions, then, would a curious student need to take to learn the material?

"Concise verb design is especially important [for things] which require fast learning curves...The...task is then to come up with the most powerful small set of verbs possible...For example, 'pull the trigger' can be abstracted to 'fire the weapon' to obtain greater expressive breadth-that is, to give the player access to more weapons. It can be further abstracted to 'use the device,' thereby granting the user access to a large array of tools and devices. The trick that makes this work is the creation of tools that have only one possible use." p. 63

  • Express the verbs in a form achievable with available input devices.

"What if somebody put a word processor on the web?" - Good predicting the future Chris!

"The latest versions, called trackpads, are dead, roadkill mice." - Missed opportunity for predicting the future.

"Accordingly, designs for mouse use should probably avoid gestural schemes, but designs that can be confined to trackpads or touch screens might take advantage of this capability." - Good predicting the future again.

Force-Feedback mice! I would love that.