Blair MacIntyre

Blair MacIntyre

Former Graduate Student

Graphics and User Interfaces Lab
CS Department
Columbia University

The Computer Graphics and User Interfaces Laboratory

New Contact Information

I am now an Assistant Professor in the College of Computing at Georgia Tech, where I am also affiliated with the Graphics, Visualization and Usability Center. I am director of the Augmented Environments Lab, which focuses on Augmented Reality research. I have an official GVU web page, in addition to my personal web page.

This web page will not be updated after January, 1999.

You can reach me at:

    Blair MacIntyre
    Graphics, Visualization & Usability Center
    College of Computing
    Georgia Institute of Technology
    Atlanta, GA, 30332-0280
    phone: (404) 894-5224

Personal Information

Everything you wanted to know about me, and more!

AR-Cam, Live!

We are testing an "AR-Cam" (Augmented Reality Camera) in our lab. The AR-Cam is a live, interactive video camera that is showing a simple Augmented Reality application that you can control over the net. Eventually, this application be made more fully interactive. Check back occasionally.

It will be live only sporadically, for the time being.

UIST '98

I'm the Demonstration Program Chair for the UIST'98 conference.

IWAR '98

I'm on the Program Committee for the First International Workshop on Augmented Reality. It is scheduled right before, and colocated with, UIST '98 (Oct.31, 1998, San Francisco, CA (USA)). (If the above link does not work, try this one)

Doctoral Research

My research is done within the context of the Computer Graphics Lab Research in Augmented Realty.
Thesis Proposal Abstract

Title: Building and Interacting with Distributed, Multi-User Augmented Reality Systems

Augmented reality is a form of virtual reality that uses see-through displays to enhance the world with computer-generated material. When combined with more traditional palm, tablet and wall sized displays, a powerful augmented computing environment emerges in which two and three dimensional information can be presented to a user simultaneously on a combination of displays. This makes possible a wider variety of interaction techniques and ways of organizing information.

We will build a testbed for fast prototyping of distributed virtual environment systems that supports multiple simultaneous users interacting in environments with many heterogenous displays and input devices. The testbed, called COTERIE (Columbia Object-oriented Testbed for Exploratory Research in Interactive Envrionments), is designed around a multi-threaded, modular, object-oriented programming model and supports distributed communications via both client-server and fully replicated distributed objects. There are two fundamental principles underlying the design of COTERIE: explicit connections between processes are to be avoided and applications are to be built as groups of cooperating threads so a single programming model can be used for both single and multi-process programs. Both interpreted and compiled languages are simultaneously available to the application programmer. An important component of COTERIE is a high-level, distributed graphics library. By making the library objects directly distributable, programmers operate on the scene graphs directly, allowing complex distributed graphical applications to be created in a straightforward manner.

The simple techniques used for window management in two dimensional graphical user interfaces, that rely on the user to manual arrange windows, will not extend well into this environment. More powerful, automated environment management techniques are required. We will investigate one approach to solving this problem, using a combination of expert system and constraint-based techniques.

Finaly, we will build several applications using COTERIE and environment management techniques to both demonstrate their utility and point the way towards future research.


Here are the slides from a short, informal talk I gave during our PhD student Informal Talks series this summer.

Here are the slides from a the talk I gave at UIST'96.


COTERIE applications are written in an interpretted language called Repo, my own version of Obliq. Like Obliq, Repo is a lexically-scoped untyped interpreted language that supports distributed object-oriented computation. A Repo computation may involve multiple threads of control within an address space, multiple address spaces on a machine, heterogeneous machines over a local network, and multiple networks over the Internet. Repo objects have state and may be local to a site or replicated across multiple sites. Repo computations can roam over the network, while maintaining network connections.

Repo was developed as a result of our experiences using Obliq for distributed, interactive, graphical applications. An important characteristic of such applications is the need for parts of the shared state to be relicated across all sites, and for that replicated state to remain consistent. Unfortunately, all object state in Obliq is local to a single site. While it is possible to implement replicated data structures in Obliq, doing so is tedious, error-prone and inefficient.

The distributed computation mechanism is based on Modula-3 Network Objects and Modula-3 Shared Objects.

Modula-3 I'm using Modula-3 for my research right now, because I believe it's the best language that I have available on all the architectures I need to use. Some of the features that make Modula-3 appealing also appear in Java, but not all of them (and, conversely, there are features in Java that do not appear in Modula-3). For more information, take a look at the online documentation.

There are two interesting pages, the Modula-3 Home Page and Modula-3 Web Resource Page. They include the language definition, pointers to implementations, a FAQ and other useful information.


The 3D Hardware accelerator FAQ Part 1 and Part 2

(Last updated: Tue Mar 19 19:23:27 EST 1996)

This is the FAQ I was maintaining of 3D accelerators for PCs. My particular interest was in finding PCI-based cards that can drive stereo, see-through head-mounted displays. The FAQ was slanted in that direction.


I'm toying with the idea of creating a new system for maintaining this FAQ. If it is up, you can go here to have a look and give me feedback.

Grab Bag

My Netscape bookmarks

Serial port information

Some benchmarks of disk performance for machines I use.

Subways and buses that I use occasionally. The subway stop at Columbia is the 1/9. The bus to LaGuardia from our are is the M60. The bus that passes on Amsterdam right in front of my buildings is the M11. The buses that pass on Broadway right in front of Columbia are the M4 and the M104.

Please mail comments to <bm AT>