| 
|
Research Projects
GRADUATE
PROJECTS

| 
|
3D
Head Tracking With a Generic Webcam
Using OpenCV's Haar cascade face
detection functionality, I was able to throw together a realtime
head tracking program. I coupled this with a 3D "virtual
window" demo, a homage to Johnny Lee's Wii-based head
tracking demo. Performance is suprisingly good. On my 2.16
Ghz MacBook I am tracking at 25 frames per second - sufficient
for realtime intereaction with no obtrusive reaction delays.
Additionally, I've optimized the code so that only 50% of
a single processor core is consumed (and that's on my realitively
slow laptop). |
| 
|
Lean
and Zoom
The size and resolution of computer
displays has increased dramatically, allowing more information
than ever to be rendered on-screen. However, items can now
be so small or screens so cluttered that users need to lean
forward to properly examine them. This behavior may be detrimental
to a user’s posture and eyesight. Our Lean and Zoom
system detects a user’s proximity to the display using
a camera and magnifies the on-screen content proportionally.
This alleviates dramatic leaning and makes items more readable.
Results from a user study indicate people find the technique
natural and intuitive. Most participants found on-screen content
easier to read, and believed the technique would improve both
their performance and comfort. Published at CHI 2008. |
| 
|
Rethinking
the Progress Bar
Numerous factors cause progress bars to proceed at non-linear
rates (e.g. pauses, acceleration, deceleration). Additionally,
humans perceive time in a non-linear way. The combination
of these effects produces a highly variable perception of
how long it takes progress bars to complete. Results from
a user study indicate there are several factors that can be
manipulated to make progress bars appear faster, when in fact
they are not, or potentially even slower. I presented these
findings at the 2007 ACM User Interfaces and Software Technology
(UIST) Conference. |
| 
|
The
Sling in Medieval Europe
The
simple sling is often neglected when reviewing the long history
of ranged warfare. Scholars typically focus on the simple
thrown spear, atlatl, throwing axe, bow, and crossbow. However,
in experienced hands, the sling was arguably the most effective
personal projectile weapon until the 15th century, surpassing
the accuracy and deadliness of the bow and even of early firearms.
(Published in the Bulletin of Primitive Technology) |
| 
|
Image
Clustering
Using
the RCBIS package developed by Stacey Kuznetsov and myself,
Jeff Borden put together a image clustering package. The application
was created using the Prefuse information visualization toolkit
and a K-means clustering method. The latter used a distance
metric the RCBIR engine calculates when given two images. |
| 
|
Search
by Sketch
After
several months of intense development alongside Stacey Kuznetsov,
the Rapid Content-Based Image Search (RCBIS) engine was ready
for use in user oriented programs. The most obvious and appealing
project was to develop an image search engine which took not
text, but a sketch as input. |
| 
|
Kronosphere
Hierarchical file systems
mirror the way people organize data in the physical world.
However, this method of organization is often inadequate in
managing the immense number of files that populate users’
hard drives. Systems that employ a time-centric or content-driven
approach have proven to be compelling alternatives. Kronosphere
offers a powerful time and content-based navigation and management
paradigm that has been specifically designed to leverage universal
cognitive abilities. |
| 
|
Speech
Enhanced Commenting
Ineffective
and insufficient commenting of code is a major problem in
software development. Coders find commenting frustrating and
time consuming. Often, programmers will write a section of
code and come back later to comment, potentially reducing
the accuracy of the information. Speech Enhanced Commenting
is a system that takes advantage of an unused human output
- voice. This system allows users to speak their comments
as they program, which is natural and can happen in parallel
to the user typing the code. No additional time is needed
to write comments. There are several other additional benefits. |
| 
|
Visual
Hash
Checking
passwords often requires a complex algorithm, but computation
time is generally small. For users on their local machines,
it's insignificant. However, if the password needs to be checked
by a remote login server, things become more expensive. Secure
connections have be negotiated and databases have to be queried.
Throw in a few thousand users and your are looking at a serious
load problem. Blizzard's popular World of Warcraft was plagued
by login server overloads that kept people out of the under-loaded
game-world machines. Visual hashes can reduce the burden on
login servers by eliminating some unnecessary login attempts.
|
| 
|
Aphrodisias
During
the 2006 and 2007 summers, I spent eleven weeks in Turkey
assisting an archeological expedition at a Greco-Roman city
named Aphrodisias. A small Geographical Information Systems
(GIS) team worked on producing maps to assist the project,
both in surveying the region and artifact collection. Creating
site level contour maps was a major effort in the first season.
I primarily worked on developing methods for predicting the
location of ancient sites, such as iron mines and forts, and
the routes of aqueducts and ancient roads. |
| 
|
'A'
PPC Compiler
Compilers
are quite possibly the programmer's most frequently used tool,
and yet often overlooked. Over the course of 2 months, I coded
up a compiler in C++ for a medium-sized language dubbed 'A'.
The compiler supports all the goodies, including: arrays,
pointers, function calls, recursion, type checking, static
scoping, and more. The output: executable PPC assembly. |
| 
|
Gesture
Based Process Scheduling
People
place different levels of importance on applications they
use. This importance is often transient. For example, when
the user is in a rush and wants to quickly check their email
before they leave, the email application should not have to
wait on other applications. However, other times, the user
might accept a longer launch time because they also value
background processes, like a downloading a file or transferring
pictures from their digital camera. Anticipating user needs
is practically impossible. However, users provide a wealth
of feedback in the form of gestures. |
UNDERGRADUATE
PROJECTS
| 
|
Enki
Over
the 2005 summer, I had the pleasure of working at IBM's Almaden
Research Center in San Jose, California, under the leadership
of John Barton and Stephen Farrell. The development team consisted
of Chris Parker, Meng Mao and myself. We worked on a unique
application which blended aspects of personal information
management, social networking, and content management. The
project was dubbed Enki, after the Sumerian God of Knowledge. |
| 
|
ChriOS
This
page is dedicated to describing my work for the OS Bakeoff,
which was the finale to a semester long advanced operating systems
class. Students started by building their own shell, and later
added support for booting the OS (on X86 hardware), paging (protected
memory management), multiple program environments, scheduling,
and preemptive multitasking to name a few. |
| 
|
A
Comparative Analysis of Archaic Peoples and Early Dutch Settlers
Living in The New York Region
In
1624, the Dutch established their first outpost about 150
miles north of Manhattan, up the Hudson River, called Fort
Orange. It was located near the modern city of Albany, NY.
Interestingly, the environment was similar to that of prehistoric
Manhattan. The plant life was similar, with spruce, fir, birch,
and poplar dominating the area around Fort Orange. Because
archaic groups and a fledgling European outpost relied so
heavily on the local environment to survive, there are many
commonalities in how they lived. Using this similar environmental
context, one can explore how each group, with their different
technologies and social traditions, adapted and survived.
|
| 
|
An
Investigation of Graham’s Scan and Jarvis’ March
With
the advent of computers, which could perform millions of mathematical
calculations per second, new topics and problems in geometry
began to emerge and the field of computational geometry was
born. As the subject evolved, a number of new applications became
apparent, ranging from computer vision and geographical data
analysis, to collision detection for robotics and molecular
biology. This paper discusses perhaps one of the oldest and
most celebrated computational geometry problems; the convex
hull. |
| 
|
JServer
A
multithreaded server capable of pipelining HTTP requests from
multiple concurrent clients. Features an LRU cache to store
frequently used files in main memory and supports a full compliment
of MIME types via an external config file. All in about 500
lines of Java code... |
HIGH
SCHOOL PROJECTS
| 
|
Temperature
Regulated Charge Algorithms
This
page is dedicated to the research I conducted while in my
high school's science research class. I enjoyed much success
in several science competitions and ultimately filed a patent
for the technology I developed during my freshman year in
college. This page is very out of date. |
| 
|
BaLiS
(Bacterium Life Simulator)
BaLiS
was my first attempt at designing an AI (high school). It
uses a priority matrix which it builds by exploring. As it
explores the 50x50 world, it encounters different items (such
as food). The bacterium exhibits certain behaviors based on
what it finds, and adjusts it's memory accordingly. |
Return to Home page
|
|