On this page you will find a somewhat up-to-date list of the projects that I'm currently working on. If you'd like any additional information about any of these, feel free to e-mail me.
Jan Vitek and I are starting to work on the next step for OpenVM: turning it into a multiprocessor operating system. OpenVM is currently a uniprocessor system, with strong guarantees as far as concurrency is concerned: preemption points are well-defined and can be finely controlled by the programmer. This makes dealing with concurrency easy, and eliminates the need for locking in most cases. With the use of software transactional memory and a smart multiprocessor schedulor capable of low-latency hard handshakes, we hope to port this programming model to the multiprocessor space. The ultimate goal is to have an operating system whose kernel uses the same concurrency programming model as the uniprocessor OpenVM, with all memory management being performed by a high-performance concurrent copying real-time garbage collector, and atomicity ensured with the help a software transactional memory implementation based on software k-CAS and hard handshakes. Perhaps most surprisingly, we aim to have most of the functionality of the OS implemented in Java, and despite the apparent "heavy" nature of the design, we intend on making the system meet hard real-time guarantees.
While at Microsoft Research, working with David Tarditi, Bjarne Steensgaard, and Erez Petrank, we implemented a number of on-the-fly lock-free concurrent copying collector with strong real-time guarantees. This work was done in the Bartok research compiler. So far we have an ISMM'07 paper from this work.
I just recently added a high-performance real-time garbage collector to OVM. It was quite fun. I was able to reproduce the claims of Metronome. Right now I've got an RTSS'06 paper from it as well as a LCTES'07 paper. The results were also used in my VEE'07 paper, and the collector continues to get used in our group for others' research. See here for the presentation from RTSS. And here for the LCTES'07 presentation. Also see here for a poster I've presented about it.
We wrote a CC paper about a new way of doing accurate garbage collection when generating C++ code. See the poster here and the presentation here.
I'm tired of profilers that don't actually tell you anything useful, or flat out lie to you. For C++ and C, I don't have this problem because I use Apple's excellent Shark tool. But when I hack Java, I don't have anything that satisfies my demands. So, I bit the bullet and wrote my own profiler: PTDS. Enjoy!
The goal is to explore the performance and configurability characteristics of asynchronous I/O inside a real time JVM. In this work, asynchronous I/O is used to implement all user-level (and some kernel-level) I/O facilities. The best description of this is in the TCES paper, for which I made a poster.
I have done a variety of work for VERITAS. My main contributions include the Harvester, which serves as the back-end DACQ; Quicklook and QLtools, which serve as a first-approximation analysis used by the observer; VBF, which is the standard data format; and all of the software for the Purdue volt-gain and afterpulsing PMT test stand.