[About Me | Publications | Research]
alternatetext

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.

Publications

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.

Research

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.