  Modern interactive visualizations are akin to distributed systems, where user
interactions, background data processing, remote requests, and streaming data
read and modify the interface at the same time. This concurrency is crucial to
provide an interactive user experience---forbidding it can cripple
responsiveness. However, it is notoriously challenging to program distributed
systems, and concurrency can easily lead to ambiguous or confusing interface
behaviors. In this paper, we present DIEL, a declarative programming model to
help developers reason about and reconcile concurrency-related issues. Using
DIEL, developers no longer need to procedurally describe how the interface
should update based on different input events, but rather declaratively specify
what the state of the interface should be as queries over event history. We
show that resolving conflicts from concurrent processes in real-world
interactive visualizations can be done in a few lines of DIEL code.
