Brian Hempel's MS Presentation
Output-Directed SVG Programming
We propose output-directed programming, a paradigm whereby users
directly manipulate the output they wish to create while the system
automatically builds a text-based program that produces the output.
Specifically, we present output-directed programming techniques for
programs that generate Scalable Vector Graphics (SVG) designs. Like a
traditional graphics editor, the system presents a direct manipulation
interface for drawing and manipulating shapes on a canvas. Unlike a
traditional editor, the drawing is represented as a text-based program
in an ordinary functional programming language. Direct manipulation
actions to draw, relate, group, and repeat shapes are affected by
transforming the program. Although the program remains text-editable
at any time, we show how the output-directed tools enable a variety of
complex, readable programs to be constructed without any text-based
program editing.
We evaluate the techniques by implementing over a dozen parametric
designs. While some of the output-directed programming interactions
are by necessity domain-specific, we describe how others are
implemented in a generalized way, to support their application to
other output-directed programming domains.