Tuesday, February 21, 2012

The Heroes of Java: Greg Luck


Let's redefine 13 as an unlucky number :) Here it is. The 13th part in my "Heroes of Java" interview series. I had the pleasure to meet Greg at this year's Jfokus and we had a great breakfast discussing all kinds of stuff around cache, JSR-107, JCP, Heroes, Java EE and what he thinks about leading the oldest JSR on the JCP.

Greg Luck
founded Ehcache in 2003. Upon Terracotta’s acquisition of Ehcache in 2009, he assumed the role as the project’s CTO and has been instrumental in building the technology into an enterprise-class caching solution. With the acquisition by Software AG in 2011 he now is the CTO of Terracotta. Greg is also deeply committed to fostering Ehcache’s loyal open source community and regularly speaks at international conferences and seminars.
Greg holds a Bachelor of Commerce from the University of Queensland and a Masters in Information Technology from the Queensland University of Technology.

General part
Who are you?
I am an Australian who lives in Brisbane. I work for Terracotta and have done since they acquired Ehcache 2.5 years ago.

Your offical job title at your company?
CTO Terracotta

Do you care about it?
My job title? Up until a few weeks ago it was "CTO Ehcache". That one I found strange, being a CTO of a product. Both titles are the choice of my employer. For me it is about what I get paid and the work I get to do. The title matches up pretty much with what I actually do so I am Ok with it. In years past at ThroughtWorks you could have any title you wanted. I went with Software Engineer.

Do you speak foreign languages? Which ones?
I learned French at school but never get to use it. The other one that some consider a separate language is Australian English :) So people do not always understand me.

How long is your daily "bootstrap" process? (Coffee, news, email)
My day sometimes starts with a phone call early in the morning to colleagues in San Francisco or around the world. It is a jarring transition from sleep to work with people who have been awake for hours. That is tough.

When there is no phone call I start with a cup of tea and scan my email taking care of what I can of in half an hour to an hour. Emails include any interesting news which goes to a newsclips address.

Then I deal with longer tasks and if I manage to clear those I work on project work. For me that is either new features for Ehcache or  work on JSR107. I cannot concentrate on projects when tasks are due.

I guess the other thing I should say is I am super careful on time management. I avoid things I consider distractions.

Twitter
You have a twitter handle? Why?
@gregrluck. I was sitting at JavaOne years ago when Twitter was brand new and got mentioned in a talk there so I naturally signed up for one.

Whom are you following in general?
I follow tech people I know personally but I only look in from time to time.

Do you have a personal "policy" for twitter?
My policy for twitter as it is for Linked In and Facebook is to always write with a view to how it will look 5 or 10 years from now. I think the voluntary disclosure many make will in time begin to look like that cool tattoo you got in your youth which becomes an embarrassment in middle age.

Does your company restricts or encourages you with your twitter usage?
Because of my role I am the public face of the company so things I say can easily get perceived as the views of the company. I accept that as a necessary restriction. And there was one embarrassing incident where I suggested in my blog it was time to fork Java. That post took off and became the number 7 most popular for the year on DZone. Apparently some people thought that the company had actually  forked Java. We had to deal with press and everything so I learnt my lesson there.

Work
What's your daily development setup? (OS/IDE/VC/other Tools)
Mac OS X, GitHub, IntelliJ, Terminal, Maven, CloudBees

Which is the tool providing most productivity to your work?
IntelliJ

Your preferred way of interacting with co-workers?
M preferred way is face to face. Because I work from home the actual way is email or voice conference. I always thought we would do more with IM but we have people all over the world so often asynchronous messaging is best.

What's your favorite way of managing your todo's?
If they come in my email I read the email and then mark it unread. Sometimes they can sit there for weeks and they are a constant thorn in my side until I clear them. I like to have zero unread emails but because of my travel I often open up the laptop after a trip with hundreds unread.

If you could make a wish for a job at your favorite company: What would that be?
Actually I am pretty happy with what has happened. I sold my long-running open source project, then got a team to work on it, designed 8 releases in 2 years, turned it into an Enterprise Cache which became successful commercially and then the startup that acquired me successfully exited. All in a little over two years.
There a years of interesting work ahead so I am happy where I am.

Java
You're programming in Java. Why?
We build infrastructure for Java. So Java is naturally what we program in.

What's least fun with Java?
In the JVM, Garbage collection.
I personally think the very conservative approach around adding new language features is the right one. Once something is added it cannot get taken out. Languages tend to grow in complexity over time and eventually become too much for beginners.

I like the way JVM languages are solving the desire for new language features or entirely different languages rather than requiring Java itself too.

If you could change one thing with Java, what would that be?
In the JVM, Garbage collection. I think automatic garbage collection is not always the best technique. I have made a few proposals in this area.

What's your personal favorite in dynamic languages?
I like Groovy. It feels natural to me.

Which programming technique has moved you forwards most and why?
Recognising and applying patterns. When I recognise a situation that fits a pattern and I apply it I get that warm fuzzy feeling :)

What was the biggest project you've ever worked on?
A project spanning 8 development teams and three companies. Interestingly, having these teams remote from each other naturally leads to well defined interfaces.

Which was the worst programming mistake you did?
Failing to write enough test coverage. If ever I skip on this it always bites me.