• Publications
  • Influence
Searching for type-error messages
This work pursues a new approach to constructing compilers and presenting type-error messages in which the type-checker itself does not produce the messages, and is an oracle for a search procedure that finds similar programs that do type-checking. Expand
A tested semantics for getters, setters, and eval in JavaScript
This paper focuses on two aspects of S5: accessors (getters and setters) and eval, since these features are complex and subtle in JavaScript, they warrant special study. Expand
Verifying Web Browser Extensions' Compliance with Private-Browsing Mode
Modern web browsers implement a private browsing mode that is intended to leave behind no traces of a user’s browsing activity on their computer. This feature is in direct tension with support forExpand
Seminal: searching for ML type-error messages
We present a new way to generate type-error messages in a polymorphic, implicitly, and strongly typed language (specifically Caml). Our method separates error-message generation from type-checking byExpand
TeJaS: retrofitting type systems for JavaScript
TeJaS has been engineered modularly to encourage experimentation and its initial type environment is reified, to admit easy modeling of the various execution contexts of JavaScript programs, and its type language and typing rules are extensible, to enable variations of the type system to be constructed easily. Expand
Combining Form and Function: Static Types for JQuery Programs
A novel type system is proposed to statically detect jQuery errors and extends Typed JavaScript with local structure about the page and with multiplicities about the structure of containers to track precisely which nodes are active in a jQuery object with minimal programmer annotation effort. Expand
Synthesis of Recursive ADT Transformations from Reusable Templates
The approach relies on polymorphic synthesis constructs: a small but powerful extension to the language of syntactic templates, which makes it possible to define a program space in a concise and highly reusable manner, while at the same time retains the scalability benefits of conventional templates. Expand
Supporting dynamic, third-party code customizations in JavaScript using aspects
This work accepts the popularity of extensions and seeks better linguistic mechanisms to support them, and demonstrates that an aspect-oriented approach to web-application customization is often more efficient than current idioms while simplifying the entire process. Expand
C3: An Experimental, Extensible, Reconfigurable Platform for HTML-based Applications
C3 is presented, an implementation of the HTML/CSS/JS platform designed for web-client research and experimentation that explores the role of extensibility throughout the web platform for customization and research efforts, by introducing novel extension points and generalizing existing ones. Expand
Modeling and Reasoning about DOM Events
This work defines the first formal model of event behavior in the DOM, with high fidelity to the DOM specification, which is concise and executable, and can be used for testing and verification. Expand