|
Click here for a video demonstration. (27 MB Quicktime MOV file) MessyBoard is a networked bulletin board that allows people to share notes, pictures, files and other content. Everyone who looks at a MessyBoard sees exactly the same thing, and all users see changes in real time. It runs as a Java applet inside your web browser, so no software installation is necessary. Text and images from other applications can easily be posted on MessyBoard using drag-and-drop and cut-and-paste. Each board has a URL that is easy to remember, so you can access it from any computer on the Internet. MessyBoard stores a complete history of all activity, allowing users to go back in time and recover old content simply by clicking on a slider bar. The MessyBoard screen saver for Windows ensures that you will see messages from your friends and coworkers first thing in the morning or when you return from a break. Projecting MessyBoard on the wall is another good way to make sure that people pay attention to it. I have observed many groups using MessyBoard, and in general I have found that it is more useful for large groups (20 people or more) than for small groups (fewer than 10 people). The snapshots above show examples of how groups have used MessyBoard in the field to share files, pictures and news stories and to fairly divide up a new office space. You can try MessyBoard now at www.messyboard.org. If you want to read just one paper on MessyBoard, read this one:
|
Click here for a complete list of my publications on MessyBoard and other topics
Click here to download the MessyDev
development environment. Run "MessyDev.exe". See "readme_messydev.txt"
for further instructions.
MessyBoard is a networked 2D bulletin board (see above). My experience with an early MessyBoard prototype suggested that it is useful for some kinds of communication, but users had requested new behaviors such as automatic deletion of old content, automatic posting of new content from the web, and simple collaborative games. In order to rapidly build and experiment with automatic behaviors, I integrated the Python scripting language into the prototype MessyBoard client and created a simple development environment. A group of scripters have built several interesting behaviors, including puzzles, magnetic poetry, automatic posting of images, and a news ticker. |
This poster abstract discusses the implementation of MessyDev.
Fass, A., Pausch, R. (2002). Adding Scripting to a Public Bulletin Board. Presented as poster at UIST 2002 Symposium on User Interface Software and Technology.
Click here for a complete list of my publications on other topics
Click here to download MessyDesk. Run "MessyDesk.exe". See "readme.txt" for further instructions. MessyDesk replaces the standard Windows desktop and mimics the most important feature: creating shortcuts with drag-and-drop. In addition, the user can drag-and-drop or copy-and-paste pictures and text onto MessyDesk. Use it for to-do lists, reminders and personal decorations. The images to the left show how two people used MessyDesk on their dual-monitor workstations.
|
MessyBoard was originally designed with the goal of improving memory. Read this paper to learn more:
Fass, A., Forlizzi, J., Pausch, R. (2002). MessyDesk and MessyBoard: Two Designs Inspired By the Goal of Improving Human Memory. DIS 2002 Designing Interactive Systems, 303-311.
Click here for a complete list of my publications on other topics
Click here to see a video demonstration (28 MB AVI file) Current martial arts video games such as Tekken require players to learn complex combinations of joystick motions and button presses in order to execute a large but fixed set of moves. My interface uses an analog joystick to provide a more natural interface that allows the user to perform many variations on a smaller set of moves. Each move utilizes a natural mapping from the joystick to the character's motion, and the player can vary the character's movements by moving the stick differently. This workshop position paper describes the interface and implementation.
Click here for a complete list of my publications on other topics |
Click here to see a video
demonstration (34 MB Quicktime MOV file)
PicturePiper is an image search tool designed for situations in which users have only a vague idea of what they are looking for. The user begins by typing in a text query and PicturePiper uses a popular search engine such as Google to find related images. The images are automatically clustered based on characteristics such as colors, photographic realism or the text that appears near the image in the source document. The user sees an icon representing each cluster and the icons are spatially arranged using Multi-Dimensional Scaling. The user can narrow the search by repeatedly choosing clusters of interest and then re-clustering those images. While the user interacts with the initial set of images, PicturePiper is constantly finding and processing new images in the background. The new images may be added to the current set of clusters or discarded based on the clusters that were selected or discarded in the past. This allows the user to immediately start narrowing the search before all of the images are processed. |
This paper describes the implementation of PicturePiper.
Fass, A., Bier, E., Adar, E. (2000). PicturePiper: Using a Re-configurable Pipeline to Find Images on the Web. UIST 2000 Symposium on User Iinterface Software and Technology, 51-62.
Click here for a complete list of my publications on other topics
During the summer of 1996, I participated in the Supercomputing Program for Undergraduate Research (SPUR) at the Cornell Theory Center. I worked with Dr. Ravi Sudan and Dr. Yuri Omelchenko of the Lab for Plasma Studies on the Field-Reversed Ion Ring Experiment (FIREX). The purpose of FIREX is to create a field reversed ion ring configuration, which could eventually lead to the creation of a compact nuclear fusion reactor. While the researchers at the Lab for Plasma Studies are still working toward their goal, Dr. Omelchenko's computer simulation has shown promising results. With the help of another student, I produced a robust and flexible visualization system that could be used to view simulation data in a variety of ways and we created a video tape with four separate animations. The video was presented at the 49th Annual Meeting of the American Physical Society (Division of Plasma Physics) and has also been shown at several Cornell seminars. |
If your computer has three or more displays, it can be tedious to move
windows from the left-most to the right-most display. FastMover creates a
miniature interactive representation of your entire multi-monitor desktop
and allows you to position windows by moving the corresponding icons.
FastMover places a button on the title bar of every window that invokes
the miniature representation.
Click here to download FastMover. Warning: This program has not been tested extensively. Use it at your own risk. The FastMover icon will appear on new windows that are created after the program is run. Use the tray icon to close FastMover. |
Using my Lego Mindsorms set, I designed and built a repeating table tennis ball launcher so that I could practice my forehand. The launcher uses a wheel with long spokes to draw back a pin and then release it. When the pin is released a rubber band causes it to snap forward and strike the ball. The same wheel spokes that draw back the pin also trigger a gravity feed mechanism so that the next ball is always dropped into firing position as the pin is drawn back. The entire mechanism is driven by a single motor. The most difficult design challenge was in dealing with the force necessary to stretch the rubber band and the sudden shock when the pin snaps forward. I discovered early on that I could use a long gear train in order to allow the weak Lego motor to pull the rubber band. I went through several intermediate designs that worked in theory but had a tendency to fall apart after a few shots in practice. The final design is heavily cross-braced and it can fire many times without damaging itself. |
In this video game, players pilot flying saucers (represented by large blue and red circles) and use tractor beams in order to pull balls (small white circles) into their goals (squares). Up to four players can compete on two teams against each other or against an artificial intelligence opponent. A custom-built physics engine models gravity, inertia, engine thrust, tractor beam forces, and collisions between the game objects. The simple physics give rise to a number of emergent strategies. The tractor beam can be used to gently drag the ball to the goal, to fire the ball like a sling shot or to whip it around in an arc and then release it. Players can have a tractor beam "tug-of-war" over a contested ball. The tractor beam behaves somewhat like a spring at close range and the force tapers off at a distance, allowing players to break away from a tug-of-war with superior maneuvering. I wrote this video game in Python using the Pygame modules for graphics and my own custom python module for reading joystick input using DirectX. Unfortunately I cannot easily package this game so that you can download it and play it on your own computer. If you ever meet me in person, feel free to ask me for a demo on my laptop. |
This simulation allows the player to control a skateboarder in a skatepark. The player uses an analog joystick to make the skater stand up, crouch and lean left and right. A custom-built physics engine models gravity, inertia and ramp forces. The skater is modeled as a set of point masses interconnected with springs. The joystick changes the rest lengths of the springs to force the skater into a different position. This game is hard but fun, just like real ramp skating, but a lot less painful. Just as in real skating, the player can gain momentum while going up or down a curved ramp with a properly timed push. Push off at the top of a ramp to jump higher or flip. Crouch or extend in mid-air to control your rotation for a perfect landing. I built this simulation when I started learning ramp skating because I was both confused and fascinated at the idea of pushing down on a curved ramp in order to gain forward momentum. The game faithfully replicates this phenomenon with simple Newtonian physics, but I still don't really understand why. I wrote this video game in Python using the Pygame modules for graphics and my own custom python module for reading joystick input using DirectX. Unfortunately I cannot easily package this game so that you can download it and play it on your own computer. If you ever meet me in person, feel free to ask me for a demo on my laptop. |
Click here to run the demo (requires Java) This is a demo that I wrote as a freshman in 1995 for my undergraduate computer graphics course at SUNY Buffalo. The 3D wireframe engine is built entirely from scratch, using only the line drawing primitive. It was originally implemented in C++ for XWindows and I later ported it to Java. The assignment was to demonstrate a robot built by the fictitious "Roboserve" corporation. I apparently decided that Roboserve was a defense contractor. |
Click here to download the game and
try it. Warning: This is an old-fashioned full-screen
DOS game. It seems to work in Windows 2000 and XP but you use it at
your own risk.
Onslaught was my first interactive video game. A friend and I built it in 1996 (my junior year) as an undergraduate independent study project. It is an imitation of early real-time strategy games like Command and Conquer. The game engine loads unit descriptions and sprites from files at run time, allowing a game designer to change the graphics and the unit and terrain characteristics without recompiling the program. We included support for air, land and sea units, projectiles, smoke trails and explosions with splash damage. |