My kernel development experience
In a previous post I mentioned that I would discuss my qualifications for being the kernel-mode go-to-guy for my group despite only having a bachelor’s degree and so I figured now is as good a time as any to discuss it.
Well, first of all, I spent six years at University of Washington getting a BS in computer engineering and a BS in physics. That's enough time for a normal person to get a masters degree, but I've never been very normal. I was interested in pretty much every class at school and so I ended up with 341 credits. The last year and a half I tried to get involved in research and so I got involved with the Nooks project.
At a high level Nooks is a system for driver reliability that isolates drivers in order to detect errors and then handle the errors by unloading and reloading the driver without user interaction and with only a very short interruption to system responsiveness. There are a lot of good papers and presentations on Nooks at http://nooks.cs.washington.edu/.
There were a lot of factors that came together to allow me to work on Nooks and I feel extremely lucky. First, I had Professor Hank Levy for operating systems and Mike Swift as my TA. Hank* is an incredible professor and got a lot of the people in the class excited about operating systems, including me. Mike had come back to graduate school after working at Microsoft and spent some time discussing his research project (Nooks) and it sounded very interesting. A group of us decided to take the operating systems capstone (basically a quarter long project course for seniors) the following quarter.
Second, Gary Kimura, one of the original NT designers that came from DEC with Dave Cutler, is a visiting professor at UW. Besides teaching the undergraduate operating systems class and the software engineering courses, Gary teaches the operating systems capstone class. As anyone that was around at Microsoft when Gary was working there will tell you, Gary is incredibly sharp and a great person. He was a great resource for us and got us excited about NT with his stories about the history and personalities of NT. He also brought in lectures from Microsoft, including Landy Wang and Darryl Havens who both recently were promoted to Distinguished Engineers.
Third, Gary had worked with Microsoft to allow us (nearly) full access to the Windows 2000 source code. While Mike was working on Nooks for Linux, a couple of us decided to spend our time in the operating system capstone, and several research quarters after that, working on writing Nooks for NT. It was incredibly overwhelming and rewarding at the same time. Hank and Mike weren’t able to look at the source code and so sometimes it became difficult trying to work through issues without discussing any internals of the operating system that weren’t publicly available.
And lastly, Nooks was an amazing project. It won best paper at SOSP and several other awards. All of these factors combined to provide the most amazing combination of talent and projects that I had ever experienced (and that has only since been surpassed by working at Microsoft).
This has already gone a bit long, but I had a lot of kernel experience from working on Nooks for Windows. I wrote a loader based off of the driver verifier loader, the object tracker, the garbage collector, the memory manager for Nooks, and various other bits and pieces. I learned a lot and had some incredible teachers and I will forever be in debt to them.
Well after writing all of that I’m not sure if it really stated my credentials, but it at least gave an idea of some of my background.
* I always feel disrespectful calling Hank, Mike, and Gary by their first names, but that’s what they always insisted I call them by.