Christopher E. Mueller
215 Lindley Hall, Computer Science Department, Indiana University, Bloomington, IN 47401
chemuell@cs.indiana.edu, http://www.osl.iu.edu/~chemuell
Overview
I am a post-doctoral researcher at Indiana University, researching high-productivity programming paradigms with a focus on high-performance algorithms for chem/bioinformatics and large data visualization. In addition to my academic work, I have 10+ years experience as a software engineer, architect, technical lead, and consultant developing bioinformatics and scientific software and large-scale Web applications.
Experience
Pervasive Technology Labs, Indiana University, Post-Doctoral Researcher
June 2007 – Present
Research Areas:
• Synthetic Programming: Rethinking the HPC tool chain for programmability, usability, and accessibility
The Synthetic Programming Environment (SPE) is a Python-based high-performance code generation system. The SPE exposes the full processor instruction set as first class functions that are used to create and execute instruction sequences, allowing developers to use Python for data flow and program organization and optimized machine instructions for computational kernels.
Technologies: Python, C++, Cell BE, Parallel Programming
• Multi-core Supercomputer Performance Characterization
As multi-core processors become more common, it is important to understand how to effectively integrate nodes containing multi-core processors into supercomputer deployments. The goal of this work is to characterize the performance implications of heterogeneous supercomputers composed of multi-core processors from different vendors on representative workloads.
Technologies: IBM, Intel, and AMD-based supercomputers, Parallel Program Analysis
Open Systems Lab, Indiana University, Research Associate
August 2003 – June 2007
Research Areas:
• Synthetic Programming: Rethinking the HPC tool chain for programmability, usability, and accessibility (thesis topic)
The Synthetic Programming Environment (SPE) is a Python-based high-performance code generation system. The SPE exposes the full processor instruction set as first class functions that are used to create and execute instruction sequences, allowing developers to use Python for data flow and program organization and optimized machine instructions for computational kernels.
The SPE supports the PowerPC, VMX/AltiVec, and SPU ISAs on Linux and OS X. Applications developed using the SPE include BLAST for the Cell BE and AltiVec enhanced Tanimoto chemical comparison routines.
Technologies: Python, C++, PowerPC/VMX/SPU ISAs, OS X/Linux ABIs, PPC970, Cell BE
• Mapping chem/bioinformatics algorithms to modern SIMD processors
(BLAST on the Cell BE, AltiVec/VMX Dotplot and Tanimoto chemical fingerprint comparison)
To achieve high performance with modern vector processors and multi-core systems, algorithms can be refactored to be aware of the memory hierarchy and available machine instructions. The goal of this work is to explore methods for mapping real applications to modern processors.
Technologies: Synthetic Programming, C AltiVec intrinsics, pyMPI/LAM-MPI
• Large graph visualization and clustering algorithms
Graphs are an essential data structure for handling large data sets. In this work, I examined two approaches to visualizing large graphs, similarity matrices for small displays and parallel force-directed layouts for display walls.
Technologies: Python, C++, Boost Graph Library, OpenGL, Chromium, SQL, MPI
• Cellular Potts Model-based (CPM) tissue simulation software development (with the Biocomplexity Institute)
The CPM is an extension of the Ising model that has been used to model complex biological systems. In this work, I worked with physicists to develop CompuCell3D, a tool for developing computational experiments based on the CPM.
Technologies: Python, C++, OpenGL, XML, Linux, OS X, Windows XP
• Academic software process consulting (CompuCell 3D, Network Workbench)
Throughout my academic career, I have worked with scientists to incorporate agile development processes into their research workflows. This has included giving talks on software development, writing job descriptions and funding requirements, interviewing full-time developer candidates, and advising on system architectures and technology decisions.
Array Biopharma, Inc., Boulder, CO, Senior Software Engineer
October 2001 – September 2003
As part of a small, in-house engineering team, I was responsible for integrating the analytical chemistry group into the larger chemical informatics system. Working closely with the scientists, I developed custom tools, databases, algorithms, and visualizations that improved their workflow and throughput. One important application integrated the HPLC and mass spec analytical tools and business rules into a single, unified interface and was presented as a poster at IEEE InfoVis 2003.
Technologies: Python, C++, Java, Visual Basic, COM, XML, Windows XP, SQL (Oracle)
Critical Path, Inc., Boulder, CO, Architect and Team Lead
November 1999 – May 2001
Critical Path developed hosted groupware applications built on a highly-scalable platform of core services. I led the team that created the application infrastructure for the wireless (cell phone) and small-form factor (PDA) interfaces to the underlying email, calendar, and file sharing services. The InVoke Wireless server, built around application-specific XML dialects, allowed customers to fully brand, localize, and define application flow for their subscribed services. The internal architecture was designed to allow service developers to easily add new services and dialects that could be reused arcoss a variety of display devices using XSLT rules to perform the device-specific output transformations. Feature sets were identified by working with focus groups. I was responsible for two major releases developed by a geographically distributed development team.
Technologies: Java (JSP, Servlets), XML, WML, HTML, XSLT, SQL, UML (Rational Rose and TogetherJ), IMAP, iCAL, WebDAV
Research Systems, Inc., Boulder, CO, Technical Lead
June 1997 – November 1999
Research Systems develops IDL (Interactive Data Language), a language for scientific visualization and analysis. As a developer on ION Java, RSI's original Web-based product, I was responsible for implementing the client classes that communicated with the IDL server along with the HTTP tunnel broker for allowing communication across firewalls. Following the release of ION Java, I designed and developed ION Script, a Web-scripting language for embedding IDL directly into Web pages. ION Script allowed scientists familiar with IDL and HTML to quickly deploy Web applications. To evaluate next generation technologies, I prototyped different approaches for adding shared and distributed memory parallelismn to ION. As the team lead, I coordinated two major releases of ION. ION ran on all major versions of Unix, Linux, and Windows NT.
Technologies: Java, C, C++, IDL, HTML, XML, HTTP, OpenGL, UML (Visio), Unix, Windows NT
Mapquest.com, Denver, CO, Software Engineer
August 1996 – June 1997
At Mapquest, I was part of the team that refactored the original prototype into a robust, scalable Web application. Working before PHP and other Web languages were developed, we created a scripting engine that enabled designers and marketers to make changes to the functionality of the site without writing low-level code. I designed the event mechanism for tracking user actions and managing application state and worked on the logic and interfaces for TripQuest, the route finding application.
Technologies: C++, HTTP, HTML
HP Labs, Palo Alto, CA, SEED Internship
June 1996 – August 1996
As an research intern, I worked in the Imaging Technology Department desgining components for image processing pipelines. The research goal was to understand software architectures for digital camera systems.
Technologies: C++, Visual Basic, COM
Laboratory for Scientific Computing/Rock Physics Lab, University of Notre Dame, Undergraduate Research
January 1995 – May 1996
Working with the Rock Physics Lab, I developed a component-based library for data acquisition and instrument control that was used to build applications for managing experiments. To process the results, I implemented visualization and analysis pipeline using AVS and custom least-squares code.
Skills and Tools
Languages
- Expert: Python, C, C++, Java, HTML, XML, PPC/SPU assembly
- Intermediate: Scheme, Lisp, SQL, BASH, CSH
- Beginner: Fortran, PHP, Visual Basic
Techniques
- Scientific visualization and analysis
- Chem and bioinformatics
- Information visualization
- Object oriented analysis and design with UML
- GUI programming (wxWidgets, QT)
- Web application infrastructure
- High-performance computing
- Parallel and multi-core application development
Platforms
I have developed software for Windows 95/NT/XP, most flavors of Unix, Linux, and Mac OS X. I am also an early adopter of IBM’s Cell BE platform and have experience with all levels of Cell BE development.
Leadership and Communication
As a product architect and team lead on multiple projects, I have led teams through multiple release cycles and am familiar with all aspects of the software lifecycle for shrink-wrapped and Web-based applications. I am comfortable working in interdisciplinary environments and can communicate technical ideas clearly to non-technical team members.
Education
Indiana University, Bloomington, Ph.D. in Computer Science with a minor in Bioinformatics, Dr. Andrew Lumsdaine, advisor, Dr. Mehmet Dalkilic, minor advisor,
2003 – 2007
Indiana University, Bloomington, M.S. in Computer Science, 2005
University of Colorado at Boulder, Continuing Education in Biology, 2001
University of Notre Dame, B.S. in Computer Science, 1996
Publications
Journals
"High-Performance Direct Pairwise Comparison of Large Genomic Sequences" Christopher Mueller, Mehmet Dalkilic, and Andrew Lumsdaine. IEEE Transactions on Parallel and Distributed Systems, Special Issue - High-Performance Computational Biology Vol 17, Issue 8, pp. 764-772 (August 2006).
"Solving the advection-diffusion equations in biological contexts using the cellular Potts model," Debasis Dan, Chris Mueller, Kun Chen, James A. Glazier. Phys. Rev. E 47, 041909 (2005).
Refereed Conferences
"A Comparison of Vertex Ordering Algorithms for Large Graph Visualization," Christopher Mueller, Benjamin Martin, and Andrew Lumsdaine. APVIS 2007. Sydney, Australia.
"Interpreting Large Visual Similarity Matrices," Christopher Mueller, Benjamin Martin, and Andrew Lumsdaine. APVIS 2007. Sydney, Australia.
"Expression and Loop Libraries for High-Performance Code Synthesis," Christopher Mueller and Andrew Lumsdaine. LCPC 2006. New Orleans, LA.
"Runtime Synthesis of High-Performance Code from Scripting Languages," Christopher Mueller and Andrew Lumsdaine. Dynamic Language Symposium 2006. Portland, OR.
"High-Performance Direct Pairwise Comparison of Large Genomic Sequences," Christopher Mueller, Mehmet Dalkilic, and Andrew Lumsdaine. In Proceedings of the Fourth IEEE International Workshop on High Performance Computational Biology. HiCOMB 2005. Denver, CO.
"Interactive Poster: Enlightenment: An Integrated Visualization and Analysis Tool for Drug Discovery," Christopher E. Mueller. In Poster Compendium, IEEE Conference on Visualization, IEEE Symposium on Information Visualization. Seattle, Washington, October 19-24, 2003, Alan Keahey, Matt Ward, et. al. poster chairs.
Thesis
"Synthetic Programming: User-Directed Run-Time Code Synthesis for High PerformanceComputing". Christopher Mueller. Ph.D. Thesis. June 1, 2007
Books
"ION Script User's Guide" (June, 1999). Boulder, CO: Research Systems, Inc.
"ION Java User's Guide" (June, 1999). Boulder, CO: Research Systems, Inc.

