Chris Tucker
Employment
IntelliDOT, Corp
I currently work for IntelliDOT Corporation in San Diego as a Senior Software Engineer. Intellidot produces a small handheld device for nurses which communicates with a backend server to verify that the drug a nurse is about to deliver to a patient is the correct drug, in the correct dosage, at the correct time, and delivered in the correct manner. With tens of thousands of people dying each year from incorrect drug administrations in hospitals it's nice to think we might actually be saving some lives.
Linspire, Inc
For the four years prior to moving to IntelliDOT I worked for Linspire, Inc as the lead web team engineer/architect. In that time I also became interested in (and had to deal with) the packaging problems posed by APT, which led to the OPIUM research listed below. Linspire makes an easy to use operating system for Joe Public, but perhaps more importantly has a remarkable technology built atop Debian to install software for end users without the usual headache associated with Linux.
Research/Education
My primary research interests are in two disparate areas of Computer/Cognitive Science: information management and static analysis/logic/languages. The OPIUM paper below draws on the latter, my MS work on the former.
University of California, San Diego
At present I'm a long-term MS student in the Computer Science and Engineering department at UCSD, carefully avoiding completing my thesis so I retain access to all the great minds at the University. In particular, I've worked closely with Sorin Lerner and Ranjit Jhala of the PL group, and Jim Hollan in Cognitive Science for my thesis topic.
University of Warwick, UK
I received my BSc with Honours in Computer Science from the University of Warwick near Coventry, England in 2001. Other than Warwick being a great school and a place where I made some of my firmest friends, there's not too much more to say about it, really. If we weren't so terrible at every sport imaginable I might put in a cheer here for the school colours, but frankly I don't even know what they were.
Publications
- Chris Tucker, David Shuffelton, Ranjit Jhala, and Sorin Lerner. OPIUM: Optimizing Package Install/Uninstall Manager. In proceedings of 29th International Conference in Software Engineering, Minneapolis, Minnesota, May 23-26, 2007
Linux distributions often include package management tools such as
apt-get in Debian oryum in RedHat. Using information about package dependencies and conflicts, such tools can determine how to install a new package (and its dependencies) on a system of already installed packages. Using off-the-shelf SAT solvers, pseudo-boolean solvers, and Integer Linear Programming solvers, we have developed a new package-management tool, calledOpium , that improves on current tools in two ways: (1)Opium is complete, in that if there is a solution,Opium is guaranteed to find it, and (2)Opium can optimize a user-provided objective function, which could for example state that smaller packages should be preferred over larger ones. We performed a comparative study of our tool against Debian'sapt-get on 600 traces of real-world package installations. We show thatOpium runs fast enough to be usable, and that its completeness and optimality guarantees provide concrete benefits to end users.I also wrote a "Linspire Letter" about this for Linspire, Inc., whose data we used for our evaluation. Thanks Linspire!
- Zachary Tatlock, Chris Tucker, David Shuffelton, Ranjit Jhala, and Sorin Lerner. Deep Typechecking and Refactoring.
Submitted to OOPSLA 2008, awaiting peer review Large software systems are typically composed of multiple layers, written in different languages and loosely coupled using a string-based interface. For example, in modern web-applications, a server written in Java communicates with a database back-end by passing in query strings. This widely prevalent approach is unsafe as the analyses developed for the individual layers are oblivious to the semantics of the dynamically constructed strings, making it impossible to statically reason about the correctness of the interaction. Further, even simple refactoring in such systems is daunting and error prone as the changes must also be applied to isolated string fragments scattered across the code base.
We present techniques for deep typechecking and refactoring for systems that combine Java code with a database back-end using the Java Persistence API. Deep typechecking ensures that the queries that are constructed dynamically are type safe and that the values returned from the queries are used safely by the program. Deep refactoring builds upon typechecking to allow programmers to safely and automatically propagate code refactorings through the query string fragments.
Our algorithms are implemented in a tool called
QUAIL . We present experiments evaluating the effectiveness ofQUAIL on several benchmarks ranging from 3,369 to 82,907 lines of code. We show thatQUAIL is able to verify that 84% of query strings in our benchmarks are type safe. Finally, we show thatQUAIL reduces the number of places in the code that a programmer must look at in order to perform a refactoring by several orders of magnitude.