Hello Recruiters!

If you're a recruiter, I should let you know that I'm not interested in jobs in the finance world, algorithmic trading, etc (including places like Two Sigma, Getco, and so on). They are great places but it's just not my area of interest.


Yes, but I have a unique opportunity!

I totally believe you, but I'm just not interested in that industry.


We hired other people from Google too and have a high retention rate!

Cool. They are probably awesome at what they do. I'm still not interested.


They solve really challenging problems!

I bet they are challenging, but they're not interesting to me.


You can make tons of money!

A friend of mine (in academia) once told me that he'd be willing to switch to industry if his base salary was a guaranteed $1 million per year. After tax. I'm so disinterested in finance that this would be my number too.


I'm not like other headhunters!

If you've read this far -- you're right, you're not like most other headhunters. So hopefully by now you get the point -- I'm not interested.


Wow, you sound like an asshole!

Sorry. I don't like being interrupted at work so often or woken up at unreasonable times in the morning to these sorts of phone calls :(


Trivia!

  • A headhunter once called me to tell me that there's a firm that works on really "hardcore things" such as "source code". That's pretty hardcore.
  • A headhunter once told me someone was offering $1.8M. When I called him on it, he told me I was being unreasonable. Hilarity ensued (and then I hung up).
  • I've gotten calls from recruiters at Google, while I was a full-time employee at Google. Google's not a finance company, but they're not exempt from recruiting stupidity either!
  • A number of headhunters have told me that they have a position in New York when it's actually in New Jersey. 100% of those headhunters are from New Jersey. Go figure. TL;DR: New Jersey is not New York.
  • One headhunter once condescendingly asked me, "Do you even find your work at Google to be challenging?" When I answered "yes", he paused for a moment, said "oh", and then changed the topic. I wasn't even trying to troll him on that one.
  • Someone tried to recruit me for Two Sigma once. After I said no, I got another call from the same recruiter 2 days later, who re-introduced himself and presented a "unique opportunity"... with Two Sigma. Maybe he was hoping that I forgot who he was, and at the same time that I would change my mind in those 2 days.
  • I don't pick up my phone number for numbers I don't recognize. By this point you probably know why :(

1. Software for computer vision

Pyramid Match

Feature Extraction for LIBPMK

November 2008

This package provides a framework for detecting interest points and extracting descriptors, mostly for images, but it is extendable to just about anything (such as videos or text). In the image domain, it provides further capabilities for automatically detecting image types and converting between formats so that particular detector/extractor implementations need not worry about low-level details. This library is written as an extension to LIBPMK and fully integrates with it.
» Project page and source code
Implicit Shape Model

Object Localization with an Implicit Shape Model

MIT Vision Interfaces group; Spring 2008

This is an implementation of the Leibe et al. implicit shape model, which is an algorithm for detecting and localizing instances of an object in a large image. We used this as a baseline in a recent NIPS submission (details coming shortly if it gets in) to detect instances of books in a cluttered environment. This library is written as an extension of LIBPMK.
» Project page and source code
Spatial PMK

Object Recognition with the Spatial PMK

MIT Vision Interfaces group; Fall 2007

This is an implementation of the Lazebnik et al. spatial pyramid match, which is just a uniform PMK on spatial features that quantized by appearance. For image databases where object classes have some spatial consistency or if the object is well-localized, this method was shown to perform well. This library is written as an extension of LIBPMK.
» Project page and source code
Adaptive Vocabulary Forests

Adaptive Vocabulary Forests for Recognition and Retrieval

MIT Vision Interfaces group; ICCV 2007

This is an implementation of adaptive vocabulary forests, which is some joint research I did and submitted to ICCV 2007. It is based on libpmk, but also implements the vocabulary trees on top of it, as well as some toy demos. It includes the source code we used for our ICCV demo, in which photos were taken from my camera phone and uploaded to a laptop, which had a tree server running in the background, so that any clients could upload photos and perform searches. The package contains over 15,000 lines of code!
» Project page, source code, and paper (PDF)
Pyramid Match

LIBPMK: A Pyramid Match Toolkit

Fall 2006-2007, MIT Vision Interface Lab

LIBPMK provides a fast C++ implementation of the Pyramid Match algorithm, as well as a flexible framework with which users can easily and quickly run experiments. The library includes a lot of built-in functionality made from scratch, like k-means and hierarchical clustering, dealing with data sets too large to fit in memory, creating multi-resolution histograms, and performing fast pyramid matches. The experimental framework wraps around LIBSVM to provide an easy way to train and test SVMs.
» Project page (includes documentation and C++ source code)
Optical flow of rotating sphere

Optical Flow: Motion Field and Focus of Expansion

Fall 2005, MIT 6.866 Machine Vision project

This project is an implementation of an iterative method for computing optical flow. Its input is a movie file in any format playable by mplayer (most things should work). The program will overlay the estimated motion field on a grayscale version of the original video. In the case of translational motion along the z-axis (the camera zooming in and out), you can also optionally have it estimate the focus of expansion and draw a dot there. One of my secondary goals was to make memory usage efficient so it scales well with the length of the input movie.
» Source code

2. Other stuff

Bluetooth

A Remote Slide Advancer for your Nokia S60 Phone

Just for fun

Since both my mobile phone and my laptop have Bluetooth, I made a little clicker that lets me advance slides using the arrow keys on my cell phone. I've used this while giving talks rather than buying a separate slide advancer. From the back, my phone (Nokia N95) actually looks like a camera, so it occasionally raises eyebrows when people see me pressing buttons on it. You can also program any of the keypad buttons to execute any arbitrary command; I once used it to trigger some movies being played in the middle of a presentation.
» Source code
Pong

Real Life Pong

Spring 2007, MIT 6.883

This is an implementation of the game Pong where the paddles are controlled by moving in the physical world. You would run around with a GPS device and a cell phone. The game would display on the cell phone, and as you moved around, your paddle would move around. The GPS device and phone both communicate using Bluetooth, and you can communicate with a game server over Bluetooth or Wi-Fi. When indoors, the GPS device can be replaced with a cricket. The game can also be displayed on a projector screen mounted on the ceiling pointed at the floor, so you can actually move around in the game world.
» Source code
Two spinning tori

Motion Description Language Interpreter

Spring 2002, MCS6, Stuyvesant High School

This was my final project for MCS6, Computer Graphics. We defined a simple motion description language (MDL) and wrote a script parser which takes a bunch of commands and will generate pretty images and animations. It can generate a number of 3D shapes (box, sphere, torus) or arbitrary polygons. It implements the Gouraud shader for the lighting effects. A number of sample scripts are included in the tarball. Our group also made a web-based interface to the MDL renderer and a ray tracer.
» Source code and demos
Liar's Poker

Liar's Poker for the TI-89

Fall 2002, Stuyvesant High School

We liked playing Liar's Poker instead of paying attention to Dr. Majewski in Physics C.. so when he banned cards from the classroom, I made a TI-89 version and we would pass the calculator around, so it would look like we were doing work when we were instead playing 6-player games of Liar's Poker.
» Source code


Download PDF
Last updated: October 4, 2011

Education

Massachusetts Institute of Technology

  • 2008 M.Eng. Electrical Engineering and Computer Science
  • Charles and Jennifer Johnson Thesis Award for Outstanding M.Eng Thesis
    Dimitris N. Chorafas Foundation Award
    Morris Joseph Levin Award for Outstanding Oral Thesis Presentation
  • 2007 S.B. Computer Science and Engineering
  • 2007 S.B. Physics

Experience

  • Google, Inc., Software engineer, 2008-present.
  • MIT CSAIL Vision Interface Lab, Research assistant, 2005-2008.
  • Google, Inc., Software engineer intern, summers 2006-2007.
  • Microsoft Corporation, Software engineer intern, summers 2004-2005.
  • MIT Computer Graphics Lab, Research assistant, 2004.
  • ForSaleByOwner.com, Web developer, 2003.
  • American Red Cross in Greater NY, Web developer, 2001-2004.
  • Weill Medical College Radiology Lab, Research assistant, 2001-2002.

Publications

Highlights from my time at MIT

2007-2008

  • My M.Eng. thesis, titled Efficient Object Recognition and Image Retrieval for Large-Scale Applications (PDF), won the Charles and Jennifer Johnson Thesis Award for Outstanding Computer Science M.Eng. Thesis (1st place).
  • My M.Eng. thesis later also won the Dimitris N. Chorafas Foundation Award. This is an international award given to about 20 or 30 people each year.
  • I won the Morris Joseph Levin Award for Outstanding Oral Thesis Presentation at the EECS Masterworks Symposium. I was one of four winners of this award. Here's my poster (PDF). See if you can find the typo.
  • I led a group of 5 in 6.087: Building Mobile Applications with Android. The class wasn't particularly interesting, and we didn't even get any Android hardware, but we got some decent exposure. Companies like Verizon, Nokia, Sprint, and some VCs came to see our final presentation. Here's the flyer (PDF) that we designed for them.
  • I took CMS.998: Videogame Theory and Analysis. I developed a theory about RTS gamers, their social interactions online, and its impact on the development of online communities. I gave a talk about my work and wrote a paper titled Action, Play, and Agency in RTS (PDF). Unfortunately due to other commitments I missed my chance to publish it.

2006-2007

  • I wrote mobile phone applications in 6.883: Pervasive Human-Centric Mobile Computing. We got Nokia hardware to play with and write S60 code for; we also played with some handheld Linux-based PDAs and indoor location services (crickets). My final project was a real-life Pong game where players had to physically run around to move their paddles.
  • I wrote a lot of music in 21M.341: Jazz Composition. It was a lot of fun. The musicians in our class formed an ad-hoc "band" and played everyone's final projects live in Killian Hall. Unfortunately I don't have a recording of it, but it sounded awesome.

2005-2006

  • The hardest class I've ever taken was 6.854: Advanced Algorithms. My group's final project improved the upper bound for a competitive algorithm for the general 2-server problem. An hour before we submitted the paper (PDF) we noticed a bug in one of our proofs, but we managed to patch it up and added a coversheet, explaining that the new bound was not as good but still an improvement. In any case, I'm not much of an algorithms person, but this class definitely whipped me into really good shape. I can safely say that the one point in time that I was in my smartest phase was right after I took this class. It has all been downhill after that.
  • During IAP, I did 6.270: Autonomous Robot Design Competition, where my team built a LEGO robot that had to move balls around. Here are some videos of our robot (ours is the one with the flag). Our loss in the 3rd round was due to faulty equipment on the organizers' part :-( (see the YouTube page for the 3rd video for an explanation).

2004-2005

2003-2004

  • I took 8.03: Vibrations and Waves because someone told me it was an interesting class. And now I have a degree in physics.

Music I've written

Ugly Piece of Garbage (2004)

For solo piano

A very short piece based on perfect fifths and minor thirds. This was written for Harmony & Counterpoint I. As the title suggests, I had no confidence in my composition skills at this point :-)
» Download (PDF)

(2004)

For solo piano or any pair of instruments

This piece was written out of spite, and was intended to methodically break each rule that the professor wanted us to follow. The title of this piece is the picture that he draws on your paper whenever you break a particular rule.
» Download (PDF)

I Wonder What This Sounds Like (2004)

For string quartet

The hastily-written final assignment for Harmony & Counterpoint I. At least the professor liked the title...
» Download: full score (PDF) or on 2 staves (PDF)

This Piece Took Me Forever To Typeset (2005)

For solo piano

A theme and variations, written for Harmony & Counterpoint II. At the end, the professor brought in a pianist to sight-read our work in Killian Hall. The music and recordings were posted on OpenCourseWare.
» Download: score (PDF)
» Recordings (MP3):

gg (2006)

For small jazz ensemble

» Download (PDF):