Please note: the PDF version of my CV is almost always more up-to-date.
I'm the co-founder and president of Fiji Systems Inc., an Indianapolis-based technology startup specializing in real-time Java solutions. My academic research, on which Fiji Systems' core product is based, spans real-time systems, memory management, virtual machines, runtime systems, static analysis, type systems, and programming models. I'm also involved in scientific computing efforts as part of the VERITAS collaboration.
| Ph.D., Purdue University, West Lafayette, IN, dissertation topic: Java on Bare Hardware. Key courses: Compilers, Programming languages, Operating Systems, Formal Compiling Methods, Analysis of Algorithms, Parallel Computing, Numerical Methods, Randomized and Probabilistic Algorithms, Numerical Solutions to Ordinary Differential Equations. Due to graduate in 2011. | |
| 2003 | B.S., Purdue University, West Lafayette, IN., double-majored in computer science and math. Key courses: Computer Architecture, Analysis of Algorithms, Data Structures, Databases, Compilers, Operating Systems, Software Engineering, Computer Networking, Real Time Systems, Scientific Computing, Numerical Methods, Calculus, Discrete Math, Linear Algebra, Differential Equations, Abstract Algebra, Physical Mechanics I (Honors), Gamma-ray Astrophysics, Russian. |
| 1999 | High school diploma, Brebeuf Jesuit Preparatory School, Indianapolis, IN. |
| Fiji Systems | Fiji Systems Inc., Indianapolis, IN
Co-founder and CEO, 2009-present Co-founder of Fiji Systems Inc. and Chief Executive Officer. I am the lead on Fiji Systems' core technology, the Fiji VM, an exciting new Java virtual machine that allows hard real-time and safety-critical code to be written in Java. While at Fiji Systems I invented the Schism real-time garbage collector (RTGC), the world's first high-throughput wait-free fragmentation-tolerant RTGC for multiprocessors. I was also responsible for the Fiji SSA-based compiler (Fiji C1) and the high throughput PIP/fast/biased lock implementation. |
| S3 Lab | Secure Software Systems Lab, Purdue University, West Lafayette, IN
Research Assistant, 2003-2009 PhD student, and core developer on OpenVM and Jikes RVM. My contributions to both systems span thread scheduling, lock implementation, garbage collection (real-time garbage collection in particular), compilation, data flow analysis, and type systems. |
| VERITAS | Very Energetic Radiation Imaging Telescope Array System, Purdue University, West Lafayette, IN
Research Assistant, 2000-2009 Designed and developed software for the VERITAS telescope array. VERITAS is an international project consisting of over 20 universities and research institutions. The telescope array is the largest of its type in the northern hemisphere. My work includes the design and development of the backend data acquisition system, the real-time data analysis, and the standard data format. |
| Microsoft | Microsoft Research, Redmond, WA
Research intern, Winter 2006-2007 and Summer 2007 Developed three algorithms for concurrent copying garbage collection. Also developed a new compiler optimization for improving garbage collector performance. Our CoCo algorithm for concurrent copying (published in ISMM'07) was the first such algorithm to support lock-freedom and multiprocessors while being fast enough for practical use. |
| IBM | T.J. Watson Research Center, IBM, Hawthorne, NY
Research intern, Summer 2004 Member of original design team for the X10 programming language. Developed original X10 compiler. |
| Fiji VM | Chief architect and project lead. Designed and implemented a parallel SSA-based ahead-of-time compiler that converts Java bytecodes to native code. Optimized the compiler to the point where it beats Jikes RVM and is as fast as HotSpot 1.6 server. Designed and implemented two novel concurrent on-the-fly real-time garbage collectors (Schism and CMR). Designed and implemented a novel locking strategy that combines Java-style fast locking, PIP locking, and biased locking. Ported the VM to a variety of platforms, which included making it run on bare metal and in kernel mode.
See http://www.fiji-systems.com/ for more information about Fiji VM. |
| Bartok Compiler | Extended the Microsoft Bartok Research Compiler to support three new on-the-fly lock-free concurrent copying garbage
collectors and a new compiler optimization for improving garbage collector
performance. Also added numerous useful enhancements to other parts of the system (including the reference counting collector, inliner, devirtualizer, and code scheduler).
See http://research.microsoft.com/research/act/default.aspx for more information about Bartok. |
| VERITAS Telescope | Member of the core engineering team. I'm responsible for the standard "VBF"
data format, one of the main data analysis packages (namely, the Quicklook real-time analysis), and the backend data
acquisition system. My software is critical to the real-time recording,
compression, and analysis of the 20 MB/sec VERITAS data stream.
See http://veritas.sao.arizona.edu/ for more information about VERITAS. |
| OpenVM Java VM | Member of the core team. Designed novel garbage collection, scheduling, and data analysis techniques, in addition to implementing numerous
features and fixes to other parts of the system. Currently maintaining the memory management and thread scheduling frameworks.
See http://www.ovmj.org/ for more information about OpenVM. |
| Jikes RVM | Core team member. Implemented and stabilized native threading as a replacement for M:N green threading. Also worked on fixes and improvements in the compiler, garbage collector, and locking.
See http://www.jikesrvm.org/ for more information about Jikes RVM. |
| TSF library | Designed and implemented the TSF open source data format library. TSF
is a scientific data format not unlike HDF5, FITS, or NetCDF, and is used by
VERITAS for storing data summaries.
See http://homepage.mac.com/pizlo/tsf/ for more information about TSF. |
| Stochastic M-CAS | Designed and implemented a mechanism for lock-free atomic multi-word compare-and-swap (Multi-CAS, or M-CAS)
based on random numbers. Stochastic Multi-CAS can be used for a variety of
non-blocking applications, especially concurrent garbage collection.
See http://homepage.mac.com/pizlo/smcas/ for more information about Stochastic Multi-CAS |