I am a Ph.D. student studying Computer Science in the Systems and Networking Group at UC San Diego under the supervision of Amin Vahdat. I completed my Master of Engineering degree in Electrical Engineering and Computer Science at MIT in 2004, after earning Bachelor of Science degrees from MIT for my double majors in Computer Science and Literature in 2003.
My research interests include distributed systems, peer to peer systems, data availability, computer networks, and operating systems. My current and past projects include:
Scalable, programmable, high performance eXtensible Open MiddleBoxes using commodity servers. Ongoing research.
Strongly consistent cross data-center replication for scalable and reliable cloud computing storage. Ongoing research.
High availability for strongly consistent wide-area replicated systems using local recovery. Ongoing research.
Mace is a language and source-to-source compiler that translates a concise but expressive distributed system specification into a C++ implementation. Mace overcomes the limitations of high-level languages by allowing programmers to write program components in a controlled and structured manner in C++. The Mace toolkit includes high performance TCP and UDP transports, supporting Gigabit throughput and authentication and encryption with Transport Layer Security (TLS); a high performance event-driven web server; an XML-RPC compiler; and many other common components used in distributed systems. We have implemented several significant distributed systems in Mace, including overlay routing protocols, event notification systems, distributed consensus protocols, distributed hash tables (DHT), application layer multicast, and replicated storage systems.
We have also used MaceMC, a software model checker designed for systems built using Mace, to find numerous bugs in several complex distributed systems. Using several pioneering techniques and debugging tools, MaceMC is able to find liveness violations in addition safety violations.
Tsync: (Transparent) Synchronization
Tsync is a user-level daemon that provides transparent synchronization for one or more data volumes (directory trees) amongst a set of computers. Tsync uses a peer-to-peer architecture for scalability, efficiency, and robustness, which ensures that each node remains connected with all other connected nodes. The overlay network also provides a scalable means by which a Tsync node can learn about other hosts, besides the bootstrap host with which it was configured. Tsync uses TLS for authentication and encryption.
The Tsync prototype is published under the GPL and part of the development was sponsored by a Google Summer of Code (2005) grant. You can download the beta Tsync release from Sourceforge or read the Tsync HOWTO.
Charles Killian, James W. Anderson, Ryan Braud, Ranjit Jhala, and Amin Vahdat, "Mace: Language Support for Building Distributed Systems." Proceedings of 2007 Programming Languages Design and Implementation (PLDI 2007). June 2007. (pdf)
Charles Killian, James W. Anderson, Ranjit Jhala, and Amin Vahdat, "Life, Death, and the Critical Transition: Finding Liveness Violations in Systems Code." Proceedings of 2007 Networked Systems Design and Implementation (NSDI 2007). April 2007. (pdf) Awarded Best Paper
Umar Saif, James W. Anderson, Anthony Degangi, and Anant Agarwal, "Gigabit Routing on a Software-exposed Tiled-microprocessor." Proceedings of 2005 Symposium on Architecture for Networking and Communications Systems (ANCS 2005). October 2005. (pdf)
Dejan Kostic, Ryan Braud, Charles Killian, Erik Vandekieft, James W. Anderson, Alex C. Snoeren, and Amin Vahdat, "Maintaining High-bandwidth under Dynamic Network Conditions." Proceedings of 2005 USENIX Annual Technical Conference (USENIX 2005). April 2005. (pdf)
Instructor - Principles of Computer Operating Systems (CSE 120) - Summer 2010
Teaching Assistant - Networked Services (CSE 124) - Fall 2008
Department of Computer Science & Engineering
University of California, San Diego
9500 Gilman Drive
La Jolla, CA 92093-0404
Office: CSE 3146