Interested in research? Please read this before you write.
I'm an assistant professor at the University of Washington Information School, a member of the dub group for HCI and design, and director of the USE research group. I'm fascinated by people's struggle with our increasingly software-based world; I focus this curiosity on inventing ways for people understand software behavior, whether they are debugging code, learning to program, or simply struggling to use a software system. My interests are in human-computer interaction, computing education, and software engineering.
Below are most of the projects I've worked on in my career.
show all
there's nothing left to show
LemonAid helps you find software help in a single click. Querying by user interface selection is better than querying with text because people with similar problems choose similar things.
help
invention
FeedLack finds scenarios where web applications ignore user input.
usability
bugs
invention
How representative are beta testers? Finds that Windows beta testing populations are not representative of post-release populations, with respect to crashes, hangs, and blue screens. Shows how to use k-means clustering to correct for the bias.
bugs
discovery
Post-deployment usability survey. Finds that usability professionals are currently not playing a substantial role after software is deployed, but when they do they find their interactions with support teams quite valuable.
discovery
usability
What constrains software change? Finds that conflicts between users' heterogeneous use of information and inflexible assumptions in a team's software architecture make change infeasble.
bugs
usability
discovery
Cleanroom finds a wide range of defects in HTML/CSS/JavaScript applications by looking for identifiers that only appear once. See
the demo!
bugs
invention
programming
best paper
Is the openness in open bug reporting important? Finds that reports from non-developers were support requests, redundant reports, or niche feature requests and that the value of open bug reporting is in recruiting talented developers, and less in extracting value from the masses.
programming
bugs
best paper
The Whyline for Java lets you point to program output and ask a 'why' question, then get an explanation that pinpoints the answer.
bugs
invention
best paper
Crystal. Ever wonder why your software is doing something strange? Crystal is an automatic help tool that lets you click on confusing output and ask 'why' questions, getting answers in terms of user interface controls that caused the behavior.
help
invention
Barista is a toolkit for creating flexible structured code editors. The key different between Barista editors and prior structured editors is that they use standard text editing interaction techniques, but a structured visual representation.
programming
invention
Jasper is a workspace for gathering task-relevant code during software maintenance tasks. Its motivated by findings from one of my studies that showed that most of what developers do during such tasks is navigate between relevant code.
programming
invention
Slate is a spreadsheet language with a novel labeling system. Users give labels to data and the data is propagated through formulas, causing unexpected combinations of labels in the presence of errors.
programming
bugs
invention
Citrus is a novel programming language that supports one way constraints, events, value restrictions, and object ownership. I used Citrus to implement the Barista toolkit above and lots of other prototype user interfaces.
programming
invention
The Whyline for Alice is a debugging tool that allows developers to ask
why and
why not questions about their program's
output. The prototype that I wrote for
Alice helped developers solve problems 8 times faster than normal tools.
bugs
invention