Output-Directed SVG Programming[UIST 2019]

New user interface techniques to expose direct manipulation for intermediate execution products. New and improved toolbox of domain-specific and general-purpose program transformations.

Work-in-Progress

Demos at elm-conf and ICFP Tutorials in September 2018:

Bidirectional Evaluation[OOPSLA 2018]

This milestone introduces a new Elm-like source language, called Leo, and support for generating and directly manipulating HTML output. Under the hood, we use a new bidirectional evaluation algorithm that reconciles output changes with the program.

To get a list of ideas on how to contribute, please follow this link.

  • v0.7.1 (Jul 2018) Small Changes (OOPSLA 2018 Paper)

Older Versions

  • v0.7.0 (Apr 2018) Bidirectional Evaluation; New Source and Target Languages

Deuce: A Lightweight Structured Code Editor[ICSE 2018]

This milestone introduces Deuce, a text editor that is augmented with support for structurally selecting code items and then invoking automated program transformations called code tools. Code tools help with various prototyping, repair, and refactoring tasks that arise when programming. To try it out, hold down the Shift key when hovering over the code box, and start clicking things.

  • v0.6.3 (Jan 2018) Performance and Other Minor Improvements
  • Starting v0.6.1, Sketch-n-Sketch no longer requires a larger stack in Chrome, and v0.6.3 addresses additional stack issues.

Older Versions

  • v0.6.2 (Aug 2017) Another UI Overhaul + More Code Tools (ICSE 2018 Paper)
  • v0.6.1 (Jun 2017) Faster Parser
  • v0.6.0 (Apr 2017) New UI + Direct Manipulation Code Editing

Draw, Relate, Group Tools[UIST 2016]

This milestone introduces direct manipulation tools for drawing new shapes in the output, relating attributes of shapes, and grouping and abstracting shapes. Each of these tools is paired with program transformations that match the desired operations. Together, these tools reduce some of the text-based programming burden required to generate certain graphic designs.

  • v0.5.2 (Sep 2016) Basic Repetition (Strange Loop 2016 Demo)
  • This version may introduce performance issues. If the application crashes with "too much recursion," try running with a larger stack (e.g. open -a "Google Chrome" --args --js-flags="--stack-size=8192").

Older Versions

  • v0.5.1 (Jul 2016) Improved Cursors; Removed Edit Code Button (UIST 2016 Paper)
  • v0.5   (Apr 2016) Tools for Drawing, Relating, and Grouping Shapes

Live Synchronization[PLDI 2016]

This milestone introduces live synchronization, which allows the user to directly manipulate shape attributes (such as positions, size, and color) in the output of a program, and Sketch-n-Sketch attempts to infer updates to program constants in real-time to match the changes.

  • v0.4.2 (Mar 2016) Small Improvements (PLDI 2016 Paper)

Older Versions

  • v0.4.1 (Feb 2016) Small Improvements (Instructions for PLDI 2016 Artifact Evaluation)
  • v0.4   (Nov 2015) Native Sliders; Heuristics Modes; Examples; Survey Histograms
  • v0.3   (Sep 2015) Small Tweaks
  • v0.2   (Aug 2015) Small Tweaks
  • v0.1   (Aug 2015) Saving Files; Color/Rotation Zones; Improved Parsing/Unparsing; etc.
  • v0.0   (Jul 2015) Alpha Version