Alloy is a language for describing structures and a tool for exploring them. It has been used in a wide range of applications from finding holes in security mechanisms to designing telephone switching networks.

Bluefish: A Grammar of Discrete Diagrams

Bluefish is a visualization language for specifying discrete diagrams like trees, lists, and graphs using Gestalt relations. It provides a declarative interface that separates data and layout, making it easier for both humans and programs to specify and reason about diagrams.

Certified Control for Self-Driving Cars

Certified control is a new architecture for autonomous cars that offers the possibility of a small, verifiable trusted base without preventing the use of complex machine-learning algorithms for perception and control.

Déjà Vu

Have you ever noticed that most applications are fundamentally the same? They just combine existing concepts (such as profiles, feeds and posts) in new ways. Déjà Vu is a new platform for rapid construction of complex applications by composing concepts. Because concepts are reused, new applications can be made at much lower cost.


Espalier (formerly Object Spreadsheets) is a new computational paradigm that combines the usability advantages of spreadsheets with SQL-like expressive power, providing a way to build a wide class of interactive applications more easily than with existing tools.


Gitless is an experimental version control system built on top of Git. Many people complain that Git is hard to use. We think the problem lies deeper than the user interface, in the concepts underlying Git. In this project, we apply the theory of concept design to analyze and redesign Git.

Rethinking Software Design

What is design thinking in the context of software? We're developing a new approach to software design that achieves usability and robustness by going deeper than the user interface.


Wildcard is a platform that empowers anyone to build browser extensions and modify websites to meet their own specific needs. Wildcard shows a simplified view of the data in a web page as a familiar table view, and allows people to directly manipulate the table to modify the contents of the original page.