This was last updated in October 2012. It may be out of date. If you want me to update it or have any questions, please contact me by email at: firstname.lastname@example.org.
My overall objective is to improve large software systems through the development of novel techniques as well as the application of known engineering principles. Of particular interest to me are compilers, debuggers, operating systems, graphics, and other system software. I am the creator and a lead on both LLVM and Clang, two projects which have grown far beyond my own contributions.
I am a strong leader and have excellent communication skills (both verbal and written). I am currently Director of the Developer Tools department at Apple and the founder and lead of the llvm.org open source project. My role is to drive innovation in the low-level tools and programming language space, and I manage the groups responsible for LLVM, Clang, LLDB, the C++ and Objective-C runtimes, and the low-level toolchain at Apple (for both Mac OS/X and iOS). I occasionally give talks explaining and evangelizing LLVM and Clang for various purposes.
I am the chief architect of the LLVM Compiler Infrastructure and manage several groups at Apple responsible for compilers and tools. The LLVM project is an umbrella project which has grown to include a broad range of compiler, debugger, and runtime library technology. Assembled out of this technology are things like the Clang compiler, the LLDB debugger, the Clang Static Analyzer, and other low-level tools. LLVM is widely used for academic research projects, has been adopted for commercial use by several companies, and has a broad and growing developer base. For more information, please see the LLVM web page: http://llvm.org/.
I also have a brief bio available.
In 2011, I wrote a chapter on LLVM for "The Architecture of Open Source Applications," a book on software design. The chapter describes traditional compiler design, what makes LLVM different, how library-based design impacts applicability of the code, and how some simple optimizations work.
In January, I took over management and leadership of the entire Developer Tools department at Apple (> 100 people). In addition to compilers and low-level tools, I am now responsible for the Xcode IDE, Instruments performance analysis tool, Apple Java releases, and a variety of internal tools.
This timeframe has included numerous technical and team achievements across a wide range of domains. For example:
I continue my work to push developer tools and languages at Apple forward - we're not out of ideas yet. :) When more of my work in this time period becomes public, I will elaborate on my contributions.
I managed the teams responsible for compilers, the LLDB debugger, Objective-C and C++ runtimes, assembler, linker, dynamic loader, etc. I am continuing my work improving the Apple developer tools, and continue to contribute daily to the open source LLVM technologies. During this time period my team switched Mac OS/X Lion and iOS5 to build with llvm-gcc and clang (off of GCC 4.2) and oversaw the final release of Xcode 4.0 in March (as well as subsequent updates).
Xcode 4.2 was a specific achievement in that it is the first release where all of its compilers are LLVM-based (GCC 4.2 is no longer included). Xcode 4.2 also includes the "Automatic Reference Counting (ARC) Objective-C language feature (see also the marketing page). ARC has revolutionized Objective-C programming by automating memory management without the runtime overhead of a garbage collector. I personally defined and drove this feature late in the schedule of iOS5 and Lion. This is notable for the short schedule for the project, the extensive cross-functional work required, and the extensive backwards compatibility issues that had to be addressed (making it a very technically complex problem).
My work in this time period culminated in the release of the Xcode 4 preview at WWDC, which included a preview release of Clang C++ support, a new C++ Standard Library, a much faster and memory efficient system linker, a new X86 assembler (which is integrated into the clang compiler, providing faster compile times), and countless smaller improvements throughout the toolchain.
Xcode 4 itself now features deep integration of the Clang parser for code completion, syntax highlighting, indexing, live warning and error messages, and the new 'Fix-It' feature in which the compiler informs the UI how to automatically corrects small errors. LLVM-GCC is the default compiler in Xcode 4.
The Xcode 4 preview also includes the first public release of LLDB to which I served as a consultant and contributed directly to turning it into an open source project.
In this time period, I was a second level manager running the teams responsible for Clang, LLVM, GCC, and other parts of the Apple toolchain (assembler, linker, etc). I directly managed the Clang team, contributed daily to both the Clang and LLVM projects, and continued in my role as compiler architect and lead on the Open Source LLVM/Clang projects.
During this period my team brought Clang 1.0 to production quality as a brand new C and Objective-C compiler for X86-32 and X86-64. We also productized and shipped the Xcode static analyzer, a new compiler-rt library (which replaced libgcc in Snow Leopard) and many enhancements to existing components in the operating system.
In this time period, my group expanded use of LLVM within Apple, supported new clients, built new features, and extended LLVM in many ways. We shipped llvm-gcc 4.2 in the Xcode 3.1 and major improvements for it in the Xcode 3.1.1 release.
In addition to llvm-gcc, much of the work during this time was focused on Mac OS 10.6 development. I made major contributions to design and implementation of the "Blocks" language feature as well as to the architecture and design of the language and compiler aspects of the OpenCL GPGPU technology.
Finally, during this period I architected and started implementation of a suite of front-end technlogies based on LLVM, named "Clang".
I drove LLVM productization, features and applications at Apple. LLVM link-time optimization support is now integrated into the Apple system linker, and LLVM is used by the Apple OpenGL group for several different purposes. My main contributions during this time was a new llvm-gcc4 front-end, significant improvements to the X86 and PowerPC backends, a wide range of optimization improvements and new optimizers, significant improvement to the target-independent code generator, and leadership for the rest of the team.
I worked on numerous projects at UIUC, the most important being LLVM and Data Structure Analysis (DSA). At Illinois, I designed and built most of the fundamental aspects of LLVM, establishing the architecture for things to come and building most of the scalar, loop and interprocedural optimizers. I also built most of the target-independent code generator, X86 backend, JIT, llvm-gcc3 front-end, and much more. Finally, I wrote many papers.
I worked on the Microsoft Phoenix compiler infrastructure, building an experimental bridge between the Microsoft compiler and the LLVM compiler (which allowed LLVM to compile and run .NET code). In the process, I identified and fixed numerous bugs in the (still in early development) Microsoft compiler.
I virtualized the Linux Kernel to run as a user-level application under the Dynix/PTX operating system. This provided 100% compatibility with existing Linux binaries, but this project was never productized.
I was involved with the 4.5 release of Sequent's PTX OS, which added kernel threads. I was primarily involved porting the Java Virtual Machine from user-level threads to native threads, but was also drive debugged many kernel issues in the pthreads implementation. I also added thread awareness to the system debugger.
I worked 16 hrs/wk developing an online remote kernel debugger based on GDB.
My primary work was to port Sun's Java Virtual Machine to the Dynix/PTX OS. This involved work in both C & Java, in systems as varied as user-level threads, garbage collection, and asynchronous I/O.
University of Illinois, Urbana-Champaign - Urbana, Illinois - GPA: 4.0
University of Portland - Portland, Oregon - GPA: 3.9
Since joining industry, I rarely take time to write papers about my work, preferring instead to focus on building new great things. That said, LLVM is widely used as a basis for many current and past research projects by other people.