The "Heroes of Java" series took a short break. After the first 20 it is time to start over in 2013. This time it is kind of an unexpected hero. During my ongoing search for the real heroes of Java I stumbled upon Coleen.
Who are you?
I am a software engineer working on the Hotspot Java Virtual Machine at Oracle. I work in the runtime group and we work on startup and footprint optimizations, the interpreter, class file parsing, verification, internal class data representation, and interfaces to GC and the compilers. I've been doing this for a long time - 12 years at Sun then Oracle and about 30 years in the industry on various compilers for other languages.
Your offical job title at your company?
My official title is "principle engineer" although most of us talk about our titles as IC<something>, where I think IC is "Individual Contributor".
Do you care about it? (the title)
I don't care a whole lot about titles. Most of my co-workers are quite senior and have the same or one better title.
Do you speak foreign languages? Which ones?
I had a high school French. I still remember some of the words but that's it.
How long is your daily "bootstrap" process? (Coffee, news, email)
My daily bootstrap process takes a couple hours. Sometimes it takes longer so I don't make it into the office and work from home instead to save the driving. I usually drink 3-4 cups of coffee while checking personal email and organizing some activity for my teenage son. I also have my Oracle email configured in Thunderbird, so when I run out of home email, I start answering these emails. I might do some code reviews and reply to colleagues in Stockholm or Australia or an earlier time zone.
You have a twitter handle? Why?
No, I really haven't figured out why I would have a twitter account or follow anyone on it (sorry this is boring).
What's your daily development setup? (OS/IDE/VC/other Tools)
I have just installed Ubuntu 12.04 on some Dell 4 way system in my office. We have racks of different types of virtual machines at Oracle somewhere that we use to test on different platforms. It's all virtualized now.
Which is the tool providing most productivity to your work?
In general, I am as about as low tech as it gets. I mostly use vim, make, gcc and gdb. grep -r is my IDE.
Your prefered way of interacting with co-workers?
My co-workers are all over the world. We have very long email threads. I do have some coworkers in my office and we actually talk in person and can draw pictures on whiteboards to explain things. This is my preference but it's impractical for everyone. Some of us use IM which is better than email.
What's your favorite way of managing your todo's?
I keep lists with arrows in front of these items in a spiral notebook. Was this supposed to be some high tech gadget? I'm the boringest tech person ever.
If you could make a wish for a job at your favorite company: What would that be?
Well, working at Oracle on the JVM is really fun. We don't seem to run out of ideas for improvements and code to write. My husband's company Abinitio would be great to work at because they all went to the Galapagos but they won't say what they do.
You're programming in Java. Why?
I am actually not coding in Java. The Hotspot JVM is written in C++. There's an openjdk project to write the JVM, or at least parts of it in Java, called Graal. That would be cool to work on when it's closer to a product.
What's your personal favorite in dynamic languages?
What was the biggest project you've ever worked on?
Last summer, a few of us completed a project where we moved Java class metadata from the Java heap, aka PermGen, to a different heap area. This probably seems counter intuitive to a Java programmer because now we have to use explicit memory management and not let the garbage collector do the work. There were a lot of problems with managing our JVM memory through the garbage collectors and the memory for class metadata was limited by this. We were finding many applications that load too many classes and would get OutOfMemoryError on PermGen which wasn't recoverable. This project changed most of the JVM and removed a ton of code, which is sort of my favorite thing to do.
Which was the worst programming mistake you did?
I tend to be a code environmentalist - reduce, reuse and recycle and all that. Most of my programming mistakes have been to remove code and find out that it was in fact needed.