I am a researcher in the areas of social computing and human-computer interaction, and a co-founder and CEO at Amuse Labs. I am also a Visiting Professor in Computer Science at Ashoka University. Formerly, I was the Associate Director of the Mobisocial Lab in Stanford Computer Science. I also got my PhD and MS from the same department.

My research interests are focused on novel applications for the digital life-logs that millions of consumers are collecting. Some of these applications are demonstrated in a system called Muse which helps people look back and reflect on the years or decades past, using their email archives. A derivative of Muse called ePADD is being developed by Stanford and Harvard Libraries to provide access to the email archives of eminent individuals that are hosted in libraries.

I have also worked on novel "experience-infused" applications that provide new experiences for users using the power of automatic recall from their archives. The personalized Experience-infused Browser is one example; the Slant custom search engine is another.

In a previous career, I worked on creating new methods to make computer systems more reliable. Broadly, my thesis was that hardware design can be improved by using many of the innovative ideas in the software engineering world; and software can be made more robust using the rigorous methods of hardware engineering. Here are 4 example ideas (the first three were developed when I was with the microprocessor division at Sun Microsystems, and the last one at Stanford for my Masters').

Verification of multiprocessor systems
TSOtool is a program that helps in verifying the correctness of shared memory multiprocessors. It has exposed bugs in several microprocessors designed in the last few years, and in 2004, was awarded Scott Mcnealy's chairman's award for innovation, the highest recognition for technical achievement at Sun.

Formal verification
One of the obstacles to using formal verification (model checking) technologies during hardware design is the need to manually write down properties to be verified. IODINE is a system that mines design simulations to automatically infer useful invariants.

Fast and accurate simulation
We developed a technique to checkpoint architectural state of a program on a fast processor simulator (written in, say, C) and restart it on a hardware (Verilog) model of the processor. It was used successfully to predict performance of the picoJava and UltraJava (MAJC) processors, and moreover exposed deep design bugs before tapeout. (IEEE Micro Paper)

Automated Debugging
DIDUCE (developed with my advisor, Monica Lam) is a debugging tool based on inferring dynamic invariants from program runs. "Presumed invariants" from DIDUCE can be used in in a variety of ways. One way is to turn these invariants into assertions or warnings to give programmers insight into what's wrong - or at least, unusual - when a large Java program is running.

I previously co-founded Magic Lamp Software, which built advanced program analysis technology to detect errors and security vulnerabilities in enterprise Java code.

Pet peeves and what's cool
   Some notes on Javascript.
   Bhimsen Joshi: tributes
   Suman Sangam, an ecological farm on the outskirts of Dharwad, India.
   Bangalore Walks

News Media
   Deccan Herald e-paper (Greasemonkey script that re-lays out the pages and makes reading easier)

My undergraduate alma mater.