Demo Data from VLDB 2026 / reviewers in the wild / expert
Joel Brandt
dblp:41/6065 · also Joel R. Brandt
· DBLP profile ↗
19ranked-venue papers
2as first author
0since 2021 · last 2020
0000-0002-1809-3992ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Human-computer interaction and ubiquitous computing · 19 · 2 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Human-computer interaction and pervasive computing
13 papers |
User interface design and tools · 62% Personal fabrication and tangible interfaces · 15% Interaction techniques and input · 13% | |
| Software engineering, system software, and programming languages
9 papers |
Software maintenance and evolution · 24% Programming languages and type systems · 20% Empirical software engineering · 18% | |
| Computer graphics and multimedia
1 paper |
Image and video processing · 77% Multimedia analysis and retrieval · 23% |
Topics — the 21 heaviest of 30, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Personal fabrication and tangible interfaces
computational design tools |
0.6 | 2 | 2018 | Extending Manual Drawing Practices with Artist-Centric Programming Tools · CHI 2018 Supporting Expressive Procedural Art Creation through Direct Manipulation · CHI 2017 |
User interface design and tools
programming environments |
0.5 | 2 | 2019 | Implementing Multi-Touch Gestures with Touch Groups and Cross Events · CHI 2019 Codelets: linking interactive documentation and example code in the editor · CHI 2012 |
Image and video processing
video segmentation |
0.4 | 1 | 2020 | Temporal Segmentation of Creative Live Streams · CHI 2020 |
Programming languages and type systems › language design
programming abstractions |
0.4 | 1 | 2019 | Implementing Multi-Touch Gestures with Touch Groups and Cross Events · CHI 2019 |
User interface design and tools › user interface programming
state machine-based user interface programming |
0.3 | 2 | 2014 | InterState: a language and environment for expressing interface behavior · UIST 2014 ConstraintJS: programming interactive behaviors for the web by integrating constraints and states · UIST 2012 |
User interface design and tools
user interface programming |
0.3 | 2 | 2014 | InterState: a language and environment for expressing interface behavior · UIST 2014 ConstraintJS: programming interactive behaviors for the web by integrating constraints and states · UIST 2012 |
Software maintenance and evolution
code reuse |
0.3 | 2 | 2012 | SnipMatch: using source code context to enhance snippet retrieval and parameterization · UIST 2012 Example-centric programming: integrating web search into the development environment · CHI 2010 |
Interaction techniques and input
pen input |
0.2 | 2 | 2020 | Supporting Visual Artists in Programming through Direct Inspection and Control of Program Execution · CHI 2020 Extending Manual Drawing Practices with Artist-Centric Programming Tools · CHI 2018 |
User interface design and tools › interaction design
undo mechanisms |
0.2 | 1 | 2015 | Selective Undo Support for Painting Applications · CHI 2015 |
User interface design and tools › programming environments
live programming |
0.2 | 1 | 2014 | InterState: a language and environment for expressing interface behavior · UIST 2014 |
Program analysis
dynamic analysis |
0.2 | 1 | 2014 | Addressing misconceptions about code with always-on programming visualizations · CHI 2014 |
Empirical software engineering
mining software repositories |
0.2 | 1 | 2014 | Emergent, crowd-scale programming practice in the IDE · CHI 2014 |
Collaborative and social computing
crowdsourcing |
0.2 | 2 | 2014 | Crowds in two seconds: enabling realtime crowd-powered interfaces · UIST 2011 Combining crowdsourcing and learning to improve engagement and performance · CHI 2014 |
Software maintenance and evolution › software documentation
code examples |
0.1 | 1 | 2012 | Codelets: linking interactive documentation and example code in the editor · CHI 2012 |
Multimedia analysis and retrieval › multimedia browsing
video browsing |
0.1 | 1 | 2020 | Temporal Segmentation of Creative Live Streams · CHI 2020 |
User interface design and tools › interactive design tools
drawing tools |
0.1 | 1 | 2018 | Extending Manual Drawing Practices with Artist-Centric Programming Tools · CHI 2018 |
Empirical software engineering
developer studies |
0.1 | 1 | 2009 | Two studies of opportunistic programming: interleaving web foraging, learning, and writing code · CHI 2009 |
Interaction techniques and input
direct manipulation |
0.1 | 1 | 2017 | Supporting Expressive Procedural Art Creation through Direct Manipulation · CHI 2017 |
Software maintenance and evolution
software documentation |
0.1 | 1 | 2016 | Using Runtime Traces to Improve Documentation and Unit Test Authoring for Dynamic Languages · CHI 2016 |
Programming languages and type systems › dynamic languages
javascript |
0.1 | 1 | 2014 | Addressing misconceptions about code with always-on programming visualizations · CHI 2014 |
Debugging and program repair
fault localization |
0.0 | 1 | 2010 | What would other programmers do: suggesting solutions to error messages · CHI 2010 |
Methods — techniques the papers use, named apart from their topics
user evaluation · 1.1formative study · 0.8interview study · 0.5crowdsourcing · 0.5software usage log analysis · 0.4audio transcript analysis · 0.4deep learning · 0.3user study · 0.3runtime trace analysis · 0.2script model · 0.2informal user study · 0.2laboratory study · 0.2statistical analysis · 0.2lab study · 0.2interactive tutorials · 0.2deployment study · 0.2comparative laboratory study · 0.1usage log analysis · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Temporal Segmentation of Creative Live StreamsabstractMany artists broadcast their creative process through live streaming platforms like Twitch and YouTube, and people often watch archives of these broadcasts later for learning and inspiration. Unfortunately, because live stream videos are often multiple hours long and hard to skim and browse, few can leverage the wealth of knowledge hidden in these archives. We present an approach for automatic temporal segmentation of creative live stream videos. Using an audio transcript and a log of software usage, the system segments the video into sections that the artist can optionally label with meaningful titles. We evaluate this approach by gathering feedback from expert streamers and comparing automatic segmentations to those made by viewers. We find that, while there is no one "correct" way to segment a live stream, our automatic method performs similarly to viewers, and streamers find it useful for navigating their streams after making slight adjustments and adding section titles. C. Ailie Fraser, Joy Kim, Hijung Shin, Joel Brandt, Mira Dontcheva |
CHI | 4 |
| 2020 | Supporting Visual Artists in Programming through Direct Inspection and Control of Program ExecutionabstractProgramming offers new opportunities for visual art creation, but understanding and manipulating the abstract representations that make programming powerful can pose challenges for artists who are accustomed to manual tools and concrete visual interaction. We hypothesize that we can reduce these barriers through programming environments that link state to visual artwork output. We created Demystified Dynamic Brushes (DDB), a tool that bidirectionally links code, numerical data, and artwork across the programming interface and the execution environment - i.e., the artist's in-progress artwork. DDB automatically records stylus input as artists draw, and stores a history of brush state and output in relation to the input. This structure enables artists to inspect current and past numerical input, state, and output and control program execution through the direct selection of visual geometric elements in the drawing canvas. An observational study suggests that artists engage in program inspection when they can visually access geometric state information on the drawing canvas in the process of manual drawing. Joel Brandt, Radomír Mech, Maneesh Agrawala, Jennifer Jacobs 0001 |
CHI | 2 |
| 2019 | Implementing Multi-Touch Gestures with Touch Groups and Cross EventsabstractMulti-touch gestures can be very difficult to program correctly because they require that developers build high-level abstractions from low-level touch events. In this paper, we introduce programming primitives that enable programmers to implement multi-touch gestures in a more understandable way by helping them build these abstractions. Our design of these primitives was guided by a formative study, in which we observed developers' natural implementations of custom gestures. Touch groups provide summaries of multiple fingers rather than requiring that programmers track them manually. Cross events allow programmers to summarize the movement of one or a group of fingers. We implemented these two primitives in two environments: a declarative programming system and in a standard imperative programming language. We found that these primitives are capable of defining nuanced multi-touch gestures, which we illustrate through a series of examples. Further, in two user evaluations of these programming primitives, we found that multi-touch behaviors implemented in these programming primitives are more understandable than those implemented with standard touch events. Steve Oney, Rebecca Krosnick, Joel Brandt, Brad A. Myers |
CHI | 3 |
| 2018 | Extending Manual Drawing Practices with Artist-Centric Programming ToolsabstractProcedural art, or art made with programming, suggests opportunities to extend traditional arts like painting and drawing; however, this potential is limited by tools that conflict with manual practices. Programming languages present learning barriers and manual drawing input is not a first class primitive in common programming models. We hypothesize that by developing programming languages and environments that align with how manual artists work, we can build procedural systems that enhance, rather than displace, manual art. To explore this, we developed Dynamic Brushes, a programming and drawing environment motivated by interviews with artists. Dynamic Brushes enables the creation of ad-hoc drawing tools that transform stylus inputs to procedural patterns. Applications range from transforming individual strokes to behaviors that draw multiple strokes simultaneously, respond to temporal events, and leverage external data. Results from an extended evaluation with artists provide guidelines for learnable, expressive systems that blend manual and procedural creation. Jennifer Jacobs 0001, Joel Brandt, Radomír Mech, Mitchel Resnick |
CHI | 2 |
| 2018 | Rewire: Interface Design Assistance from ExamplesabstractInterface designers often use screenshot images of example designs as building blocks for new designs. Since images are unstructured and hard to edit, designers typically reconstruct screenshots with vector graphics tools in order to reuse or edit parts of the design. Unfortunately, this reconstruction process is tedious and slow. We present Rewire, an interactive system that helps designers leverage example screenshots. Rewire automatically infers a vector representation of screenshots where each UI component is a separate object with editable shape and style properties. Based on this representation, the system provides three design assistance modes that help designers reuse or redraw components of the example design. The results from our quantitative and user evaluations demonstrate that Rewire can generate accurate vector representations of interface screenshots found in the wild and that design assistance enables users to reconstruct and edit example designs more efficiently compared to a baseline design tool. Amanda Swearngin, Mira Dontcheva, Wilmot Li, Joel Brandt, Morgan Dixon, Amy J. Ko |
CHI | 4 |
| 2017 | Supporting Expressive Procedural Art Creation through Direct ManipulationabstractComputation is a powerful artistic medium. Artists with experience in programming have demonstrated the unique creative opportunities of using code to make art. Currently, manual artists interested in using procedural techniques must undergo the difficult process of learning to program, and must adopt tools and practices far removed from those to which they are accustomed. We hypothesize that, through the right direct manipulation interface, we can enable accessible and expressive procedural art creation. To explore this, we developed Para, a digital illustration tool that supports the creation of declarative constraints in vector artwork. Para's constraints enable procedural relationships while facilitating live manual control and non-linear editing. Constraints can be combined with duplication behaviors and ordered collections of artwork to produce complex, dynamic compositions. We use the results of two open-ended studies with professional artists and designers to provide guidelines for accessible tools that integrate manual and procedural expression. Jennifer Jacobs 0001, Sumit Gogia, Radomír Mech, Joel Brandt |
CHI | 4 |
| 2016 | Using Runtime Traces to Improve Documentation and Unit Test Authoring for Dynamic LanguagesabstractDocumentation and unit tests increase software maintainability, but real world software projects rarely have adequate coverage. We hypothesize that, in part, this is because existing authoring tools require developers to adjust their workflows significantly. To study whether improved interaction design could affect unit testing and documentation practice, we created an authoring support tool called Vesta. The main insight guiding Vesta's interaction design is that developers frequently manually test the software they are building. We propose leveraging runtime information from these manual executions. Because developers naturally exercise the part of the code on which they are currently working, this information will be highly relevant to appropriate documentation and testing tasks. In a complex coding task, nearly all documentation created using Vesta was accurate, compared to only 60% of documentation created without Vesta, and Vesta was able to generate significant portions of all tests, even those written manually by developers without Vesta. Jan-Peter Krämer, Joel Brandt, Jan O. Borchers |
CHI | 2 |
| 2015 | Selective Undo Support for Painting ApplicationsabstractToday's widely deployed painting applications use a linear undo model that allows users to backtrack previous operations in reverse chronological order. This undo model is not useful if the user has performed desired operations after undesired ones. Selective undo, in contrast, allows users to select specific operations in the past and only undo those, while keeping the remaining operations intact. Although selective undo has been widely explored in the context of text editing and object-oriented drawing, we explore selective undo for painting (bitmap) editing, which has received less attention and introduces many interesting user interface design challenges. Our system, called Aquamarine, explores the script model for selective undo, where selectively undone operations are skipped in the history, rather than the more explored inverse model, which puts an inverse of the selected operations at the end of the history. We discuss the design implications and show through two informal user studies that selective undo is usable and desirable Brad A. Myers, Ashley Lai, Tam Minh Le, YoungSeok Yoon, Andrew Faulring, Joel Brandt |
CHI | 6 |
| 2014 | Combining crowdsourcing and learning to improve engagement and performanceabstractCrowdsourcing complex creative tasks remains difficult, in part because these tasks require skilled workers. Most crowdsourcing platforms do not help workers acquire the skills necessary to accomplish complex creative tasks. In this paper, we describe a platform that combines learning and crowdsourcing to benefit both the workers and the requesters. Workers gain new skills through interactive step-by-step tutorials and test their knowledge by improving real-world images submitted by requesters. In a series of three deployments spanning two years, we varied the design of our platform to enhance the learning experience and improve the quality of the crowd work. We tested our approach in the context of LevelUp for Photoshop, which teaches people how to do basic photograph improvement tasks using Adobe Photoshop. We found that by using our system workers gained new skills and produced high-quality edits for requested images, even if they had little prior experience editing images. Mira Dontcheva, Robert R. Morris, Joel Brandt, Elizabeth Gerber |
CHI | 3 |
| 2014 | Emergent, crowd-scale programming practice in the IDEabstractWhile emergent behaviors are uncodified across many domains such as programming and writing, interfaces need explicit rules to support users. We hypothesize that by codifying emergent programming behavior, software engineering interfaces can support a far broader set of developer needs. To explore this idea, we built Codex, a knowledge base that records common practice for the Ruby programming language by indexing over three million lines of popular code. Codex enables new data-driven interfaces for programming systems: statistical linting, identifying code that is unlikely to occur in practice and may constitute a bug; pattern annotation, automatically discovering common programming idioms and annotating them with metadata using expert crowdsourcing; and library generation, constructing a utility package that encapsulates and reflects emergent software practice. We evaluate these applications to find Codex captures a broad swatch of programming practice, statistical linting detects problematic code snippets, and pattern annotation discovers nontrivial idioms such as basic HTTP authentication and database migration templates. Our work suggests that operationalizing practice-driven knowledge in structured domains such as programming can enable a new class of user interfaces. Ethan Fast, Daniel Steffee, Lucy Wang, Joel Brandt, Michael S. Bernstein |
CHI | 4 |
| 2014 | Addressing misconceptions about code with always-on programming visualizationsabstractWe present Theseus, an IDE extension that visualizes run-time behavior within a JavaScript code editor. By displaying real-time information about how code actually behaves during execution, Theseus proactively addresses misconceptions by drawing attention to similarities and differences between the programmer's idea of what code does and what it actually does. To understand how programmers would respond to this kind of an always-on visualization, we ran a lab study with graduate students, and interviewed 9 professional programmers who were asked to use Theseus in their day-to-day work. We found that users quickly adopted strategies that are unique to always-on, real-time visualizations, and used the additional information to guide their navigation through their code. Thomas Lieber, Joel Brandt, Rob Miller 0001 |
CHI | 2 |
| 2014 | InterState: a language and environment for expressing interface behaviorabstractInterState is a new programming language and environment that addresses the challenges of writing and reusing user interface code. InterState represents interactive behaviors clearly and concisely using a combination of novel forms of state machines and constraints. It also introduces new language features that allow programmers to easily modularize and reuse behaviors. InterState uses a new visual notation that allows programmers to better understand and navigate their code. InterState also includes a live editor that immediately updates the running application in response to changes in the editor and vice versa to help programmers understand the state of their program. Finally, InterState can interface with code and widgets written in other languages, for example to create a user interface in InterState that communicates with a database. We evaluated the understandability of InterState's programming primitives in a comparative laboratory study. We found that participants were twice as fast at understanding and modifying GUI components when they were implemented with InterState than when they were implemented in a conventional textual event-callback style. We evaluated InterState's scalability with a series of benchmarks and example applications and found that it can scale to implement complex behaviors involving thousands of objects and constraints. Steve Oney, Brad A. Myers, Joel Brandt |
UIST | 3 |
| 2012 | Codelets: linking interactive documentation and example code in the editorabstractProgrammers frequently use instructive code examples found on the Web to overcome cognitive barriers while programming. These examples couple the concrete functionality of code with rich contextual information about how the code works. However, using these examples necessitates understanding, configuring, and integrating the code, all of which typically take place after the example enters the user's code and has been removed from its original instructive context. In short, a user's interaction with an example continues well after the code is pasted. This paper investigates whether treating examples as "first-class" objects in the code editor - rather than simply as strings of text - will allow programmers to use examples more effectively. We explore this through the creation and evaluation of Codelets. A Codelet is presented inline with the user's code, and consists of a block of example code and an interactive helper widget that assists the user in understanding and integrating the example. The Codelet persists throughout the example's lifecycle, remaining accessible even after configuration and integration is done. A comparative laboratory study with 20 participants found that programmers were able to complete tasks involving examples an average of 43% faster when using Codelets than when using a standard Web browser. Steve Oney, Joel Brandt |
CHI | 2 |
| 2012 | ConstraintJS: programming interactive behaviors for the web by integrating constraints and statesabstractInteractive behaviors in GUIs are often described in terms of states, transitions, and constraints, where the constraints only hold in certain states. These constraints maintain relationships among objects, control the graphical layout, and link the user interface to an underlying data model. However, no existing Web implementation technology provides direct support for all of these, so the code for maintaining constraints and tracking state may end up spread across multiple languages and libraries. In this paper we describe ConstraintJS, a system that integrates constraints and finite-state machines (FSMs) with Web languages. A key role for the FSMs is to enable and disable constraints based on the interface's current mode, making it possible to write constraints that sometimes hold. We illustrate that constraints combined with FSMs can be a clearer way of defining many interactive behaviors with a series of examples. Steve Oney, Brad A. Myers, Joel Brandt |
UIST | 3 |
| 2012 | SnipMatch: using source code context to enhance snippet retrieval and parameterizationabstractProgrammers routinely use source code snippets to increase their productivity. However, locating and adapting code snippets to the current context still takes time: for example, variables must be renamed, and dependencies included. We believe that when programmers decide to invest time in creating a new code snippet from scratch, they would also be willing to spend additional effort to make that code snippet configurable and easy to integrate. To explore this insight, we built SnipMatch, a plug-in for the Eclipse IDE. SnipMatch introduces a simple markup that allows snippet authors to specify search patterns and integration instructions. SnipMatch leverages this information, in conjunction with current code context, to improve snippet search and parameterization. For example, when a search query includes local variables, SnipMatch suggests compatible snippets, and automatically adapts them by substituting in these variables. In the lab, we observed that participants integrated snippets faster when using SnipMatch than when using standard Eclipse. Findings from a public deployment to 93 programmers suggest that SnipMatch has become integrated into the work practices of real users. Doug Wightman, Joel Brandt, Roel Vertegaal |
UIST | 3 |
| 2011 | Crowds in two seconds: enabling realtime crowd-powered interfacesabstractInteractive systems must respond to user input within seconds. Therefore, to create realtime crowd-powered interfaces, we need to dramatically lower crowd latency. In this paper, we introduce the use of synchronous crowds for on-demand, realtime crowdsourcing. With synchronous crowds, systems can dynamically adapt tasks by leveraging the fact that workers are present at the same time. We develop techniques that recruit synchronous crowds in two seconds and use them to execute complex search tasks in ten seconds. The first technique, the retainer model, pays workers a small wage to wait and respond quickly when asked. We offer empirically derived guidelines for a retainer system that is low-cost and produces on-demand crowds in two seconds. Our second technique, rapid refinement, observes early signs of agreement in synchronous crowds and dynamically narrows the search space to focus on promising directions. This approach produces results that, on average, are of more reliable quality and arrive faster than the fastest crowd member working alone. To explore benefits and limitations of these techniques for interaction, we present three applications: Adrenaline, a crowd-powered camera where workers quickly filter a short video down to the best single moment for a photo; and Puppeteer and A|B, which examine creative generation tasks, communication with workers, and low-latency voting. Michael S. Bernstein, Joel Brandt, Rob Miller 0001, David R. Karger |
UIST | 2 |
| 2010 | Example-centric programming: integrating web search into the development environmentabstractThe ready availability of online source-code examples has fundamentally changed programming practices. However, current search tools are not designed to assist with programming tasks and are wholly separate from editing tools. This paper proposes that embedding a task-specific search engine in the development environment can significantly reduce the cost of finding information and thus enable programmers to write better code more easily. This paper describes the design, implementation, and evaluation of Blueprint, a Web search interface integrated into the Adobe Flex Builder development environment that helps users locate example code. Blueprint automatically augments queries with code context, presents a code-centric view of search results, embeds the search experience into the editor, and retains a link between copied code and its source. A comparative laboratory study found that Blueprint enables participants to write significantly better code and find example code significantly faster than with a standard Web browser. Analysis of three months of usage logs with 2,024 users suggests that task-specific search interfaces can significantly change how and when people search the Web. Joel Brandt, Mira Dontcheva, Marcos Weskamp, Scott R. Klemmer |
CHI | 1 |
| 2010 | What would other programmers do: suggesting solutions to error messagesabstractInterpreting compiler errors and exception messages is challenging for novice programmers. Presenting examples of how other programmers have corrected similar errors may help novices understand and correct such errors. This paper introduces HelpMeOut, a social recommender system that aids the debugging of error messages by suggesting solutions that peers have applied in the past. HelpMeOut comprises IDE instrumentation to collect examples of code changes that fix errors; a central database that stores fix reports from many users; and a suggestion interface that, given an error, queries the database for a list of relevant fixes and presents these to the programmer. We report on implementations of this architecture for two programming languages. An evaluation with novice programmers found that the technique can suggest useful fixes for 47% of errors after 39 person-hours of programming in an instrumented environment. Björn Hartmann, Daniel MacDougall, Joel Brandt, Scott R. Klemmer |
CHI | 3 |
| 2009 | Two studies of opportunistic programming: interleaving web foraging, learning, and writing codeabstractThis paper investigates the role of online resources in problem solving. We look specifically at how programmers - an exemplar form of knowledge workers - opportunistically interleave Web foraging, learning, and writing code. We describe two studies of how programmers use online resources. The first, conducted in the lab, observed participants' Web use while building an online chat room. We found that programmers leverage online resources with a range of intentions: They engage in just-in-time learning of new skills and approaches, clarify and extend their existing knowledge, and remind themselves of details deemed not worth remembering. The results also suggest that queries for different purposes have different styles and durations. Do programmers' queries "in the wild" have the same range of intentions, or is this result an artifact of the particular lab setting? We analyzed a month of queries to an online programming portal, examining the lexical structure, refinements made, and result pages visited. Here we also saw traits that suggest the Web is being used for learning and reminding. These results contribute to a theory of online resource usage in programming, and suggest opportunities for tools to facilitate online knowledge work. Joel Brandt, Philip J. Guo, Joel Lewenstein, Mira Dontcheva, Scott R. Klemmer |
CHI | 1 |