Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Joel Brandt

dblp:41/6065 · also Joel R. Brandt · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Personal fabrication and tangible interfaces
computational design tools
0.622018
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.522019
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.412020
Temporal Segmentation of Creative Live Streams · CHI 2020
Programming languages and type systems › language design
programming abstractions
0.412019
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.322014
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.322014
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.322012
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.222020
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.212015
Selective Undo Support for Painting Applications · CHI 2015
User interface design and tools › programming environments
live programming
0.212014
InterState: a language and environment for expressing interface behavior · UIST 2014
Program analysis
dynamic analysis
0.212014
Addressing misconceptions about code with always-on programming visualizations · CHI 2014
Empirical software engineering
mining software repositories
0.212014
Emergent, crowd-scale programming practice in the IDE · CHI 2014
Collaborative and social computing
crowdsourcing
0.222014
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.112012
Codelets: linking interactive documentation and example code in the editor · CHI 2012
Multimedia analysis and retrieval › multimedia browsing
video browsing
0.112020
Temporal Segmentation of Creative Live Streams · CHI 2020
User interface design and tools › interactive design tools
drawing tools
0.112018
Extending Manual Drawing Practices with Artist-Centric Programming Tools · CHI 2018
Empirical software engineering
developer studies
0.112009
Two studies of opportunistic programming: interleaving web foraging, learning, and writing code · CHI 2009
Interaction techniques and input
direct manipulation
0.112017
Supporting Expressive Procedural Art Creation through Direct Manipulation · CHI 2017
Software maintenance and evolution
software documentation
0.112016
Using Runtime Traces to Improve Documentation and Unit Test Authoring for Dynamic Languages · CHI 2016
Programming languages and type systems › dynamic languages
javascript
0.112014
Addressing misconceptions about code with always-on programming visualizations · CHI 2014
Debugging and program repair
fault localization
0.012010
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
YearPublicationVenuePosition
2020 Temporal Segmentation of Creative Live Streams
abstract
Many 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
CHI4
2020 Supporting Visual Artists in Programming through Direct Inspection and Control of Program Execution
abstract
Programming 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
CHI2
2019 Implementing Multi-Touch Gestures with Touch Groups and Cross Events
abstract
Multi-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
CHI3
2018 Extending Manual Drawing Practices with Artist-Centric Programming Tools
abstract
Procedural 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
CHI2
2018 Rewire: Interface Design Assistance from Examples
abstract
Interface 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
CHI4
2017 Supporting Expressive Procedural Art Creation through Direct Manipulation
abstract
Computation 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
CHI4
2016 Using Runtime Traces to Improve Documentation and Unit Test Authoring for Dynamic Languages
abstract
Documentation 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
CHI2
2015 Selective Undo Support for Painting Applications
abstract
Today'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
CHI6
2014 Combining crowdsourcing and learning to improve engagement and performance
abstract
Crowdsourcing 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
CHI3
2014 Emergent, crowd-scale programming practice in the IDE
abstract
While 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
CHI4
2014 Addressing misconceptions about code with always-on programming visualizations
abstract
We 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
CHI2
2014 InterState: a language and environment for expressing interface behavior
abstract
InterState 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
UIST3
2012 Codelets: linking interactive documentation and example code in the editor
abstract
Programmers 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
CHI2
2012 ConstraintJS: programming interactive behaviors for the web by integrating constraints and states
abstract
Interactive 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
UIST3
2012 SnipMatch: using source code context to enhance snippet retrieval and parameterization
abstract
Programmers 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
UIST3
2011 Crowds in two seconds: enabling realtime crowd-powered interfaces
abstract
Interactive 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
UIST2
2010 Example-centric programming: integrating web search into the development environment
abstract
The 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
CHI1
2010 What would other programmers do: suggesting solutions to error messages
abstract
Interpreting 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
CHI3
2009 Two studies of opportunistic programming: interleaving web foraging, learning, and writing code
abstract
This 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
CHI1