Published on


This project was done both for my capstone project at Tufts, and also as a passion project before and after the school year. I worked on a team with Sam DeSota and Alex Quatrano, former co-workers from my time at Hubspot.

Overview: When we describe, communicate, and interact with interfaces, we build an idea in our mind of how they work. "When I click this button, it does this series of things." Even programmers do this in their mind as they think about the interfaces that they're building. But, when programmers write code, their interface for doing so is sequential lines of written text. As the programmer builds features, solves bugs, and communicates their designs, they are constantly mapping/translating between these written lines ("the code") and this natural action-reaction idea of what the program does ("the mental model").

This constant mapping and translating wastes time takes the form of the following questions that a modern interface developer is constantly asking about their app:

  • What is happening at the same time as this?
  • What happens directly before or after this?
  • What exactly does this depend on?

Many of these questions, posed as problems, have been attempted to be addressed by better technology and programming paradigms. Concurrent programming, Reactive programming, Funtional programming - each start to address these issues.

Raft, however, takes the position that we are hamstringing ourselves if we think of these only as programming issues - we must also think of these as fundamental programming interface issues. What is it about text that makes it the best interface for interacting with our code? Raft is an IDE that starts to answer these questions with a new interface for programming that tries to visualize the state of an app.

Final Presentation

Click here to view my final presentation

Click here to download the design doc (created before beginning and updated halfway through)


Raft interface
Raft poster