✱ Sourcegraph

Sourcegraph is a code search engine that helps programmers find the right library, see who else is using it, and learn how to use it via usage examples extracted from real client code. It also shows you how your open-source code connects to other people and repositories, e.g., who uses your code and whose code you use.

The difference between Sourcegraph and previous attempts at code search is that Sourcegraph understands code at a semantic level. It know about functions, types, and modules. It also knows things like what type an object is and where a function being called is defined. This makes it a much better reference resource for programmers, but don't take my word for it – try it out yourself.

Sourcegraph was created by Quinn Slack and me. Our mission is to help programmers be more productive by making the task of finding the right library and figuring out how to use it as simple as possible. Join us!

Other Projects

JustTheFacts

JustTheFacts is a Google Chrome extension that highlights text on news websites in useful ways. On sites like nytimes.com, it will highlight key names, numbers, dates, and quotes in blue, purple, green, and red text to bring out the essential facts of the article. It's great for skimming the news for the objective reporting, while filtering out the unnecessary editorialization and commentary in hard-news articles.

JustTheFacts was motivated by the realization that in this age of rich multimedia, we still read newsprint in black-and-white. Meanwhile, other forms of structured and semi-structured print (like computer code) have long used colors to highlight key pieces of knowledge.

3D reconstruction from single images using semantic labels

In this project, I worked on the problem of 3D reconstruction in single images. We constructed a probablistic graphical model to reason jointly about the semantic understanding (which pixels correspond to ground, sky, buildings, trees, and foreground objects) and 3D structure of the image (what the depth of each pixel is). Unlike many other works in 3D reconstruction, we did not make use of multiple viewpoints or images, instead reconstructing the 3D scene from a single 2D image. By leveraging the power of probabilistic learning and inference, we were able to combine multiple sources of information and achieve state-of-the-art results on a very difficult problem.

I was advised by Stephen Gould and Daphne Koller, to whom I am deeply indebted for their time and mentorship. The results our our work appeared in CVPR 2010.

Human-object action recognition

For my undergraduate honors thesis, I studied the problem of detecting human actions, such as "riding a horse", "riding a bike", and "using a computer" in images. General human detection is a hard problem due to the visual deformability of the human body (one can be sitting, standing, walking, running, standing on one's head, etc.) and general object detection is hard because many object classes have a wide range of appearances (e.g., computers can be desktops, laptops, or smartphones) or are similar in appearance to other objects (e.g., books vs. newspapers vs. magazines). In this work, we use data from multiple sources to address these 2 problems jointly, using information from either task to make a better inference for the other. To do so, we construct a latent support vector machine (LSVM) model, which is a model similar to vanilla SVMs that is capable of dealing with hidden variables and a multivariate output space. We also apply the self-paced learning algorithm to overcome local optima in the learning objective.

I am deeply indebted to M. Pawan Kumar, Ben Packer, and Daphne Koller for their guidance and mentorship throughout this project.

Poetica

Poetica is an iPhone app that is similar to the magnetic poetry sets you can buy to stick on your fridge. You can move, resize, re-color, and re-arrange sets of words into a composition on top of an image of your choice. The really fun feature, however, is the ability to use word sets generated from the works of authors like Shakespeare, Donne, Eliot, Conrad, etc. You can also generate a new word set from the URL of a webpage or e-book.

Update: I haven't updated this app in awhile and it may no longer work in newer versions of iOS.