I’m a super-geek who loves creating software tools. I’m currently working on Hadoop, an open source framework that enables writing robust, efficient, distributed applications that need to process a lot of data. It is written in Java and allows applications to run on clusters of a 1000 nodes.
In previous jobs and projects, I’ve worked on software static analysis tools, software model checking, configuration management and web search. One of my first tasks when I started at Yahoo was to reimplement the heuristic that sets the quality of each URL. Before I started, it was a program that ran on a single node and took a day to run. After I was done, it ran on the entire cluster and took 5 minutes. *smile*
I’ve also used lots of different programming languages, because I find them interesting. In fact, when I was interviewing at NASA/Ames, one of the interviewers was someone that in a previous job had been tasked with productizing some of the tools that I’d written in grad school. The various tools had been written in a wide collection of programming languages (C, Ada, Modula-3, and Icon) and he wanted to make sure I learned some restraint since then. *smirk* The languages that I’ve used are: Java, C++, C, Python, Lisp, Ada, Refine, Icon, Modula-3, Ada, Fortran, Cobol, Jovial, Algol, and various assembly languages.
Debugging can be frustrating, but very rewarding when you find the cause of the problem. One of the nastiest bugs that I’ve found when I was at NASA and the Mars Explorer Rovers had just landed on Mars. The command sequencer for the Rover was core-dumping and the team was desperate, because the expected lifetime of the rover was only 90 days. If the command sequencer crashed, it could cost them hours to recover and they might miss the window to upload a new set of commands to the rover and lose an entire day. After tracking through the code using the debugger, disassembler, and the source code for the runtime system, I tracked down the problem. The sequencer was core dumping in the middle of a C++ exception handler while unwinding the stack, which had made the debugger almost useless. I found that the bug was in the C++ runtime system for that particular platform and had been fixed by the next minor release of the gcc compiler.
On a personal note, I love board games. My car’s trunk is loaded with a wide collection of 30-40 games and I have more at home. I’ve always liked board games, but I got hooked on the German-style board games when I was in grad school. I’ll usually play games a couple times a week at lunch, usually something short like Ingenious.