Natural language processing, data visualization, fancy javascript.

I just polished off a degree in Symbolic Systems (Computer Science for poets) at Stanford with a concentration in Human Comuter Interaction. Before that, I did two software engineering internships at Opower. I then did a product internship on Google Maps before taking the product plunge as an Associate Product Manager at Google. I said 'product' three times in one sentence; that's passion.

Front End Projects


An app that enables users to meet their daily goals by magnifying personal success into positive social impact. Charities are desperate to connect with donors. Meanwhile, potential donors want to help but feel disconnected from problems aren't part of their daily lives. SpringBoard connects busy people to great causes, adding motivation and meaning to even the most mundane tasks. Read more here.


D3.js Skill Map

An interactive map that I designed to represent skill sets in more dimensions than traditional resumes could muster. Play with mine here.

d3.js, JSON, HTML.


An example of a one-page, personal website that I made for my grandpa in about three hours but that still somehow looks better than most things I make. See it live.


Full Stack Projects


Comparar is a website where you can compare anything to anything else and discover, definitively, which is best. We agggregated metrics from all of the hottest APIs to determine a score for the items being compared. We also allow the user to buy the winning item on Comparar represents a giant step toward ending healthy debate worldwide. Click here to start winning arguments.

Technologies: Python, Django, Heroku. APIs: Twitter, Thesaurus, Gender Guesser, Angel List, Google.


A site for creating, taking, and sharing quizzes with a fully fleshed out feature set including:
Permissions: Privacy settings, non-registered access, cookies, user profiles.
Social: Tags and categories, friend requests, user profiles, acheivements, internal mail.
Competition: Internal rating and review system, quiz and score history, challenges.
Quiz Types: Fill-in-the-Blank, Multi-Choice, Picture-Response, Practice Mode, etc.

Technologies: Java, Javascript, XML, HTML, CSS.


While working at Opower, I made Warmville, an existing Rails app, compatible with a wifi thermostat communication protocol. I also built warmvilla-ui, and angular.js app desgined for end-to-end testing of Opower's smart thermostat product.

Technologies: Ruby, Rails, Javascript (Angular), HTML, CSS.

Theory Projects

Cyclical Substring Alignment

Finding the longest common subsequence (LCS) is common algorithms problem with, weirdly enough, lots of really useful applications. The CLCS problem extends LCS to the problem of cyclic input strings. In this project, we present an algorithm for solving the cyclic longest common subsequence (CLCS) problem that runs in O(mn) time. Read the paper.

HMM Business Type Prediction

This project aimed to uncover latent structure in utility data without explicit feature engineering. Our goal was to predict business types based on energy usage data. In other words, can we tell the difference between a strip club, a grocery store, and an elementary school just by knowing how much energy they use, and when? We learned a set of states to capture hidden features by training a separate HMM for each business type. We hypothesized that the hidden states for each business type might correspond to open/closed hours, perhaps with a third state for peak usage. Read the results.


I helped develop new styling for terrain maps while working for Google Maps. I'm not actually allowed to say much more than that. But it involved lots of fancy interpolation and lots of time with this book. Also, the image above is not an image from what we were/are working on. Because, obviously.

Natural Lanugage Processing

Softmax RNN for Short Text Classification

An implementation of the Softmax Recursive Neural Network (SRNN), a deep learning algorithm for text classification. The model jointly learns vector representations of words, a method of merging word representations into document vector representations and a classifier over the document vector representations. Merging is done over a binary tree structure of the document. For a specific task, we show that the SRNN can learn low-dimensional, continuous representations of documents that are superior to the traditional bag-of-words representation for the purpose of classification. Furthermore, it produces high quality domain specific word vectors in the process. Read the paper.

Johns Hopkins Summer School on Human Language Technology

Intensive summer training at the Natural Language Processing mecca, including projects on information retrieval, statistical machine translation, speech recognition, speech perception, and automatic transcription. Example projects included training a named entity tagger using conditional random fields and building an HMM aligner for English-French translation.

Sentiment Analysis

This project aggregated and tracked the sentiment for Opower's cilent utilities across the twitter sphere. It also had a fancy data visualization on the front end to track sentiment over time. We got to watch, live, as sentiment for East Coast utilities tanked as Hurricane Sandy hit.

Technologies:Used sentiment 140, and existing sentiment analysis engine, the Twitter API for the data. Used Rails and d3.js for the front end.