None (Summer 2016)
I enjoy developing and deploying programming language technology — type systems, synthesis algorithms, and other program analysis techniques — for applications in software engineering and human-computer interaction. Below are some of the projects I've worked on. For more information about my research, check out my publications and talks.
|[Sketch-n-Sketch] Direct manipulation interfaces are useful in many domains, but the lack of programmability in a high-level language makes it difficult to develop complex and reusable content. We present a prodirect manipulation editor for scalable vector graphics (SVG), which allows the user to freely mix between programmatic and direct manipulation.|
|[Radar] Defining a dataflow analysis for concurrent programs is complicated by the subtleties of thread interleavings and locking protocols. Radar automatically converts a sequential dataflow analysis to a concurrent one by making use of datarace information from the Relay race detector for C programs.|
|[Fine, Microsoft Research] Modern SMT solvers allow refinement type systems to track security and other complex properties, but they become a large part of the compiler's trusted computing base (TCB). Fine incorporates a type-preserving translation to eliminate the solver from the TCB. Fine is a precursor to MSR's F* language.|