Current Projects
I tell my students to create an elevator pitch for every project they work on. The point isn’t to be ready for a chance encounter with Bill or Sergey; it’s to make sure they know why they’re doing what they’re doing. In the spirit of full disclosure, here are pitches for the things I’m working on myself.
Background
The real “grand challenge” in scientific computing is that most scientists don’t know how to develop software efficiently, have no idea how reliable their programs are, and can’t reproduce their results. This isn’t surprising: after a generic first-year course in programming, they are expected to pick up everything else on their own, which is about as fair as showing someone how to differentiate polynomials and then asking them to reinvent tensor calculus.
Most new graduates of university computer science programs aren’t any better at building real applications. The reason is that while undergraduate courses teach people the syntax of programming languages and what computers can do, few if any teach the mechanics of software development. Some students pick this up on their own, but most do not.
My research interests therefore grow out of the following question:
What software development tools and practices can and should be taught to novices once they have mastered the basics of programming, and how best can this be done?
Computers are as important to modern science as telescopes and test tubes, but few scientists have ever been taught how to use them effectively. The goal of the Software Carpentry course is to give them the skills they need to build and share software they can trust without superhuman effort. Unlike most other programming courses for scientists, Software Carpentry focuses on software development, rather than numerical methods or high-performance computing.
Status:
- The current course gets over 14,000 visits per month, but needs an overhaul—lots of small bug fixes have queued up over the last year.
- An alpha version of examples in MATLAB (to go with the existing Python examples) is ready for editing, and I hope to run the course as a three-week boot camp in the summer of 2009. As part of that, I want to shift the focus to preparing scientists to do computer-supported collaborative science.
- We finished the largest-ever survey of how scientists use computers in December 2008, and will present preliminary results at SE-CSE’09 in May. We’re currently designing a follow-up email survey to ask a sample of initial respondents some more specific questions.
DrProject is a web-based project management portal that integrates revision control, issue tracking, mailing lists, a wiki, and other tools that software development teams need. Unlike other project portals, DrProject was designed to be simple enough for undergraduate students to master in less than an hour.
Status:
- The existing system is being used by two dozen groups around the world.
- The next major release will be based on Django, and should be ready by July 2009.
- Jordi Cabot and I have submitted a survey of widely-used software project management portals to IEEE Software.
- Eran Henig, Bill Konrad, and Florian Shkurti will be working on the project full-time May-August 2009. I’m hoping to get at least one Google Summer of Code student as well.

My first three M.Sc. students finished their theses in January 2009:
- Samira Ashtiani Abdi: Recovering Related Artifacts in Software Projects’ History: a Comparison of Information Retrieval Based Methods
- Jeremy Handcock: How Developers Use an Awareness Tool: Patterns and Usage Scenarios
- Carolyn MacLeod: Patterns in Novice Design Analysis Using Spin
My current students are still settling on projects, but in broad terms:
- Aran Donohue is looking at programmers’ personality types.
- Alecia Fowler wants to find ways of making online maps more accessible to people with visual disabilities.
- Alicia Grubb is investigating what scientists actually mean by “reproducible research”.
- Zachary Kincaid is studying dataflow analysis for concurrent programs with Prof. Azadeh Farzan.
- Jason Montojo wants to understand how novice programmers find their way around large code bases.
- Rory Tulk hopes to build a reverse test oracle and see what impact it has on students’ working practices.

I’m currently one of the steward for DemoCamp, an open mike night for tech types, designers, and entrepreneurs. Participants can show off software they have been working on, or give a lightning presentation on any topic likely to inspire, inform, or amuse the audience. It’s held every month or two, and you’d be welcome to join us…
Fiction
Having published two children’s books, I’m now trying to sell a novel-length fantasy called Beneath Coriandel that explores how fate and chance tie people’s lives together. A young man descends into the crypts beneath the city to slay a monster; a woman plots to steal her niece’s youth; a talking horse foils a robbery, a ghost remembers how it earned its name, and a magician wonders why she can’t get a particular nursery rhyme out of her head. Swordplay, betrayal, forbidden love, a philosophically inclined pair of boots—Beneath Coriandel has them all, and should appeal to anyone who liked The Innkeeper’s Song, The Curse of Chalion, or The Lies of Locke Lamora.
Status:
- The novel has been finished for a couple of years, and I’m trying to find a publisher.
- I have a complete first draft of another novel for a teen audience set in the same world; it needs substantial editing before I can think about sending it off.
- I have written 30,000 words of a third book, but it has been on hold since my daughter was born.

