I currently work on social computing and human-computer interaction in Stanford's Mobisocial and HCI groups. See individual projects for released software.
Previously, I worked on creating new methods to make computer systems more reliable. Broadly, my thesis has been 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 examples ideas (the first three were developed when I was with the microprocessor division at Sun Microsystems, and the last one at Stanford).
- Verification of multiprocessor systems
- TSOtool is a program that helps in verifying the correctness of
shared memory multiprocessors. It has exposed bugs in
every Sun microprocessor 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. This is
very useful to measure hardware performance and find design bugs before
the hardware is taped out. 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.
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
RISKS is sometimes
funny, sometimes sad, and always a good storehouse for
ideas on problem detection.
News Media
Deccan Herald e-paper (Greasemonkey script that re-lays out the pages and makes reading easier)
Tehelka e-mag, Global Post
My undergraduate alma mater. (Honor a mentor at IITD's golden jubilee celebration).
My Sun blog is out of date
and probably going away soon.