Selected Publications and Other Materials
- "Pluggable Reflection: Decoupling Meta-Interface and Implementation."
Co-authored with David Lorenz, observes that reflection
remains a second-class citizen in current programming models, where
it's assumed to be imperative and tightly bound to its implementation.
In contrast, most object-oriented APIs allow interfaces to vary
independently of their implementations. Components take this separation
a step further by describing unforeseeable attributes---the key
to pluggable third-party components. This paper describes how reflection
can benefit from a similar evolutionary path. Presented at ICSE '03.
- "A Perturbation-Free Replay Platform for Cross-Optimized
Multithreaded Applications." Co-authored with members of the
Jalapeño and DejaVu teams at IBM Research, describes how cross-optimization,
symmetric instrumentation, and remote reflection work
together to help you debug non-deterministic multithreaded code.
Presented at IPDPS '01.
- "Designing Components versus Objects: A Transformational Approach."
Co-authored with David Lorenz, explores the component design
space as an outgrowth of the object-oriented design space as constrained
by the JavaBean component model. Develops a taxonomy for the component
design space and contrasts it with a corresponding taxonomy for
objects. Presented at ICSE '01.
- "Automated Architectural Transformation:
Objects to Components" (192 KB PDF). A precursor to
the ICSE '01
paper focusing on automated transformation of object designs to
JavaBeans-based component counterparts. Published as IBM Research
Research Report RC 21773 (98045).
- "A Debate on Language and Tool Support for Design Patterns."
shoot-out between Craig
Harrison, and myself over the roles and relative merits of patterns,
languages, and tools.
- "Execution Patterns in Object-Oriented Visualization."
COOTS '98 paper describing new visualization techniques for object-oriented
Experience with Design Patterns." ICSE-18 paper,
co-authored with a bunch of other pattern people, relating our experiences
using design patterns in the field.
Code Generation from Design Patterns" (227 KB PDF).
Draft version of paper that appears in IBM Systems Journal, Vol. 35, No. 2. An
is also available.
- "Modeling Object-Oriented Program Execution." ECOOP '94 paper
mechanism for storing execution information.
- "Visualizing the Behavior of Object-Oriented Systems."
Original OOPSLA '93 paper on what is now called Jinsight, a framework for
visualizing the execution of object-oriented software.
Patterns: Abstraction and Reuse of Object-Oriented Design" (272
KB PostScript, 67 KB compressed). Original ECOOP '93
paper on design patterns.
- "An Object-Oriented Architecture for Constraint-Based Graphical
Editing." In Proceedings of the Third Eurographics Workshop on
Object-Oriented Graphics, pages 1–22, Champéry, Switzerland,
October 1992. Also available as IBM Research Division Technical
Report RC 18524 (79392). Presents an object-oriented architecture
that integrates Unidraw, a graphical editing framework, and QOCA,
a powerful constraint solving toolkit. Referred to in Design
- "A Unidraw-based User Interface Builder." The definitive paper
on ibuild, which pioneered the Generation Gap pattern described
Hatching. Appears in ACM UIST Proceedings, 1991:201-210.
- "Unidraw: A Framework for Building Domain-Specific Graphical
Editors" (ACM TOIS
8(3):237-268 (1990)). Second only to my thesis as a definitive guide to Unidraw. An early
version of this paper appears in ACM UIST Proceedings,
1989:158-167 (136 KB PDF).
- "Composing User Interfaces with InterViews." A good overview
of InterViews 2.6alas, not the definitive version. Appears
in IEEE Computer, 22(2):8-22 (1989).
- "InterViews: A C++ Graphical Interface
Toolkit" (103 KB PDF). An early InterViews paper, much
more "what" than "how" or "why." Published as Technical Report CSL-TR-88-358,
Stanford University Computer Systems Laboratory, July 1988.
- "Applying Object-Oriented Design to Structured Graphics." My
first technical publication, I believe. Appears in USENIX C++
Conference Proceedings, 1988:81-94.
à la Java," unpublished.
à la Java, Part II," Java
Report, September 2001.
à la Java, Part I," Java
Report, June 2001.
à la Java," Java
Report, March 2001. Inaugural column.
Program Development," Dr.
Dobb's Special Report, December 2000.
Compound Without a Name," Java
Report, November 2000.
- "McConnell Complete," Dr. Dobb's
Journal, October 2000.
Code or Not to Code, Part II," C++
Report, June 2000.
Code or Not to Code, Part I," C++
Report, March 2000.
in Frameworks," C++ Report,
- "Diversify," in "Wisdom of the
C++ Experts," C++ Report, November/December 1999.
Composite," C++ Report,
C++ Report, June 1999.
"Compounding Command," C++ Report, April 1999.
"Pluggable Factory, Part II," C++ Report, February 1999.
- "Minimalism and Immersion,"
in "Wisdom of the C++ Experts," C++ Report, November/December 1998.
The version I had hoped would get published.
"Pluggable Factory, Part I," C++ Report, November/December 1998.
"Composite Design Patterns (They Aren't What You Think)," C++ Report, June 1998.
"Notation, Notation, Notation," C++ Report, April 1998.
"Subject-Oriented Design," C++ Report, February 1998.
- Observer = Typed Message," C++ Report, November/December 1997.
C++ Report, September 1997.
Events," C++ Report, June 1997.
The Top Ten Misconceptions," Object Magazine, March
Laundering," C++ Report, February 1997.
Gap," C++ Report, November/December 1996.
Trouble with Observer," C++ Report, September 1996.
- "To Kill
a Singleton," C++ Report, June 1996.
- "Protection, Part II: Membership Has Its Privileges," C++ Report, April 1996.
Part I: The Hollywood Principle," C++ Report, February 1996.
Habits of Successful Pattern Writers," C++ Report, November/December 1995.
- "Visiting Rights," C++ Report, September 1995.
- "Orphanage, Adoption, and Surrogates," C++ Report, June 1995.
Hatching: Perspectives from the Gang of Four". C++ Report, March/April 1995. Inaugural
Introduction to Design Patterns" (426 KB PDF). 2-up
slides from the ubiquitous tutorial, presented dozens of times in
forums like OOPSLA, ECOOP, C++ World, ObjectWorld, USENIX C++/COOTS,
various IBM conferences, ICSE, PLDIyou name it.
with Patterns" (424 KB PDF). 2-up slides from another
arguably overexposed tutorial. This one focuses on showing you how
(not) to apply design patterns. Covers a slight superset of the
material in Chapter 2 of Pattern Hatching.
The Top Ten Misconceptions" (297 KB PDF). A talking-head
version of the section in Pattern
Hatching by the same name. Describes and dispels 10 recurring
myths about patterns.