News

  1. [Nov 2018] Mikaël presented Bidirectional Evaluation at OOPSLA.
  2. [Nov 2018] Great demos and attendance at the LIVE workshop. Thanks all!
  3. [Nov 2018] PLATEAU keynote on Direct Manipulation Programming in Sketch-n-Sketch.
  4. [Oct 2018] Live Functional Programming accepted to POPL 2019.
  5. [Sep 2018] Cyrus presented Hazel at Strange Loop.
  6. [Sep 2018] Presented Structured Editing for Elm* in Elm at elm-conf.
  7. [Sep 2018] We presented a Sketch-n-Sketch Tutorial at ICFP.
  8. [Sep 2018] Thanks to everyone who participated in the ICFP Student Research Competition.
  9. [Jun 2018] Bidirectional Evaluation conditionally accepted to OOPSLA 2018.
  10. [May 2018] Brian presented Deuce at ICSE 2018.
  11. [May 2018] Cyrus, Matthew Hammer, and I received NSF Awards for the Hazel project!

... More News ...

Currently Teaching

None (Winter 2019)

... More Classes ...

Research

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. Currently, the overarching theme of my research is to develop Direct Manipulation Programming Systems.


active projects

 
[Sketch-n-Sketch] Graphical user interfaces are great, but the lack of programmability in a high-level language makes it difficult to develop complex and reusable content. Sketch-n-Sketch is a direct manipulation programming system for interactively creating documents — such as graphic designs, web pages, and spreadsheets — that aims for a seamless combination of programming and direct manipulation.
 
[Deuce] Text editors are great, but coding involves tedious, error-prone edits that hinder productivity and creativity. Deuce is a structure-aware code editor that provides direct manipulation interactions for quickly performing programming and refactoring tasks.
 
[Hazel with CU Boulder and CMU] Programming environments are great, but they typically provide little help for incomplete programs — those that are syntactically ill-formed or ill-typed. This project develops semantic foundations for programming environments to continuously edit, reason about, and run programs with holes.

older projects

 
[Dependent JavaScript @ UCSD] Scripting languages include features that frustrate static reasoning, such as extensible objects, dynamically computed keys, loosely coupled recursion, reflection, and dynamic code loading. This project aims to develop type systems to describe idiomatic programs in scripting languages such as JavaScript, Python, and Ruby.
 
[Radar @ UCSD] 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.
 
[Staged Information Flow @ UCSD] The prevalence of dynamically loaded code makes program analysis for JavaScript difficult. We present a staged approach to tracking information flow that splits the analysis burden between compile-time and run-time.
 
[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.

Students

Mikaël MayerPostdoc
Cyrus OmarPostdoc
Nick CollinsPh.D. student
Brian HempelPh.D. student
Justin LubinCollege student

former undergraduate advisees
Jacob Albers
Grace Lu Deuce: Direct Manipulation Source Program Editor (BS 2017)
Izaak Meckler Mote: Goal-Driven Development and Synthesis for Haskell (BS 2015)
Eri Rogers
Amy Sitwala
Mitchell Spradlin
Bowen Wang Predicting Haskell Type Signatures from Names (BS/MS 2018)
Chris Winkler
John Zhao

Professional Activities

2020: SPLASH Local Chair
2019: <Programming> PC, Bx PC, PLDI AEC Co-chair
2018: PX PC, PLDI AEC Co-chair, ICFP SRC Chair, LIVE Co-organizer, PLATEAU PC
2017: PLDI PC, LIVE PC
2016: POPL SRC, PLDI ERC, ECOOP PC, TFP PC, Midwest PL Summit Co-organizer
2015: POPL PC, PLDI SRC, STOP PC, OOPSLA ERC
2014: PLDI ERC, PLDI AEC, OOPSLA PC
2013: FOOL PC

Elm Software Foundation, Board of Directors