Here are some of the projects that I've worked on.
Unfortunately, due to NDA I can't describe the projects I've worked on at IBM and Ensim in too much
detail. However, most of the projects I did at Cornell have links to their own detailed sites.
Staff Advisory Engineer, IBM Research, (06/02-Present)
- Led a team of three technical interns on a project to implement real-time
content and meta-data indexing of the Linux file system. This technology is similar
to Apple's forthcoming Spotlight and Microsoft's WinFS technologies. The project
included kernel modifications, database programming, user interface programming,
and overall system design.
- Implemented a tamper resistant Windows kernel driver used for DVD Audio
playback in a major sound card vendor's product. Designed and implemented a
comprehensive anti-debugging library that can detect and disable both user and
kernel level debuggers and complements the tamper resistant technology.
- Worked on a team of five to implement rescue and recovery technologies for
IBM's PC division. Our technology has become the revised version of the IBM Rapid
Restore Ultra product that ships on the service partition of every IBM PC and notebook. Our
approach combines backup and restore for recovery and a stripped down Linux
environment that enables the user to perform rescue tasks such as web browsing, email,
instant messaging, trouble ticket resolution and so on in the event of a system crash.
- Worked with another researcher to make the Apple iPod a backup, rescue, and recovery device by adding a bootable Linux-based service operating system on the iPod. The original music-playing functionality of the iPod is unaltered.
- Created a web services toolkit for mobile devices based on the OSGi
(Open Services Gateway Initiative) platform. This was a joint research
project between Almaden, Watson, Zurich and Japan that enables OSGi services
to be automatically exposed as web services, as well as enabling them to
transparently make web services invocations. The work is now part of IBM's
Websphere development suite.
- Designed and implemented the storage management system for an appliance product
aimed at small and medium businesses. This makes use of Linux logical volume management
and RAID to create a system where storage can be dynamically added to the appliance
while the file system is in use while being protected by RAID mirroring.
Member of Technical Staff, Ensim Corporation (08/99-06/02)
- Worked in the kernel group on operating system virtualization
technology that enables a single physical box to act as many.
Led and participated in design meetings for the product.
Wrote kernel modules to implement core components of the system
as well as per virtual server memory, process, and pseudo-terminal
limits.
- Aided in a port of the virtualization technology from Linux to Solaris.
Created a set of libraries for writing cross-platform kernel modules
that significantly reduced both porting and maintenance time.
- Wrote a Solaris streams module that maintains network statistics for
each virtual server.
- Researched a port of the operating system virtualization to Windows 2000.
Aided in the design of a prototype with team members at Ensim India.
- As a solo project, created a device driver that recognizes incoming http
requests and places the handling process and its children in a cpu
scheduling node that corresponds with the domain. Ported the product
between Linux, Solaris, and Windows 2000.
Master of Engineering Project (Tron) (02/99-08/99)
- Created a protocol stack for use in building reliable network
applications. It provides an endpoint abstraction so that multiple
endpoint types, such as IP or VI, can be communicated with using the
same upper layers.
- Implemented an endpoint failure detector using a gossip-style failure
detection service. This algorithm scales well in detection time and
network load as the number of nodes increases.
- Created a protocol layer that implements the probabilistic broadcast
protocol (pbcast). The probability of failure approaches zero
exponentially as the number of participating nodes increases.
Active Containers / Active Messages II Implementation (01/99-06/99)
- Implemented the Active Messages v.2 protocol over the Virtual Interface
Architecture (VI). Active Messages is a technique for extremely low
latency communication and overlapping communication with computation.
- Created a framework for shared data structures across a cluster that will
be automatically updated using the Active Messages implementation.
GameNet (12/98)
- Created an API made specifically for game programmers to easily add "reliable" networking to their games.
- GameNet API creates a simple abstraction of network programming, and adds features such as server fail-over support and reliable, ordered messaging.
- Made a client-server based Checkers Tournament demonstration application which can demonstrate multiple players and checkers games occurring at the same time - complete with seamless full server fail-over support.
IP Telephony System (08/98-12/98)
- Worked on a team of twenty to create a fully functioning IP Telephony
system in Java. The system consists of the core infrastructure as
well as a set of demonstration applications.
- Provided the sound processing routines using JNI (Java Native Interface)
to process sound samples to and from the sound card.
- Wrote the SPOT (Slide Presentation Over Telephony) application which
uses COM interfaces to automate Powerpoint. SPOT enables the user to
record the audio for a slide presentation and synch it with the
slideshow. Clients can then connect to the SPOT server and view the
slide presentation with the audio being streamed through the IP
Telephony infrastructure and the slides synched as recorded.
Visual 80C196 Remote Assembly Development and Debugging Environment (11/97)
- Created a Java applet that served as a development environment for creating, testing, and debugging assembly language programs on a remote server connected to an Intel 80C196KB micro-controller.
- Created standard Java class and protocol for communicating with any micro-controller over TCP.
- Created Java Client, C Server, and Assembly "bootstrap" programs for use in this system.
Network File System (10/97 - 12/97)
- Designed a client-server architecture in Java for a cross-platform network file system.
- Implemented a multi-threaded file server capable of handling multiple TCP/IP connections, and a client O/S-like "shell" with support for 26 commands, including batch files.
- Created a fully graphical utility to defrag files and directories on the file system's virtual disk volume.
Network Computer Game, WAR (09/96-05/97)
- Worked on a team of four developers to create a TCP/IP based network game for Windows NT/95.
- Implemented the client/server system that was capable of handling dynamic logon and logoff of players (using the Windows Sockets API)
- Assisted in the design of the graphics, sound, and input subsystems using the DirectX API
(Go back to my main page)