Resume for Neal M Gafter, Ph.D.

13608 SE 7th St, Bellevue, WA 98005
(425) 835 - 3734
email: resume@neal.gafter.com

Summary

Ph.D. in Computer Science with (current year minus 1980) years of experience in programming language design and implementation. My current interest is the design and implementation of programming language features to exploit concurrency, and compiler features to support integrated development environments.

Objective

I am NOT seeking a change of employer at this time!

Work Experience

Microsoft
September 2008 - present
Partner Architect, Visual Studio Managed Languages

Technical lead for the design and implementation of new compilers for the Roslyn Project, which will form the core of Microsoft's future C# and Visual Basic products.

Participating in the design of future revisions of the C# and Visual Basic Programming Languages; most recently we added support for asynchronous programming. Patents based on this work are pending.

Java Language changes
July 2006 - August 2008 (part time)

Working with the editor of the Java Language Specification, drafted a proposed set of guidelines, criteria, and goals for future Java language evolution, and began drafting specifications for some proposed changes. Some of these changes are now in Java 7, and others are in process for Java 8 and future revisions.

Led a team (including Gilad Bracha, James Gosling, and Peter von der Ahe) in the design and implementation of a proposed extension to the Java Programming Language to support closures (lambda expressions) and control abstraction. See http://www.javac.info.

Google Inc.
July 2004 - September 2008

Designed and implemented the distributed storage architecture for Google Calendar.

Sun Microsystems, Java Software Division
October 2000 - July 2004
Senior Staff Software Engineer
Technical Lead, Java Compiler and Tools

Primary designer and developer for Sun's Java Programming Language compiler and related tools (javac, javadoc, javah, javap) from the J2SE 1.3.1 release through JDK 1.5. Designed or co-designed the new language features and library support for Java 1.4.0 (Merlin) and 1.5.0 (Tiger). Implemented the new language features. Retrofitted the core libraries (java.lang, java.util, java.lang.reflect, etc) to take advantage of new language features. Brought the javac bug count to zero in 1.4.2.

Sun Microsystems Laboratories, Mountain View, California
March 1998 - October 2000
Forest Project (Orthogonal persistence for Java)

Developed the SPECmail2001 industry standard mail server benchmark.

Participated in the implementation of a Java VM that provides orthogonal persistence. Implemented applications that take advantage of persistence: a Java compiler that caches parse trees and an NNTP (netnews) server. Implemented an archive mechanism that creates an architecture-neutral external checkpoint of a running Java VM and a restore mechanism to restore the VM to the checkpoint.

Sun Microsystems Software Developer Products
June 1995 - March 1998
Technical Lead, C++ Compiler Front End

Primary technical resource for C++ language questions and Sun's C++ compiler. Led the team by planning, designing, and implementing many changes to the C++ compiler to track ANSI/ISO standard, to improve robustness, and to respond to customer needs. Active participant in the ANSI/ISO C++ standards effort.

Sun Microsystems Laboratories, Mountain View, California
June 1994 - June 1995
Staff Software Engineer
Clarity Project (Java-like integrated software development environment)

Developed a new compiler front end for a Java-like language. The front end is a key component in a prototype integrated programming environment. Active participant in the ANSI/ISO C++ standards effort.

Microtec Research, Inc., Santa Clara, California
Staff Software Engineer, January 1993 - May 1994
Sr. Software Engineer, January 1992 - December 1992
Compiler Architect (reporting to Director of Compiler Technology)

Was architect and principal developer of Microtec's compiler technology for their dominant product line, including the development of a new intermediate language, C++ compiler front end, and code generator. Primary technical resource for interpreting the ANSI/ISO C and C++ standards. Presented regular internal seminars on compiler and programming technology.

Maintained existing ANSI C compiler front end. Developed high-performance versions of many of the ANSI C libraries. Wrote test-case generators to exercise and diagnose the most fragile portions of the compiler. Active participant in the ANSI/ISO C++ standards effort.

Texas Instruments Computer Science Center, Dallas, Texas
Member of the Technical Staff, May 1990 - January 1992
Languages and real-time systems branch

Developed the front-end of a silicon compilation system from C code using partial evaluation. Led a team in the development of an integrated programming environment for a 680x0 Unix platform based on Emacs and GCC.

Xerox Corporation, Rochester, New York
Consultant, May - August 1987 (full time)
September 1987 - December 1988 (part time)

Developed a suite of compiler optimizations and rewrote a table-driven code generator resulting in a 12% improvement in code quality. Developed a set of tools for configuration control and release management.

State Systems, Inc., Rochester, New York
Contractor, August 1987 - January 1988 (part time)

Designed and implemented a portable compiler for a proprietary process control language.

Xerox Corporation, Rochester, New York
Software Engineer June 1981 - January 1985

Co-designed a language and runtime system for embedded distributed control systems; implemented a retargetable, optimizing multipass compiler for the language; designed and implemented productivity tools for the programming environment.

Sierra Research Corporation, Buffalo, New York
Scientific Software Developer, Summers 1977 - 1980

Developed military, aeronautic, and scientific simulations and embedded systems.

Education

Ph.D. Computer Science, May 1990; M.S. Computer Science, May 1984
University of Rochester, Rochester, New York
Thesis topic: Large Scale Parallelism in Incremental Compilation.

Detailed new algorithms and data structures that make it possible to implement a fully data-parallel incremental compiler for a conventional programming language, with the goal of reducing the response time of the programming environment.

Studies included Systems Software (operating systems, language design, compilers, etc.), theory (algorithms, automata, cryptography, program verification, etc.) and AI (computer vision, natural language understanding, etc.)

B.S. Computer Engineering with high honors, May 1981
Case Western Reserve University, Cleveland, Ohio

Recent Talks

Closures Cookbook (2008).

Evolving the Java Programming Language (2008), with Alexander Buckley.

Little language features for Java SE 7 (2007), with Joshua Bloch.

Closures Update (2007).

Adding Closures to the Java Programming Language (2006-2007).

Java Programming Puzzlers (2002-2004), More Programming Puzzlers (2003-2004), and Yet More Programming Puzzlers (2004), Still More Programming Puzzlers (2005), and Programming Puzzlers: Tiger Traps (2006) with Joshua Bloch.

Wildcards in the Java Programming language (2003-2004).

Cooking with Tiger (JDK5) (2004), with Joshua Bloch.

Java Programming Language changes in Tiger (JDK5) (2003-2004), with Joshua Bloch.

How JDK5 language changes affect your favorite APIs (2003-2004).

Compiler challenges in implementing JDK5 language features (2004).

Publications and Patents

United States Patent number 8549506: Resumable methods. October 1, 2013.

EU Patent Application EP 2521978 A2: Efficient immutable syntax representation with incremental change. January 7, 2010.

United States Patent number 7627569: Document access control. December 1, 2009.

United States Patent number 7263687: Object-oriented enumerated type facility. With Joshua Bloch, August 28 2007.

United States Patent number 7080369: Method and apparatus for producing compressed compiler products. With Lawrence Crowl, July 2006.

Java Puzzlers: Traps, Pitfalls, and Corner Cases, Book with Joshua Bloch, June 2005.

Adding Wildcards to the Java Programming Language. With Mads Torgersen, Christian Plesner Hansen, Erik Ernst, Peter von der Ahe, and Gilad Bracha. In the special issue of OOPS 2004, the Journal of Object Technology, December 2004.

Java 1.5. With Joshua Bloch. In Linux Magazine, June 2004.

United States Patent number 6718438: Using feedback to determine the size of an object cache. With Brian Lewis, Bernd Mathiske, and Michael J. Jordan. April 2004.

Adding Wildcards to the Java Programming Language. With Mads Torgersen, Christian Plesner Hansen, Erik Ernst, Peter von der Ahe, and Gilad Bracha. In Proceedings of the 19th Annual ACM Symposium on Applied Computing, Nicosia, Cyprus, March 2004. [this is an abridged version of the J.O.T paper]

Java Puzzlers. With Joshua Bloch. In Linux Magazine, March 2003.

Architecture of the PEVM: A High-Performance Orthogonally Persistent JavaTM Virtual Machine. With Brian Lewis and Bernd Mathiske. In the Proceedings of the Ninth International Workshop on Persistent Object Systems: Design, Implementation and Use, September 2000, Lillehammer, Norway. An expanded version is also available as a Sun Microsystems (Oracle) Laboratories Technical Report, October 2000.

United States Patent number 5666296: Method and means for translating a data-dependent program to a data flow graph with conditional expression. September 9, 1997.

United States Patent number 5650948: Method and system for translating a software implementation with data-dependent conditions to a data flow graph with conditional expressions. July 22, 1997.

CGGL - A Language for Writing Code Generators. Microtec Research, Inc. Technical Report, February 1993.

An Iterative Graph Coloring Algorithm for Global Register Allocation.  Microtec Research, Inc. Technical Report, July 1992.

Hi-PASS: a computer-aided synthesis system for maximally parallel digital signal processing ASICs. With Philip Duncan, Shobana Swamy, Steve Sprouse, Dan Potasz, Rajeev Jain, William Cammack, Yiwan Wong and Wanda Gass. In Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing, 1992. ICASSP-92.

Experiments with the Hi-PASS DSP synthesis system. With Philip Duncan, Shobana Swamy, Steve Sprouse, Dan Potasz, Rajeev Jain, William Cammack, Yiwan Wong and Wanda Gass. In Proceedings of the IEEE International Conference on Circuits and Systems, ISCAS 1992, Special Session on Synthesis for Digital Signal Processing Systems..

Parallel Incremental Compilation. (PhD Dissertation) University of Rochester Technical Report 349, June 1990.

On the Complexity of Parallel Compilation. In the Proceedings of the Workshop on Parallel Compilation, Kingston, Ontario, May 1990.

The Elmwood Multiprocessor Operating System. With T.J. LeBlanc, J.M. Mellor-Crummey, L.A. Crowl, and P.C. Dibble. Software Practice and Experience 19, 11, November 1989, pp. 1029-1056

Elmwood- An Object-Oriented Multiprocessor Operating System. With John Mellor-Crummey, Tom LeBlanc, Lawrence Crowl, and Peter Dibble. University of Rochester Technical Report TR226, September 1987.

List Productions in a Parallel Incremental Compiler. In University of Rochester Technical Report TR209, Proceedings of the 1988 Open House, May 1988.

Algorithms and Data Structures for Parallel Incremental Parsing. International Conference on Parallel Processing 1987.

Geometry Problems, With Robert J. Fowler. In University of Rochester Technical Report BPR13, DARPA Parallel Architecture Benchmark Study, October 1986.

SMP: A Message-Based Programming Environment for the BBN Butterfly. With Tom LeBlanc and Takahide Ohkami. University of Rochester Technical Report BPR 8, July 1986.

Optimal Multitheodolite Position Estimate. Sierra Research Corporation Technical Report, July 1980.