[About Me | Publications |
Research]
I am currently a post-doc in the employ of Martin Odersky's
LAMP group of Ecole Polytechnique Federale
Lausanne (EPFL) in Lausanne Switzerland. My work
involves building an Eclipse plug-in for the
Scala programming
language. I received my computer science PhD in 2005 from
the University of Utah.
My dissertation describes
a language called SuperGlue,
which is a simple language for assembling components
together through object-oriented signals. I have also
designed the Jiazzi language,
which is a module system for Java. I am a rabid
Seattle-ite and received my undergraduate computer
science degree in 1998 from the University of Washington.
My undergraduate thesis was on Ghost
Machine, which was an early Java virtual machine for
first-generation PalmOS devices.
In my spare time, I practice Chinese and have spent a
semester in 2002 studying at Peking University in Beijing
China. Recently I have been spending a lot of time
not learning French. I am also into trekking,
biking, roller blading, and avoiding rain often enough to
perform any of these activities.
Conferences
SuperGlue: Component
Programming with Object-oriented Signals. Sean
McDirmid and Wilson Hsieh. To appear at ECOOP 2006.
Splice: Aspects that
Analyze Programs. Sean McDirmid and Wilson Hsieh.
In the proceedings of GPCE 2004.
Aspect-oriented
Programming with Jiazzi. Sean McDirmid and Wilson
Hsieh. In the proceedings of AOSD 2003.
Using Mixins to Build
Flexible Widgets. Richard Cardone, Adam Brown, Sean
McDirmid, and Calvin Lin. In the proceedings of AOSD 2002.
Jiazzi: New-age
Components for Old-fashioned Java. Sean McDirmid,
Matthew Flatt, and Wilson Hsieh. In the proceedings of
OOPSLA 2001.
Workshops and Magazines
Mixing COP and OOP.
Sean McDirmid, Matthew Flatt, and Wilson Hsieh. In the
Workshop on Languages Mechanisms for Programming Software
Components @ OOPSLA 2001.
Ghost Machine. Sean
McDirmid. In Handheld Systems, September/October 1998.
Distributed Virtual Machines. Emin Gun Sirer, Robert
Grimm, Brian Bershad, Authur Gregory, and Sean McDirmid. In
European SIGOPS 1998.
Unpublished
Turing Completeness
Considered Harmful: Component Programming with a Simple
Language. Sean McDirmid. Submitted for publication
in 2006.
A Framework for
Modular Linking in OO Languages. Sean McDirmid,
Wilson Hsieh, and Matthew Flatt. Submitted for publication
in 2006.
SuperGlue: Component
Programming with Object-oriented Signals. Sean
McDirmid. Dissertation, completed and defended in 2005.
SuperGlue:
an object-oriented language for gluing together
components with signals.
Abstract: Components
that process state make programs more usable with their
ability to adapt to changing program inputs.
Unfortunately, using such state-processing components
often requires encoding a lot of complicated
event-handling details in component glue code. This
dissertation describes how state-processing components
can be more easily glued together through declarative
state abstractions known as signals. Signals hide
event-handling details from glue-code programmers by
standardizing the protocol that is used to communicate
changes in state. We combine signals with object-oriented
abstractions in our new language called SuperGlue.
SuperGlue's object-oriented abstractions are used to
concisely deal with state that is organized into
graph-like structures such as user-interface tables or
compiler parse trees. By combining objects and signals,
programs that use state-processing components can be
expressed with less code when compared to other
languages. For example, we have found that writing
user-interface programs in SuperGlue can involve writing
about half as much code as writing the same programs in
Java.
Splice: a meta-programming language for expressing
custom analyses.
Abstract: Splice is a system
for writing aspects that perform static program analyses
to direct program modifications. The power of an
inter-procedural data-flow analysis enables an aspect to
examine the flow of data around a program execution point
when it determines what code to add or change at that
point. For example, an aspect can change the target set
of an iteration based on how elements are skipped during
the iteration. Splice aspects are written in a rule-based
logic programming language with features that help aspect
programmers express analyses. We show how a prototype of
Splice is used to write two useful aspects in the areas
of domain-specific optimization and synchronization.
Jiazzi: a module
linking system for Java.
Abstract: Jiazzi is a
system that enables the construction of large-scale
binary modules in Java, which are known as units. Units
in Jiazzi can be thought of as generalizations of Java
packages with added support for external linking and
separate compilation. Units are practical because they
are constructed out of standard Java source code. Jiazzi
requires neither extensions to the Java language nor
special conventions for writing Java source code that
will go inside a unit. Our components are expressive
because Jiazzi supports cyclic unit linking and mixins,
which are used together in an
open class pattern
that enables the modular addition of new features to
existing classes.
Ghost: a
Java virtual machine for Palm OS.
Abstract:
Ghost enabled Java AWT applications to run on early Palm
OS devices before commercial Java virtual machines were
available on these platforms. A proxy is used to
pre-process Java class files so they can fit and execute
efficiently on devices with restricted hardware
resources.
Kimera:
a distributed virtual machine
architecture.
Abstract: In this project, I
wrote a Java bytecode verifier that was designed to be
used in a distributed Java virtual machine architecture.
We used this technology to evaluate Java bytecode
verification technology from Sun and Microsoft, where we
found and reported on several bugs in their technology.