me


I am a PhD student at the University of Massachusetts Amherst working in the PLASMA lab with Arjun Guha. I spent the past summer as a Research Intern at IBM working on Serverless Compositions. I previously worked at iZotope, Inc. developing desktop audio software and hacking together Linux device drivers. My research interests are programming languages, building and verifying systems, and computer networks.


Research


Stopify

Stopify is a JavaScript-to-JavaScript compiler that makes it possible for other compilers and Web-based IDEs to gracefully run long-running programs, stop non-terminating programs, support blocking I/O, set breakpoints, and step through code entirely in the browser. These features are enabled by Stopify’s first-class continuation support for JavaScript. There are some interesting insights necessary to implement efficient continuations, get in touch if you want to discuss this!

This work appeared at PLDI 2018.

Paper | Source Code | Talk


Conferences & Workshops


Year Venue Title
2018 PLDI 2018 Putting in All the Stops: Execution Control for JavaScript
2017 IBM PL Day Wrestling Control from the Browser: Compiling to JavaScript with Fewer Compromises
2017 NEPLS Stopify: Web-based Debugging For Free


Education


  • University of Massachusetts - M.S./Ph.D. in Computer Science. In Progress.
  • Boston College - B.A. in Computer Science and B.S. in Mathematics. May 2014.


Experience


  • Research Assistant - University of Massachusetts Amherst. June 2016 - Present.
    • with Prof. Arjun Guha
  • Research Intern - IBM. May - August 2018.
    • with Olivier Tardieu
  • Software Engineer - iZotope Inc. June 2014 - June 2016.
  • Undergraduate Research Assistant - Boston College. May - September 2013.
    • with Prof. Hao Jiang.


Contributions


Adapton

Adapton is a library of incremental data structures for performant reuse of sub-computations. I ported probabilistic tries from the original OCaml implementation to Rust and wrote some preliminary benchmarks using tries to implement incremental computation over sets, finite maps, and graphs.

Frenetic

frenetic is a family of languages and tools for network programming, providing a semantic foundation for trusting network programs. I hacked on frenetic’s compiler internals and extensions to the NetKAT semantics, playing with expressions of network behaviors and constraints so that network administrators don’t have to hate themselves.

nanomsg

As a software engineer at iZotope, I prototyped the inter-plugin communication seen in their Neutron product using the socket library nanomsg. I identified and fixed race conditions in their in-process and pipe-based transports causing crashes on rebinding and closing sockets.


Awards


  • Sudha and Rajesh Jha Scholarship - University of Massachusetts Amherst. 2016.


Activities & Service


  • PLDI Student Volunteer. Volunteer. June 2017.
  • ECOOP Summer School. Attendee. June 2017.
  • UMass CICS New Student Committee. Member. 2016 - Present.
  • P4 Developer Day. Attendee. November 2016.
  • Women in Engineering and Computing Day. Volunteer. October 2016.
  • Oregon Programming Languages Summer School. Attendee. June - July 2016.
  • Programming Languages Mentoring Workshop. Attendee. POPL 2013.