I am a computer scientist.

For the Internet to catch up with our current needs, such as streaming video and cloud computing, and certainly to grow to meet the future needs of electronic health care and the smart grid, we need to fundamentally reconsider how we talk about and design network protocols with an emphasis on composability. In my dissertation research I am attempting to pin down the right “reverse-socket” interface to enable networks to be overlaid in more general patterns than the old layered model.

My other current research focuses on enabling fault-tolerant applications to maintaining unbreakable TCP connections to their peers. I began it in the context of a joint research venture with Cisco, to build a large, highly-available router based on the CRS-1. I measured the significant disruption caused by lost TCP connections for BGP routing, and created TCPR, middleware that enables transparent connection recovery. I am currently exploring its applications for dynamic load balancing of long-running streams such as video-on-demand.

I used to be the primary maintainer for the CrossTeX bibliography management tool, which is a drop-in replacement for BibTeX with a more advanced database model designed for improved maintainability and adaptability to different bibliography styles.

Inspired by FlowMouse and HandVu, I created software that enables a user sitting in front of a webcam to physically control all eight degrees of freedom of a homography. The results were promising for gestural control of three-dimensional windows or placement of images.

I explored the problem of parsing human names. The concept of “first” and “last” names, or even given and family names, is unecessarily ignorant of many cultural customs regarding human names. The expedients persist because people want to be able to process (mostly sort and modify the formality of) names without having to understand all possible cultures. I created a more inclusive set of meaning tags, and a tagged corpus of names from Wikipedia, and applied part-of-speech tagging techniques to what I dubbed name tagging.

I wrote a distributed cyptography library, which includes the only complete implementation (to my knowledge) of the Boneh--Franklin distributed RSA key generation protocol.

As part of a software design class, I lead a group in creating a starfield simulator capable of rendering arbitrarily long, yet repeatable, trips through an inifinite starfield using constant memory. I devised an algorithm based on hashing grid positions into random offsets and other properties, and provided the animator with the useless but entertaining ability to smoothly change the randomness of the universe.

I rewrote the implementation of rotate in an experiment version of the C++ STL, making it asymptotically faster when permuting lists of lists, as part of a project headed by Dave Musser (the inventor of quicksort).

I worked with Bart Massey and Keith Packard, creators of the Nickle programming language, writing the tutorial to guide users through the language's unique features. I later started a club at RPI to spread the language.

I participated in the 2002 Northwest Science Expo by extending polynomial regression to three dimensions and evaluating the tradeoffs of representing image data in the form of a large function. I won second place in the computer science division, the Best High School Mathematics award from the Math Teachers Association, and the Best Computer Software award from the IEEE.