Adam M. Fass's Projects



A networked digital corkboard that runs in your web browser
Ph.D. Thesis Research

Demo screenshot with history slider at bottom

A small group uses MessyBoard as an annotated file repository

A large group shares pictures and news stories (above) and chooses new offices (below)

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

If you want to read just one paper on MessyBoard, read this one:

Fass, A., Pausch, R. (2004). MessyBoard: Lowering the Cost of Communication and Making it More Enjoyable. Presented at doctoral symposium at UIST 2004 Symposium on User Interface Software and Technology.

Click here for a complete list of my publications on MessyBoard and other topics

Scriptable MessyBoard

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

Analog Control for Martial Arts Video Games

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.

Fass, A. (2002). Analog Control For Martial Arts Video Games. Presented at "Look Mama, With Hands!" Workshop, DIS 2002 Designing Interactive Systems.

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

SnB Visualization

In 1994, I worked with Dr. Russ Miller on a program that uses x-ray diffraction data to solve crystal structures. Dr. Miller is a professor of computer science at SUNY Buffalo and a senior research scientist at the Hauptman-Woodward Medical Institute. The program is called SnB, which stands for Shake-n-Bake, and it is typically used in conjunction with other programs in order to arrive at exact solutions. The ability to determine the molecular structure of a crystal is important in medical research and drug design.

I designed and implement an interactive visualization system for SnB. The visualization component was integrated with SnB's Java front end, and it allowed the user to view a 3D ball-and-stick representation of a crystal structure. The model itself is interactive, allowing the user to click on atoms to get their indices or view the distance between any two atoms. The ultimate goal is to allow the user to modify 3D representations of partial solutions, save the modified data, and feed it back into SnB for refinement.

Firex (Field-Reversed Ion Ring Experiment) Visualization

Firex Video (no sound)

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. 

Other Projects

Lego Table Tennis Ball Launcher

Lego Launcher Video (no sound)

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.

Tractor Beam Ball

Tractor Beam Ball Video (with sound)

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.

Skating Simulation

Skate Video (with sound)

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.

Wireframe 3D Engine

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.