Live Rust (2021.9 - Present)

Rust is becoming extremely popular for various domains of programming, but its unique features of ownership and lifetimes make the learning curve steep. In collaboration with people in the ProgSys group, we’re imagining a Live Programming environment for Rust that visualizes ownership and lifetimes to help programmers build and confirm their mental models for these properties.

LiveStepper (2021.8 - Present)

A recent exploration of mine, LiveStepper is meant to be a Live Programming environment for constructing and debugging event handler code. A GUI event is a transition to a new UI state, while the transition could involve a sequence of visual changes all at once. Debugging these intermediate changes could be hard, let alone the hassle of having to restart and refresh your work on every code change. LiveStepper enables working on the JavaScript event handling code on the left while examining the GUI on the right. Ideally, LiveStepper would serve as a step-wise debugger for GUI event handling, allowing the user to:

  1. Visualize the UI changes without having to provide GUI inputs (automated GUI testing);
  2. Gain immediate, continuous feedback on every code change (live programming);
  3. Examine every change on the UI on every line of statement (by moving their cursor around the editor).

SnipPy+ (2021.3 - Present)

Built on top of SnipPy, SnipPy+ features a new interaction flow where the user can constantly interact with the synthesizer without leaving and restarting the specifications writing process: they can (1) see synthesis results as they are typing in specifications and (2) keep modifying the specifications / inspecting new synthesis results, until they intend to exit the process.

Projection Boxes for Education (PB4Edu) (2020.8 - 2021.3) [paper]

We used Projection Boxes, a Live Programming visualization, in an introductory programming class with 600+ students at UCSD over one academic quarter, and found that students preferred Projection Boxes to the baseline IDE and considered them helpful for their learning.

Venbrace (2019.1 - 2020.7) [thesis] [poster] [demo]

Venbrace is a textual representation for the block-based MIT App Inventor. Its design is principled and empirically evaluated through two user studies. Although no conclusive evidence was found from either study, this project is my first exploration in the space of human-centric programming language design.

Visualizing TwitterTrails Stories (2018.1 - 2018.10) [poster]

TwitterTrails is a tool that allows members of the media to track the trustworthiness of stories shared on Twitter co-built by Panagiotis Metaxas at Wellesley College. My prototype visualizes the stories (circles) and their tags (linked lines connecting the circles to the dots on the outer bigger circle) alongside their magnitudes of spread (sizes of circles) and levels of trustworthiness (blue=undisputed, red=doubtful) as determined by TwitterTrails’ algorithm. With this interactive visualization, users are able to focus on stories/tags of their interest through the filtering mechanism and interpret metrics of a story more easily without examining its associated tweets.