I have spent the last several years working with Ralph Johnson. It is not coincidental that his interests are similar to mine. My research interests are in the area of object-oriented programming and design. In particular, I am interested in refactoring object-oriented systems, especially how it pertains to the evolution of frameworks, and the application of patterns. Most of my work has been done in Smalltalk.
Bill Opdyke's thesis discussed the notion of refactoring and presented several refactorings that he had examined in C++. A majority of my work has been working together with John Brant to develop the Refactoring Browser. This tool allows you to perform refactorings on production-level Smalltalk code quickly and safely. We are always looking for suggestions on ways to improve it. Another component of this package is Smalllint. Smalllint is a system to detect common bugs and style errors in Smalltalk programs.
Designing frameworks is difficult. In fact, I believe that they are so difficult, that they can only be designed by building examples and generalizing the example code into the framework code. Brian Foote is one of the pioneers of this belief. Ralph and I have presented a course on developing frameworks as various conferences. We have written a pattern language to describe this process.
I was one of the original group members who reviewed the Gang of Four book as early as 1993. I am amazed at how quickly the idea has become popular. I was the conference chair of PLoP '97 (and survived). I continue to look for patterns of refactoring code.
Evolving Frameworks: A Pattern-Language for Developing Object-Oriented Frameworks. presented at PLoP '96. To be published in PLoPD3. Here's an HTML version.
A Refactoring Tool for Smalltalk. Published in Theory and Practice of Object Systems special issue on software reengineering.
Why every Smalltalker Should use the Refactoring Browser. Published in the Smalltalk Report.
The Design of a Refactoring Tool. Published in the Proceedings of ICAST '96.
Wrappers to the Rescue. Published in the Proceedings of ECOOP '98.
Practical Analysis for Refactoring. PhD thesis, University of Illinois at Urbana Champaign, 1999.postscript
I gave Ralph's framework tutorial at Smalltalk Solution '98.
When I'm not doing research, I am a smalltalk consultant. My past jobs have included work with Hewitt and Associates, Abbot Pharmaceuticals, Sprint, and Lucent Technologies. I am available for mentoring, design, refactoring, and development.
Along with my paying jobs, I also develop and maintain a couple of freely available software packages. I am one of the coauthors, along with John Brant, of the Refactoring Browser. Justin Graver and his students developed T-Gen, the smalltalk parser generator. They are no longer supporting it, so I have adopted it, since it is such a great tool.
I
am married to Denise. She will be a veterinarian
in 1999, if all goes as planned. That's her picture on the left. She
is the cover girl for the U of I College of Veterinary Medicine
Admission
Guide. We will be having our first child
this summer.
Technically, we're not allowed to have pets in our apartment, but we have a couple of Chinese Water Dragons, Puff and Zoe, and a savannah monitor named, Mr. Peterson, and a uromastyx named Art (you call that Art?). They live in enclosures, so we classify them as furniture.
If I have a hobby, it would have to be collecting and playing board games, and in particular, German board games. I also enjoy backpacking and many other outdoor activities.
I've always been interested in weather. I've even taken several
meteorology courses, but it remains a hobby at best. Here are some of
the better weather sites.
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v0.9.1 (GNU/Linux) Comment: For info see http://www.gnupg.org mQGiBDaaz2YRBAC4fSF8Hqd8C9am2648huVQIMWyCRlAtPhqdw76dvwySWDlWjB1 46JpUeqN2Qv/pDSevHkf/IELgubkEhHeWjHAgo7jnEfobQUQX7f4GHXelg0k2bYk or8vRE5lTWSZ4GszQrKprivIjdrlGZuUpHz4VzTbR9Sm2nGYyxC687hAawCgpqfq ZWggNnXhcFFeuKDxc3fo1HcEAJI1BRBEp/lnu+WWmkWVTa/jnViKFym86byPYC3X hMkvQbfpzprxRQ1EYDDIzRmaRj8ubCY16pYbyB/hwZ8sSTjqExWjfpKlOqQI0YSg 5T2YtSiMAcb1o5n7CQw+1Opxb/IgcDV9J9eXgpAPQaqwXP+uSGz8P6kUy1cR4hdU 3RUhA/9+cA/sw/P218peL+LXVMmc86azWexe5Nri4RSR+i3szPjjePxD4QSp2atn C8/VgsHT/5qOtugny5T+cMsnxWS5zfl5e5OTXEwMa25g7FfVNcouAPyh7tprPGQA jDPUG9weTGbIvG9tm5nH/d03juVVnthawaF4sUUkAf2AVTUn77QlRG9uYWxkIFJv YmVydHMgPGRyb2JlcnRzQGNzLnVpdWMuZWR1PohXBBMRAgAXBQI2ms9mAwsEAwUV AwIGAQMWAgECF4AACgkQF2LfbuYjmC9eAgCggfp4vYA2ieicekfS4izw/xwEE3IA n2gHJDFPvdeoYjsvwGdSFVQ06qHDiD8DBRA2m3eWU6LZ5PargjwRAmZKAJwPKrjW IZVY3OYzbTcAPk0V9mFueACfZWX/gxwVT1r8iuIQPjcd4ba8tbm5AQ0ENprPkxAE AOTx/NZ9m+RhwJYWYsIEUobVR9ccS1AjabAfxlUJnWTuZL2j1+hINWCdSJGgAGms xKSGnI6FCPYocXR+QT/9rFB557Jarh/0kgMT9RFpBY8at+Phv/V+yNbKY2oNZNM/ +g6kfYPGuGWuhIoDeZVoNAFpOX35PTMo1GxXippkcmzTAAMGBADFr3+QGzI04MUL W/bFWF3NWHzP0dCLTXtS5xusLjim/ZBFA2k/gu4SbVdmwRgj0UGK1SEL791+7I8T vYTZQ9ws/H0/Bp1xhxPVdzFQ5JHvS8qmAgoxeA1mTe+BpFg6oVTMoUU+nAL4eL3t UxHChSUD1Fk9Hrws89MBG4ewSQBmVIhGBBgRAgAGBQI2ms+TAAoJEBdi327mI5gv SfEAnjMXDFc3Jt/B3+2mO4hLSc2oTNP+AJoDeLR4uMEKdq8lcjbsMRPriJBqVA== =GeMb -----END PGP PUBLIC KEY BLOCK-----