Selected Publications and Other Materials
Books · Papers · Articles · Presentations · Miscellaneous
Books
Papers
- "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."
POPL '00
shoot-out between Craig
Chambers, Bill
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
programs.
- "Industrial
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.
- "Automatic
Code Generation from Design Patterns" (227 KB PDF).
Draft version of paper that appears in IBM Systems Journal, Vol. 35, No. 2. An
HTML version
is also available.
- "Modeling Object-Oriented Program Execution." ECOOP '94 paper
on Jinsight's
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.
- "Design
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
Patterns.
- "A Unidraw-based User Interface Builder." The definitive paper
on ibuild, which pioneered the Generation Gap pattern described
in Pattern
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.
Articles
- "Bridge
à la Java," unpublished.
- "Composite
à la Java, Part II," Java
Report, September 2001.
- "Composite
à la Java, Part I," Java
Report, June 2001.
- "GoF
à la Java," Java
Report, March 2001. Inaugural column.
- "High-Level
Program Development," Dr.
Dobb's Special Report, December 2000.
- "The
Compound Without a Name," Java
Report, November 2000.
- "McConnell Complete," Dr. Dobb's
Journal, October 2000.
- "To
Code or Not to Code, Part II," C++
Report, June 2000.
- "To
Code or Not to Code, Part I," C++
Report, March 2000.
- "Visitor
in Frameworks," C++ Report,
November/December 1999.
- "Diversify," in "Wisdom of the
C++ Experts," C++ Report, November/December 1999.
- "Tooled
Composite," C++ Report,
September 1999.
- "XP,"
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.
- "Multicast
- Observer = Typed Message," C++ Report, November/December 1997.
- "Multicast,"
C++ Report, September 1997.
- "Latter-Day
Events," C++ Report, June 1997.
- "Patterns:
The Top Ten Misconceptions," Object Magazine, March
1997.
- "Type
Laundering," C++ Report, February 1997.
- "Generation
Gap," C++ Report, November/December 1996.
- "The
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.
- "Protection,
Part I: The Hollywood Principle," C++ Report, February 1996.
- "Seven
Habits of Successful Pattern Writers," C++ Report, November/December 1995.
- "Visiting Rights," C++ Report, September 1995.
- "Orphanage, Adoption, and Surrogates," C++ Report, June 1995.
- "Pattern
Hatching: Perspectives from the Gang of Four". C++ Report, March/April 1995. Inaugural
column.
Presentations
- "An
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.
- "Designing
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.
- "Patterns:
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.
Miscellaneous
|