Interests

I like building products which people want to use. My research interests
lie in large-scale distributed systems. Apart from that, I am interested
in software engineering tools (e.g., code analysis, rewriting) and in
Web applications.

Academic Honors

One of the six recipients, all over India, of the National Board of
Higher Mathematics (NBHM) scholarship for exceptional performance in
the Higher Mathematics Nurture Program for three successive years
(1999, 2000, 2001).

Secured All India Rank 9 among more than 100,000 candidates who
appeared for the IIT Joint Entrance Examination (1997).

Awarded Government of India merit scholarship through the National
Talent Search Exam (1995).

Experience

Software Engineer, Facebook Inc.
[ Nov '08 - present ]

Founder and CEO, Buxfer.com
[ Dec '06 - Oct '08 ]

Buxfer.com is an online, shared tool for managing your personal and
shared finances. Buxfer helps its users analyze their personal
expenses as well as track and settle debts with friends. All of this
is accessible over the web, through a cellphone, via email, or even
IM!

I, along with my other co-founder, was responsible for the complete
design and implementation of the site. The site has seen steady growth
despite heavy competition, and has over 100,000 registered users
today. As a part of running the business, I have learnt how to develop
consumer-facing products, how much usability matters, why latency
matters, how to market -- skills which are usually irrelevant in a
research environment.

My research focuses on providing network and system support for
distributed multi-party interactive applications with particular
emphasis on online multi-player games. My goal is to design scalable,
distributed and low-latency architectures for highly interactive games
such as First Person Shooters (FPS) like Quake. To this end, I have
designed and implemented a distributed middleware
(called Colyseus) and modified the popular Quake 2 and
Quake 3 FPS game engines to use our substrate for distributing
game state across multiple servers or peers. In order to perform
efficient distributed object lookups in Colyseus, I designed and
implemented a novel routing protocol called Mercury which supports
multi-dimensional range queries in peer-to-peer environments.

Analysis of the BitTorrent file distribution network under a wide
variety of realistic environments. We find that the system performs
near-optimally with respect a number of metrics including mean
download time. Also designed and implemented a new
scalable file distribution protocol code-named Cascade.

Worked on the design, implementation and evaluation of a generic
peer-to-peer network architecture. Developed a distributed directory
search application providing seamless peer-to-peer access across
DSML/LDAP servers distributed over various administrative domains.

Ashwin Bharambe, Sanjay Rao and
Srinivasan Seshan: MERCURY: A
Scalable Publish-Subscribe System for Internet Games,
First International Workshop on Network
and System Support for Games [Netgames] 2002.

Major Research Projects

In this project, we build mechanisms to help an ISP network detect if
its network as a whole is under attack or if a significant portion of
its network is carrying traffic aimed at bringing down an external
destination. In our scheme, routers in the ISP network construct
profiles or fingerprints of traffic using stream-sampling algorithms.
These fingerprints are used to identify anomalies and trigger
suspicions about various flows. The suspicions are re-inforced by
other routers to respond uniformly using RIO-based preferential packet
dropping. Joint work with Aditya Akella, Prof. Srini Seshan and Prof.
Mike Reiter.

Multi-modal Network Protocols [Spring 2002]

The goal of the project was to answer the following question: is it
possible to redesign the traditional rigid protocols to take on very
different operating modes when faced with different environments? We
presented a case for such multi-modal protocols in our paper.
Specifically, we discuss multi-modal reliability and routing. We show
the feasibility of designing multi-modal protocols by describing how
these protocols can make operating mode decisions and switch modes
without additional overhead. Joint work with Aditya Akella, Suman Nath
and Prof. Srinivasan Seshan.

Traditional methods for debugging distributed programs are ineffective
because the asynchrony and unpredictability of the interconnecting
network results in system state which is hard to reproduce. In this
project, we designed and implemented a trace and replay based
distributed debugger for the Java RMI system. In the replay phase,
only one component is re-executed while the rest of the system is
simulated using the traces recorded in the record phase. We thus
manage to give a one-machine debugging perspective to the programmer.
We found that the time and space overheads for debugging are
acceptable. Joint work with Vahe Poladian.

This project focused on designing and implementing a general-purpose
interface between the two halves of an application that allows
arbitrary computation to be placed on reconfigurable hardware. Our
interface was based on compiler-generated stubs which allowed placing
arbitrary procedures on the reconfigurable fabric. This was a
significant departure from previous approaches that allowed only
simple, call-free computation or leaf procedures to be placed on the
reconfigurable hardware. Joint work with Mahim Mishra.