Sun Java Solaris Communities My SDN Account Join SDN
 
Community

Meet Kelly O'Hair, Senior Staff Engineer at Sun Microsystems

 
By Janice J. Heiss, March 2006  

Meet the EngineerBio: I am a senior staff engineer at Sun Microsystems, where I have worked since 1993. I work in the JDK Core Serviceability area, with a current focus on improving the JDK builds. In the last few years, I've been heavily involved in the new JVM Tool Interface (JVMTI), in particular doing the conversions of the debugger back end and HPROF (a heap/CPU profiling tool in Java 2, Platform Edition 5.0) from JVMDI/JVMPI (Java VM Debug Interface/Java VM Profiler Interface) to JVMTI.* I have written articles on the JVMPI conversion and the use of HPROF.

 

java.sun.com (JSC): What project are you currently working on?

O'Hair: Opening up the source to the JDK project to the outside world and making the builds simpler and more reliable.

JSC: What can you tell us about the JDK 6 build issues?

O'Hair: It's a complicated beast that builds on a long list of platforms. I've been involved in build-infrastructure teams on a variety of projects at Sun and other companies, and although I don't consider myself a "build master," I usually become one no matter what project I happen to be on.

I guess I'm a bit of a paranoid programmer in that I want to build and test on all platforms, within reason. I've discovered that the best answer is automation and frequent integration, build, and test. So I usually end up doing lots of builds and writing scripts to automate whatever I can possibly automate.

The JDK is a unique project that's been around a long time and inherited many build challenges over the years -- most of which still exist. I try to simplify things and remove old and unneeded build complications, but it's a long list to tackle.

JSC: What technical insights into the Java programming language have been most important to you?

O'Hair: Historically, my work in the JDK project and other past projects at Sun has not involved writing Java code. I was responsible for the fastjavac compiler many years ago, but it was written in C, so the Java language itself is not the issue for me. Recently, I've been doing some serious Java programming with NetBeans IDE 4.1 and Tiger (J2SE 5.0), and it's been a lot of fun. The language is so much more exact and precise than C or C++. It is indeed a better language, and the addition of generics has been very successful.

JSC: What do you do when you're stumped?

O'Hair: Walk away for awhile. Usually the solution is simple or staring you in the face. If I still can't figure it out, I talk to one of my coworkers -- just explaining the problem can sometimes help you find the solution. I've been lucky to have worked with some fantastic engineers at Sun, and I can always find someone who will help in this kind of situation.

JSC: You spend a lot of spare time researching your family tree. What satisfaction does this give you?

O'Hair: Genealogy was just a hobby at first, but with the Internet, it got much more interesting. It's all about sharing information and helping others find connections and solving puzzles of the past, so the Internet was perfect for this. I often receive a couple of dozen emails out of the blue from people who found my genealogy web site and were delighted to uncover some missing connection they had in their own genealogy data. Every year, I try and add a bit more to the site and add people to the database or scan in copies of old documents.

JSC: What is your biggest challenge in writing software?

O'Hair: Defining a realistic scope to a project so that it can be delivered on time and as expected, and then keeping to those limitations. There is so much more to writing software than just writing software, and it's easy to forget some of the more critical components to delivering the final product: documentation, testing, build infrastructure, schedules, support planning, delivery/install procedures, internationalization (I18n), localization (L10n), compatibility. I'm sure I've missed a few.

JSC: Are there any "lessons on limits" that you would like to apply to developing?

O'Hair: Don't bite off more than you can chew. Learn to say "no" when asked to do something that you don't have time for, unless it's more important than what you are currently doing, of course -- then you have some priorities to adjust.

JSC: Do you ever feel a sense that you've created something beautiful when you write code?

O'Hair: Well, more like "not ugly." There's a gray zone between ugly and beautiful. Simple is beautiful. Complete is beautiful. Well documented is beautiful. Complex can be ugly. Incomplete is always bad. Overdocumented is not good. If I don't feel comfortable walking line by line through the code in front of my coworkers, then it's probably not beautiful.

JSC: Although you are not generally a user of an integrated development environment (IDE), you recommend NetBeans IDE 4.1 with JDK 5.0. Why?

O'Hair: It's just so damn cool. The refactoring is really nice. Now remember, I haven't been doing loads of Java programming over the years, so the ability of the IDE to help with my Javadoc comments, Junit tests, debugging, code formatting, todo lists in the source, in addition to the refactoring... Well, it's just a nice experience compared to C/C++, makefiles, and shell scripts.

JSC: Can you name something you wish you'd learned in engineering school?

O'Hair: I missed out on getting a good understanding of databases and SQL, probably because I was avoiding COBOL like the plague, which was a good thing.

JSC: What activities outside of developing improve your skills as a developer?

O'Hair: Understanding the patent and licensing issues with regard to software. Understanding when you should add a copyright notice and why you can't necessarily remove anyone's copyright notice. And what a copyright notice really means. What does the GPL really mean in terms of your development? Understanding why you can't just copy or mimic software ideas from publications.

Every company has different procedures, I'm sure, but being aware of them and making sure you are following the rules is extremely important.

JSC: What has changed most about software over the years?

O'Hair: Open source and the general availability of free software tools on the Internet. Being able to download JAR files and run them on just about any desktop or laptop is pretty cool. Most of the time, this works if the app is done right.

JSC: Can you describe the process of writing code?

O'Hair: Start NetBeans. Create tests. Create templates. Fill in templates. Run tests. Debug code. Run tests. Write more tests. Run tests. Debug code. Run tests. Write more tests. Run tests. Debug code. Run tests. Write more tests. Run tests. Debug code. Run tests. Write more tests. Take some time off. Then come back and automate the build and testing.

JSC: Is there a Java technology class that you could not live without?

O'Hair: Yes, java.lang.String and java.lang.System. I'm glad I don't have to always add import java.lang.*; to every source file I have to create.

JSC: What would you tell a student or an engineer new to Java technology?

O'Hair: Start out small, and gradually add more knowledge and skills day by day. Find a periodical or web site that has a good selection of technical papers that directly relate to what you do, and take the time to read the articles on a weekly basis. But don't assume everything you read is 100 percent true.

JSC: What is your dream project?

O'Hair: It used to be centered around the basic idea of an IDE or debugger that would work on running production applications with full capabilities. I guess it still is, but I've been taking some roundabout ways of getting there. It's too big a project for any company to completely commit to, so I've been happily providing the necessary building blocks for others -- which is why I've enjoyed being involved in the JDK Serviceability team.

JSC: Where do you think the Java programming language is headed in the next few years?

O'Hair: Up. It's hard to top what's been done in Tiger. As the world slowly adopts Tiger, it will be interesting to see what comes next.


* The terms "Java Virtual Machine" and "JVM" mean a Virtual Machine for the Java platform.

See Also

Kelly O'Hair's blog
Kelly O'Hair on the JVMPI conversion
Kelly O'Hair on HPROF
Meet Kumar Srinivasan, Sun Microsystems Staff Engineer -- Software
Meet Chet Haase, Java Platform, Standard Edition (Java SE) Client Architect at Sun Microsystems
Meet Kohsuke Kawaguchi, Staff Engineer and XML Schema Developer at Sun Microsystems
NetBeans IDE

Rate and Review
Tell us what you think of the content of this page.
Excellent   Good   Fair   Poor  
Comments:
Your email address (no reply is possible without an address):
Sun Privacy Policy

Note: We are not able to respond to all submitted comments.