Harold Carr, Ph.D.


P. O. Box 58166
Salt Lake City, Utah 84158 USA
801-322-2777
hc @ haroldcarr . net

Current as of January 10, 2006

Education

1994Ph.D., Computer Science, University of Utah (Summa cum Laude)

Employment

2/1999 - presentSenior Staff EngineerSun Microsystems, Santa Clara, California
Engineering lead for Java web services interoperability with Microsoft Windows Communication Foundation.
Previously:
Responsible for CORBA (JavaIDL and RMI-IIOP) parts of Java Standard Edition and Java Enterprise Edition (application server).
Application server work includes: clustering, load-balancing and failover.
CORBA work includes specification, design, implementation, documentation and maintenance in all CORBA areas (e.g., POA, GIOP/IIOP, language mappings, etc).
Designed the PEPT 2.0 implementation architecture for JAX-WS (i.e., JAX-RPC 2.0)
Sun representative for OMG specifications and technical meetings.
Detail:
11/2005 - present(Sun)
Java Web Services Interoperability with Microsoft Windows Communication Foundation.
Leading a global team of engineers working closely with Microsoft engineers to implement WS-* specifications (e.g., WS-AtomicTransactions) enabling enterprise interoperability.
1/2005 - 10/2005(Sun)
Sun Java System Application Server Enterprise Edition High Availability.
Shipped CORBA (and HA features) in Sun Java Application Server 8.2 Enterprise Edition.
Designed RMI-IIOP dynamic load-balancing and failover system used in Java Application Server 9.0/EE, and leading implementation team.
11/2001 - 12/2004(Sun)
PEPT Remoting Systems Architecture.
Shipped CORBA in Sun Java Application Server 8.1 Enterprise Edition.
Shipped CORBA in Sun Java Application Server 8.0 Platform Edition.
Shipped CORBA in Java Standard Edition 5
Shipped CORBA in J2EE 1.4 Reference Implementation.
Shipped CORBA in Java Standard Edition 1.4
Designed RMI-IIOP static load-balancing and failover system used in Java Application Server 8.1/EE, and lead implementation team.
Created and patented PEPT 1.0: an adaptable remoting systems architecture.
Rewrote Sun's ORB to use PEPT 1.0 architecture.
Created and patented PEPT 2.0.
Used PEPT 2.0 as the implementation architecture JAX-WS (i.e., JAX-RPC 2.0.)
Used PEPT architecture to build clients and servers which use both IIOP and SOAP transparently to the programming model.
Designed RMI-IIOP static load-balancing and failover system used in Java Application Server 7.1/EE.
Lead communications team comprised of JAX-RPC, CORBA, JMS, JAXM and Connectors.
Sun representative on OMG Java-to-IDL Revision Task Force.
Participated in Sun's Engineering Mentoring Pilot Program with mentor David Ungar.
Participated in Sun's Mentoring Program as mentor to Darryl Mocek.
Took course "Effective Presentations".
Took course "The 7 Habits of Highly Effective People".
Took course "Time Management and Personal Leadership".
4/2000 - 10/2001(Sun)
Lead ORB Interceptor Architect and Implementor.
Shipped CORBA in J2EE 1.2 and 1.3. Reference Implementation.
Shipped CORBA in iPlanet Application Server.
Chairperson of OMG Portable Interceptor (PI) Finalization and Revision Task Forces. Wrote OMG Portable Interceptor specifications: ptc/2001-10-25, ptc/2001-03-04, ptc/2000-08-06, and reports: ptc/2001-10-24, ptc/2000-08-05.
Lead and scheduled a team of 3 implementing the OMG PI specification.
Member of Sun team which wrote the OMG Object Reference Template (ORT) specification ptc/01-08-31 and gave OMG presentation orbos/2000-06-21 which led to the ORT RFP orbos/00-09-30.
Designed and implemented proprietary ORB connection interceptors used by J2EE and iPlanet.
Took course "Solaris System and Network Administration".
2/1999 - 3/2000(Sun)
Interceptors and GIOP 1.4
Shipped CORBA in J2SE 1.3
Sun's representative to OMG Portable Interceptor RFP orbos/98-07-10, which lead to adopted specification ptc/2000-04-05 (which included close collaboration with the CSIv2 Security and the Transaction specifications).
Sun representative on OMG Messaging Revision Force, Interoperable Naming Service and Interop Task Forces.
Designed implementation architecture for OMG GIOP 1.4 (formal/99-10-11), notably: fragmentation.
Designed and implemented proprietary IOR and Request/Reply interceptors for use by J2EE Reference Implementation.
3/1998 - 2/1999Chief Architect, LISP TechnologyAutodesk, San Rafael, California
Shipped Visual LISP in AutoCAD 2000
Shipped Visual LISP 1.0 plug-in product for AutoCAD R14 on Windows 95/98/NT. Voted a top CAD product of 1998 by Cadence magazine.
Replaced AutoLISP command-line interpreter with VM/compiler/IDE-based Visual LISP. (LISP is the main customization language used by AutoCAD's 2 million users.)
Designed API for Visual LISP 1.0
Led a team of engineers in Moscow and California.
12/1994 - 2/1998Staff Engineer, SoftwareSunSoft (Sun Microsystems), Mountain View, California
Detail:
9/1997-2/1998(Sun)
CORBA Sustaining Engineer
Defined architecture to transition NEO(C++)/Joe(Java) CORBA users to Visigenic Visibroker (C++) and JavaIDL ORBs.
Worked with Visigenic (Inprise/Borland) on phased, prioritized delivery of transition architecture.
Worked with chief architects at British Telecom, Siemens Nixdorf, and the Royal Danish Navy implementing specific transitions.
SunSoft representative at OMG technical meetings.
5/1997-8/1997(Sun)
Portable Object Adapter Project Lead
Responsible for SunSoft's implementation of OMG's Portable Object Adapter (POA) on the Joe (Java) ORB.
6/1996-4/1997(Sun)
Object Development Framework (ODF) Project Lead
(ODF is the programming API on top of Sun's C++ CORBA ORB.)
Member of SunSoft team which developed the OMG Portable Object Adapter specification: orbos/97-04-14.
Responsible for ODF portion of NEO 2.0 FCS and Joe 3.0 Beta.
Chief architect/implementor of ODF implementation which includes the following features: server-side ORB APIs; extensions to OMG naming service; automatic factory creation and registration; server lifecycle; server agent for remote administration; automatic tracing, logging, locking, delegation; third-party persistence integration.
Took course: "Advanced Java Networking, RMI and Joe".
12/1994 - 5/1996(Sun)
Member of the ODF team.
Shipped NEO 1.0 (SunSoft C++ CORBA product).
On team responsible for ODF portion of NEO 1.0.
Responsible for implementing and maintaining server-side APIs for the NEO product (SunSoft's OMG CORBA ORB).
Performance testing of SunSoft's implementation of OMG Naming, Events, Property and Relationship Services.
Designed and implemented selective locking, selective delegation, wait for commit (of transparent persistence).
Developed and documented examples of usage of NEO's advanced features: locking, delegation, object lifecycle, subobjects (i.e., flyweights), user-defined persistence, tracing and logging, refdata.
Maintained and extended ODF compiler.
Creation and codemerge of automatically generated server code.
Source code gatekeeper
Took course: "SunOS Internals for Employees".
12/1983 - 1/1994Senior Systems ProgrammerCenter for Software Science, Department of Computer Science, University of Utah, SLC, UT
Designed and implemented a distributed version of C++ for network workstations and the Mayfly Parallel Processing System.
Visualization of distributed systems, specifically, Distributed C++, Concurrent Utah Scheme, and Mach Shared Objects.
Lisp (Scheme) language design and compilation for the Mayfly Distributed Parallel Processing System (joint research with Hewlett-Packard Research Laboratories, Palo Alto, California), and for the FAIM-1 Symbolic Multiprocessing System (joint research with Schlumberger Research Laboratories, Palo Alto, California).
Closure analysis and representation.
Development, maintaining, and porting of Utah Common Lisp and Utah Scheme (compiler, interpreter, debuggers).
Implemented ``modularization'' of Utah Lisp to a minimal system LISP base on top of which we built Utah Scheme, Utah Common Lisp Subset and Utah Common Lisp
Developed a retargetable, highly optimizing Lisp compiler based on an architectural description of the target machine.
Retargeted the Portable Standard Lisp (PSL) compiler to produce C code, then using that compiler to compile the PSL runtime system. The resulting C files are ported to new Unix/C machines within one week.
Development, maintaining, and porting of PSL and Portable Common Lisp Subset (PCLS) (compiler, interpreter, debuggers) on various machines.
Increased PSL portability by implementing a portable linker to support export programs (delivery vehicles) and bootstrapping Lisp systems.
1/1981 - 12/1983VLSI-CAD Systems ProgrammerPatil Systems, Inc., SLC, UT
Designed, implemented, documented and maintained an asynchronous, event driven, gate and functional level logic simulator. Prototype in Lisp. Production version in C/Unix. Wrote Lisp interpreter in C to provide a fully programmable user interface to the simulator.
3/1980 - 1/1981Research Assistant, VLSI Research GroupDepartment of Computer Science, University of Utah, SLC, UT
Various projects using Pascal/Dec10/Tops20.
1/1977 - 3/1980Computer Typesetting Systems ProgrammerCarr Printing Company, Bountiful, Utah.
Designed and built a system of programs and the interface hardware for a complete typesetting system composed of four microcomputers, five typesetters, paper tape readers, etc., all interfaced to the company's accounting minicomputer. The system was written in 8080 assembly language under CP/M.

Consulting

3/1994 - 11/1994Cirrus Logic, Inc., Fremont, California
Extended CAD tools to interface with SPF, SDF and EDIF.
6/1985 - 3/1992Cirrus Logic, Inc., Fremont, California
VLSI Logic simulation, and Lisp frontends to C tools.
I wrote, maintained and extended a mixed mode (functional and gate-level) logic simulator written in C with an embedded Lisp extension language which was in daily production use from 1985 until 1992. My work included the the design of a signal algebra (still in use) and the design, implementation, and documentation of a hardware design and control language (still in use).
6/1986 - 12/1987Schlumberger, Palo Alto, CA
Parallel Lisp Compilation and FAIM-1 Instruction Set Design.
3/1985 - 9/1986Hewlett-Packard Labs, Palo Alto, CA
Ported Lisp (PSL) to HP's HP-PA RISC Processor.
7/1984 - 8/1984Hewlett-Packard Labs, Palo Alto, CA
Bootstrapped PSL's Microkernel.
6/1983 - 9/1983University of Utah Symbolic Computation Group, SLC, UT
PSL Test/Bootstrap Series for the VAX.
3/1980 - 3/1985Carr Printing Company, Bountiful, UT
Ported the system typesetting system I wrote in 8080 assembly language to Forth to make it more portable and easier to maintain.

Courses Taught

9/1993 - 9/1994InstructorDepartment of Music, University of Utah, SLC, UT
Music 197, 198, 397, 398 - Private Applied Music
3/1988 - 6/1988InstructorDepartment of Computer Science, University of Utah, SLC, UT
CS101, Fortran
9/1978 - 6/1988InstructorDepartment of Music, University of Utah, SLC, UT
Music 197, 198, 397, 398 - Private Applied Music
9/1977 - 6/1979InstructorDepartment of Music, Westminster College, SLC, UT
Private Applied Music

Honors

Phi Kappa Phi (General Scholastic Honorary)
Tau Beta Pi (Engineering Honorary)
Sperry Rand Computer Science Undergraduate Scholarship
Army/Navy Science Award

Refereed Journal Articles


"Implementing Concurrent Scheme for the Mayfly Distributed Parallel Processing System,"Lisp and Symbolic Computation, An International Journal, Volume 5 Number 1/2, pp 73-94, May 1992 (with R. Kessler, L. Stoller, and M. Swanson).

"Moped (A Portable Debugger),"Lisp and Symbolic Computation, An International Journal, Volume 3 Number 1, pp 39-66, January 1990 (with R. Kessler, and Mohammad Pourheidari).

"An Emulator for Utah Common Lisp's Abstract Virtual Register Machine,"The Journal of Forth Application and Research, Volume 5 Number 1, pp 113-116, 1987, (with R. Kessler).

"Putting Lisp on a Forth Base,"The Journal of Forth Application and Research, Volume 5 Number 1, pp 117-120, 1987, (with R. Kessler).

"Forth for AI?,"The Journal of Forth Application and Research, Volume 4 Number 2, pp 177-180, 1986, (with R. Kessler).

"A Forth-Based Object File Format and Relocating Loader Used to Bootstrap Portable Standard Lisp,"The Journal of Forth Application and Research, Volume 3 Number 2, pp 119-122, 1985, (with R. Kessler).

Refereed Conference Papers


"IIOP and SOAP Failover in Static Clusters," Proceedings of the 2005 International Conference on Communications in Computing, June 2005, pp 61-66, Las Vegas (with K. Cavanaugh).

"llava - Java in Lisp Syntax," Proceedings of the 2005 International Lisp Conference, June 2005, pp 89-100, Stanford, CA.

"Server-side Encoding, Protocol and Transport Extensibility for Remoting Systems," Proceedings of the Second International Conference on Service Oriented Computing, November 2004, pp 329-334, New York.

"Client-side Encoding, Protocol and Transport Extensibility for Remoting Systems," Proceedings of the 2004 International Conference on Communications in Computing, June 2004, pp 51-57, Las Vegas.

"PEPt - A Minimal RPC Architecture," OTM Confederated International Workshops HCI-SWWA, IPQ, JTRES, WORM, WMS and WRSM 2003 Proceedings, November 2003, pp 109-122, Catania, Sicily.

"One-Page PEPt," Middleware 2003 Workshop Proceedings, June 2003, Rio de Janeiro, Brazil.

"The AutoLISP Platform for Computer-Aided Design," Lisp In the Mainstream, November 1998, Berkeley, California (with R. Holt).

"Compiling Distributed C++," Proceedings of the Fifth IEEE Symposium on Parallel and Distributed Processing, December 1993, pp 496-503, Dallas, Texas (with R. Kessler and M. Swanson).

Parallel C++ Workshop Report, with M. Chandy, C. Kesselman (California Institute of Technology), D. Gannon, (Indiana University) et. al. Marina Del Ray, California, May 1993.

"Distributed C++," Workshop on Languages, Compilers, and Run-Time Environments for Distributed Memory Multiprocessors,ACM Sigplan Notices, Volume 28, Number 1, p 81, January 1993 (with R. Kessler and M. Swanson).

"EPIC - A Retargetable, Highly Optimizing Lisp Compiler," Proceedings of the SIGPLAN '86: Symposium on Compiler Construction, June 1986, pp 118-130, (with G. Duggan; R. Kessler; J. Knell; J. Krohnfeldt; J. Peterson).

"A Portable Linker for Exporting Lisp Programs and Bootstrapping Portable Standard Lisp," Proceedings of the 1986 ACM Mountain Regional Conference, April 1986, (with R. Kessler).

Conference Responsibilities

2006 Program Committee Member (Enterprise and Web Tier)2006 Java One, San Francisco.
2005 Program Committee Member 2005 International Symposium on Distributed Objects and Applications.
2004 Program Committee Member ACM/IFIP/USENIX 5th International Middleware Conference.


Invited Talks

2005Colloquium speaker, The PEPT Service-Oriented Architecture, Brigham Young University.
2005Industry forum speaker, Is Worse Worse of Better?, University of Utah.
2005Colloquium speaker, The PEPT Service-Oriented Architecture, University of Utah.
2001JavaOne speaker, OMG Portable Interceptors, San Francisco.
2001JavaOne speaker, New CORBA Features in J2SE 1.4, San Francisco.
1998Panel Member, The Future of Lisp, 1998 Lisp in the Mainstream Conference.
1993Colloquium speaker, Compiling Distributed C++, University of Texas at Austin
1987Panel Member, Forth Engines, 1987 Rochester Forth Conference.
1986Chairman, Working group on AI, 1986 Rochester Forth Conference.


Patents


Method and Apparatus for RMI-IIOP Implementation with Java Serialization. Patent Pending 11/117,267, April 28, 2005 (with Ram Jayaraman and Ken Cavanaugh).

Method and Apparatus for Determining Data Encoding Format in RMI-IIOP Messages. Patent Pending 11/117,023, April 28, 2005 (with Ram Jayaraman and Ken Cavanaugh).

Method and Apparatus to Isolate Change in Remoting System Servers. Patent Pending 10/954,861, September 30, 2004.

Method and Apparatus to Isolate Change in Remoting System Clients. Patent Pending 10/863,094, June 2004.

Systems and Methods Employing a PEPt Architecture for RPC. Patent Pending 10/677,434, October 2003.

Dissertation Abstract

Distributed C++

Ph.D. Dissertation, University of Utah, 1994.


Distributed C++ (DC++) is a language in which to write parallel applications on loosely coupled distributed systems. Its key idea is to extend the C++ class into three categories: vanilla C++ classes, classes which act as communication and synchronization gateways between abstract processors, and classes whose instances may be passed by value between abstract processors via gateways. Value classes are deep copied and preserve structure sharing. DC++ marshals arguments when value classes are used in remote method invocations. An important result of making the three categories syntactically identical is that member function invocation of gateways looks identical to vanilla member function invocation. Therefore, gateways may be redistributed without program modification. Concurrency is achieved by creating multiple abstract processors and starting multiple threads of control operating within these abstract processors. DC++ transparently supports multitasking so that the number of actual processors may be changed without program modification. DC++ provides support for concurrency (threads), communication and synchronization (explicit ports, remote method invocation, and futures), and locality (domains). DC++ is designed to run on the Mayfly Distributed Processing System. It also runs on homogeneous workstations (HP Series 9000, Model 300/400/800/700) using BSD sockets or Mach ports for communication.