Brian D. Carlstrom

13045 Alta Tierra Road
Los Altos Hills, CA 94022
(650) 947-9632
bdc@carlstrom.com

Education

Stanford University
Stanford, CA
Ph.D. and M.S. in Computer Science
2003-2008
Graduate work in programming languages and computer architecture.
Thesis on Programming with Transactional Memory showed that if transactional memory is to make parallel programming easier, rather than just more scalable, the programming interface requires more than simple atomic transactions. JavaT was used to evaluate the performance and demonstrate the limitations of simple transactional memory semantics for Java programs. The Atomos programming language was introduced, building on JavaT by removing problematic Java concurrency constructs and replacing them with transactional primitives. Semantic concurrency control techniques, made possible by Atomos's novel open-nested transactions, were used to create Transactional Collection Classes, which eliminate unnecessary memory-level dependencies in abstract data types. An Atomos version of the SPECjbb2000 benchmark using coarse-grained transactions was used to demonstrate the ease of parallelization using the Transactional Collection Classes.
Massachusetts Institute of Technology
Cambridge, MA
M.Eng. in Computer Science and Electrical Engineering
2000-2001
Massachusetts Institute of Technology
Cambridge, MA
S.B. in Computer Science and Electrical Engineering
1991-1995
Minor in Science, Technology, and Society. Undergraduate project on a P2P messaging system.

Publications

Brian David Carlstrom,
Doctor of Philosophy Dissertation, Stanford University, June 2008
Transactional Collection Classes,
Brian D. Carlstrom, Austen McDonald, Michael Carbin, Christos Kozyrakis, Kunle Olukotun,
ACM SIGPLAN 2007 Conference on Principles and Practice of Parallel Computing, San Jose, California, March 2007
A Scalable, Non-blocking Approach to Transactional Memory,
Hassan Chafi, Jared Casper, Brian D. Carlstrom, Austen McDonald, Chi Cao Minh, Woongki Baek, Christos Kozyrakis, Kunle Olukotun,
13th International Symposium on High-Performance Computer Architecture (HPCA), Phoenix, Arizona, USA, 13 February 2007
Transactional Memory: The Hardware-Software Interface,
Austen McDonald, Brian D. Carlstrom, JaeWoong Chung, Chi Cao Minh, Hassan Chafi, Christos Kozyrakis, Kunle Olukotun,
Micro's Top Picks, IEEE Micro January/February 2007 (Vol. 27, No. 1)
Executing Java programs with transactional memory,
Brian D. Carlstrom, JaeWoong Chung, Hassan Chafi, Austen McDonald, Chi Cao Minh, Lance Hammond, Christos Kozyrakis, Kunle Olukotun,
Science of Computer Programming, Volume 63, Issue 2, 1 December 2006, Pages 111-129
Tradeoffs in Transactional Memory Virtualization,
JaeWoong Chung, Chi Cao Minh, Austen McDonald, Hassan Chafi, Brian D. Carlstrom, Travis Skare, Christos Kozyrakis, Kunle Olukotun,
Proceedings of the Eleventh International Conference on Architectural Support for Programming Languages and Operating Systems, San Jose, California, 21-25 October 2004
Architectural Semantics for Practical Transactional Memory,
Austen McDonald, JaeWoong Chung, Brian D. Carlstrom, Chi Cao Minh, Hassan Chafi, Christos Kozyrakis, Kunle Olukotun,
Proceedings of the 33rd Annual International Symposium on Computer Architecture, Boston, Massachusetts, 17-21 June 2006
The Atomos Transactional Programming Language,
Brian D. Carlstrom, Austen McDonald, Hassan Chafi, JaeWoong Chung, Chi Cao Minh, Christos Kozyrakis, Kunle Olukotun,
ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation, Ottawa, Canada, 12 June 2006
The Software Stack for Transactional Memory: Challenges and Opportunities,
Brian D. Carlstrom, JaeWoong Chung, Christos Kozyrakis, Kunle Olukotun,
First Workshop on Software Tools for Multi-Core Systems, Manhattan, New York, NY, 26 March 2006
The Common Case Transactional Behavior of Multithreaded Programs,
JaeWoong Chung, Hassan Chafi, Chi Cao Minh, Austen McDonald, Brian D. Carlstrom, Christos Kozyrakis, Kunle Olukotun,
12th International Symposium on High Performance Computer Architecture (HPCA), Austin, Texas, USA, 11-15 February 2006
Transactional Execution of Java Programs,
Brian D. Carlstrom, JaeWoong Chung, Hassan Chafi, Austen McDonald, Chi Cao Minh, Lance Hammond, Christos Kozyrakis, Kunle Olukotun,
OOPSLA 2005 Workshop on Synchronization and Concurrency in Object-Oriented Languages (SCOOL), San Diego, California, USA, 16 October 2005
Characterization of TCC on Chip-Multiprocessors,
Austen McDonald, JaeWoong Chung, Hassan Chafi, Chi Cao Minh, Brian D. Carlstrom, Lance Hammond, Christos Kozyrakis, Kunle Olukotun,
The Fourteenth International Conference on Parallel Architectures and Compilation Techniques, Saint Louis, Missouri, 19 September 2005
TAPE: A Transactional Application Profiling Environment,
Hassan Chafi, Chi Cao Minh, Austen McDonald, Brian D. Carlstrom, JaeWoong Chung, Lance Hammond, Christos Kozyrakis, Kunle Olukotun,
The 19th ACM International Conference on Supercomputing, Cambridge, MA, 20 June 2005
Transactional Coherence and Consistency: Simplifying Parallel Hardware and Software,
Lance Hammond, Brian D. Carlstrom, Vicky Wong, Michael Chen, Christos Kozyrakis, Kunle Olukotun,
Micro's Top Picks, IEEE Micro November/December 2004 (Vol. 24, No. 6)
Programming with Transactional Coherence and Consistency (TCC),
Lance Hammond, Brian D. Carlstrom, Vicky Wong, Ben Hertzberg, Mike Chen, Christos Kozyrakis, Kunle Olukotun,
Proceedings of the Eleventh International Conference on Architectural Support for Programming Languages and Operating Systems, Boston, Massachusetts, 9-13 October 2004
Transactional Memory Coherence and Consistency,
Lance Hammond, Vicky Wong, Mike Chen, Ben Hertzberg, Brian D. Carlstrom, John D. Davis, Manohar K. Prabhu, Honggo Wijaya, Christos Kozyrakis, Kunle Olukotun,
Proceedings of the 31st Annual International Symposium on Computer Architecture, München, Germany, 19-23 June 2004
Embedding Scheme in Java,
Brian D. Carlstrom,
MIT Master of Engineering Thesis, Cambridge, MA, February 2001
The scsh manual, release 0.3,
Olin Shivers, Brian D. Carlstrom,
MIT Laboratory for Computer Science, Cambridge, MA, 25 December 1994

Patent

Operating resource management system
Norman Adams, Marc Brown, Brian Carlstrom, Brian Elkin, Paul Hegarty, Guy Haskin, Boris Putanec
United States Patent 7,117,165

Awards & Honors

Intel Foundation Ph.D. Fellow 2005-2007.
Stanford School of Engineering Graduate Council 2005.
Stanford Computer Science Department Student Services Award 2004-2005.
Stanford Computer Science Department Ph.D. Program Commitee 2003-2007.

Research Experience

Stanford Computer Systems Laboratory
Stanford, CA
Research Assistant
2003-2008
Member of the Transactional Coherence and Consistency project researching hardware supported transactional memory models. Research focused on parallel programming with transactional memory. Built upon IBM's Jikes Research Virtual Machine to evaluate programming models, benchmarks, and new programming language features. Significant C++ development on our architecture simulator, including moving from PowerPC-only to include support for x86.
Teaching Assistant
Winter 2007 and Winter 2008
CS315a Parallel Architecture and Programming
MIT Media Lab & Laboratory for Computer Science
Cambridge, MA
Undergraduate Researcher
1994-1995
Co-author of the open source project Scsh: the Scheme Shell. Scsh is a POSIX environment based on the Scheme dialect of the Lisp programming language. Involved in all aspects of the system including design, implementation, documentation, testing, and release. Scsh is used for CGI scripts, network applications, and general purpose shell scripts. Used Scsh to develop several applications including a mobile web browser for the Apple Newton and a web server that is extensible in Scsh and CGI.
MIT Artificial Intelligence Laboratory
Cambridge, MA
Undergraduate Researcher
1993-1994
Developed sequential to parallel research compiler for the Scheme dialect of Lisp. Implemented C Language back-end for modified Gambit Scheme compiler. Implemented runtime system for workstation simulation and for execution on the Thinking Machines CM-5.
MIT Flight Transportation Laboratory
Cambridge, MA
Undergraduate Researcher
1991-1993
Implemented airline schedule optimizer for NASA and McDonnell-Douglas. Integrated optimizer with a graphical schedule editor and assisted in product delivery including installation and user training. Set up and administered lab of Sun and Apollo workstations.

Industry Experience

Google
Mountain View, CA
Senior Staff Software Engineer
2010-present
Engineering software
Ariba
Sunnyvale, CA
Distinguished Engineer
2003-2009
Part-time advisory role during my time as a Stanford graduate student.
Buyer and Platform Technical Architect
2001-2003
As architect for Buyer 8.0 release was involved in content definition, planning, feature design reviews, and operational execution. Evolved development process through component ownership practices. Consulted on refactoring to create application platform, the core of new Ariba products. Drove code cleanliness projects to remove JDK 1.1 limitations and supportability issues. Worked with legal, documentation, and engineering on many third party licensing issues. Drove technical leader review process, identifying future candidates, and worked with managers on the candidate's career development.
Server Technical Lead
1999-2001
Led Buyer 7.0 Server team projects which involved design reviews, schedule tracking, and issue resolution. Delivered refactoring of server technologies such as object-relational mapping, RPC, and utility libraries for use by other products. Ariba Analysis was built from scratch on this platform and existing applications have begun adoption. Converted from RSA to Entrust crytography to reduce cost of goods sold, at the same time enhancing our security API. Created first unit test infrastructure and unit tests, now integrated with JUnit. Created 8.0 requirements and initial designs for database archiving and data migration. As acting manager, heavily involved in recruiting including college hiring. As acting director, coordinated office move.
Software Engineer
1997-1999
Member of original team that designed and implemented the Ariba Buyer product. Drove engineering closure on first product spec. Created the Approvable document architecture, the user permissions model, and a Scheme interpreter for business rules. Implemented SMTP client and server for notification. Responsible for HTTP server used for printing and attachments and later converted it to the servlet API. Created Inspector tool for runtime debugging. Created command line monitoring tools to automate operations. Removed explicit locking from object model to simplify API. Converted RPC from using a thread per client to worker queues to improve scalability. Created javadoc doclet to allow fine grain control over published API. Assisted globalization by removing deprecated JDK 1.0 APIs. Converted all production batch and shell scripts to Perl for portability. Created and maintained development web site, mailing lists, and Emacs development environment.
Open Market
Menlo Park, CA
Software Engineer
1996-1997
Developer for OM-Express, a browser accelerator for Windows. Performed memory analysis prior to 1.0 release. Analyzed networking performance for various TCP/IP stacks. Reimplemented core URL technology to be RFC compliant.
General Magic
Sunnyvale, CA
Software Engineer
1995-1996
Developed Java Virtual Machine for Magic Cap devices. Used this VM in new implementation of MagicScript authoring language. Worked on port of the Telescript language interpreter to Win32. Ported Telescript Access Service to Windows 3.1 and Win32 to enable Visual Basic interfaces to Telescript services.

Skills

Expertise: Parallel programming including transactional memory. Advanced language implementation. Object-relational mapping. Client-server architecture. Networking protocols. Cryptography including SSL and PKI. Refactoring for reuse. Automated build systems.
Languages: Fluent: Java, Perl, C
Proficient: C++, Scheme, elisp, sh, make, SQL, HTML, CSS
Experience: Python, awk, csh, JavaScript, PHP, Visual Basic Script, Common Lisp, Pascal, Basic, assembly language (x86, MIPS, PowerPC)
Tools: Emacs, Unix shell utilities, Perforce, Subversion, CVS, Apache, IIS, ASP, LaTeX
Environments: Windows, Unix, and Mac OS experience including basic administration