Current Research
Timelapse – interactive record/replay for web applications
Behavior reproduction is a subroutine during debugging and
program understanding tasks, but current debugging tools do not
directly support this subroutine. This is a problem when debugging
today's complex, interactive, and nondeterministic web
applications. The Timelapse
project implements deterministic record/replay for web
applications. Developers can create an exact recording of an
application's execution, and then use a new developer tool to replay
and inspect the recording at will. During replay, developers can use
existing tools like breakpoints, element inspector, and console to
understand what the program did. Program recordings can also be saved
and shared amongst Timelapse-equipped browsers.
Timelapse is currently under development. I am
seeking undergraduates looking to do undergrad research to improve the
state of the art in developer tools. Ideally, you have some experience
with web programming, and are interested in HCI and/or Software Engineering.
Contact me for
details.
Timelapse currently extends the debugger tools
and runtime of the WebKit
platform. More information is available
on the Timelapse project page.
Collaborative Optimization
Recent advances in just-in-time compilation for JavaScript have
made it possible to deploy large-scale applications using the HTML 5
platform. Unfortunately, web applications are still orders of
magnitude slower than native applications. We
propose collaborative optimization as a way to transparently
improve performance by harnessing the "collective knowledge" about how
individual web applications run. In essence, we extend traditional
profile-guided optimization to collect profiles over many users,
summarize profiles at web-scale, and then distribute optimization
hints to any users that are able to take advantage of such hints.
Previous Research
Dynamics of JavaScript
The DynJS project analyzes the dynamic (runtime) behavior of JavaScript in an effort to better quantify how the language is used. To date, we have focused on aspects of dynamicity in general (PLDI 2010), as well as uses of eval specificially (ECOOP 2011).
C3 – An Extensible Research Browser
I helped build C3, an experimental HTML platform for web-related research, during an internship at Microsoft Research. C3 is built from the ground-up for flexibility: it is written in managed C#, it generalizes several existing extension mechanisms and adds new extension points in a systematic way. Several architectural features encourage modularity and experimentation.