Biographical Information
I'm a software developer tools writer; I create the programs that help other people write computer programs. I'm particularly interested in refactoring tools -- tools for turning programs inside-out so that changes can be added easier.I'm currently at Google working on our JavaScript infrastructure for Google Docs. I really love working on tools when all our customers are within walking distance.
Until July 2007, I was part of the the Developer Tools group at Apple. My last (and favorite) project was Xcode 3.0's refactoring feature for Objective C programs. I championed refactoring support for Xcode, and was responsible for the backend -- parsing and the transformations. Also at Apple, I helped maintain Apple's version of the gcc compiler and maintained Apple's performance analysis tools. I created two of those tools: Thread Viewer (a tool for visualizing a process's activity) and Spin Control (which automatically profiles applications that appear unresponsive in hopes of understanding intermittent slowdowns). In between these projects, I worked on prebinding utilities for speeding application launches in Mac OS X. (If you've seen your Mac declare "optimizing system performance" after an install, that's my fault. I always hoped I would have an impact on the world, I just had hoped it would be positive.) I also helped get the Rosetta PowerPC emulation environment running on Apple's Intel-based computers.
Before Apple, I worked for Intrinsa in Mountain View, California. Intrinsa created tools for finding memory smasher bugs in programs. Intrinsa was purchased by Microsoft soon after I hired on, and most of the technical folk are now part of the Programmer Productivity Research Center at Microsoft Research.
From 1996 to 1999, I was a Research Staff Member at IBM Research's Watson Research Center in Hawthorne, New York. At IBM, I created programming tools based on the IBM VisualAge C++ 4.0 "Montana" compiler and development environment, creating the Find Uses syntactic search facility, evangelizing and supporting APIs for the compiler's innards, and creating research tools for restructuring C++ programs.
I defended my Ph.D. dissertation at U.C. San Diego in December, 1995. My dissertation, "Supporting the Restructuring of Data Abstractions through Manipulation of a Program Visualization" was completed under the guidance of Dr. William G. Griswold. I also was a member of his Software Evolution Laboratory.
My research is described on a separate page.
I received an M.S. in Computer Science from the University of California,San Diego in 1991 and a B.A. in Computer Science from the University of California, Berkeley in 1989. While at Berkeley, I worked for Berkeley Softworks, later known as Geoworks. My resume (in PDF) gives more details.
As far as personal details, I can modestly quote this review of a talk I gave at Apple's developer conference in 2001:
"Den forsta demonstrationen, vilken holls av Robert Bowdidge (som liknade Edward Norton en hel del), var mycket intressant och gav en bra bild av nar tradar bor anvandas."
Sadly, I have no clue what they're saying, but isn't it amazing how things sound more flattering in languages you don't understand?
So what did I do in graduate school?
For my dissertation, I discovered the benefits and drawbacks of restructuring computer programs through representations other than the source code. Specifically, I created one visualization, called the star diagram, that helps a program encapsulate data structures into a new abstract data type.The star diagram work has taken on a life of its own, thanks to Bill Griswold's persistence. During some user studies conducted for my dissertation, we noticed that people sometimes used the star diagram for planning their actions -- sometimes restructuring a program merely to hold a design idea. Bill's other students have tried to leverage this idea by creating a star diagram tool that is primarily for understanding a program and planning restructuring actions.
Morison Chen implemented a version for C. Walter Korman's Elbereth system (publically available) created star diagrams for Java. Jim Hayes expanded it to work on programs coded in multiple languages.
The star diagram was also great because we were working on refactoring tools before they were cool. I can safely say that Bill and I created the coolest Scheme refactoring tool known to man. I've spent a good deal of the intervening years hoping I'd be able to use such tool in my daily work. There's a more detailed description of my research and publications available on a separate page.
"Daddy, what did you do at the dawn of the Internet?"
I used to maintain Railroad-related Internet Resources, the second railroad-related site on the Web. My goal was to create a great catalog of interesting links, and give enough commentary and structure to help folks learn where to look for interesting content. The pages were described by one Web-reviewer as follows:
It's about as austere as a line of tracks through the Siberian tundra in winter, but Webmaster Robert Bowdidge sees to it that this hyper-index of WWW railroad resources delivers a payload.
(I think that's a compliment.)
I spent an awful lot of time procrastinating about my dissertation as I added to that web site. Once I graduated and moved to the East Coast, the (then) miserable speed of cross-country internet connections made updating the pages a chore. The pages got further and further out of date til I finally pulled the plug on 'em.

Out of date photo, First West Coast Computer Faire, 1977. (July 1977 issue of Byte)