About software development for the enterprise. Focus on Java EE and more general Java platforms.
You'll read a lot about Conferences, Java User Groups, Java EE, Integration, AS7, WildFly, EAP and other technologies that hit my road.

Tuesday, February 21, 2012

The Heroes of Java: Greg Luck

10:35 Tuesday, February 21, 2012 Posted by Markus Eisele
, , ,
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.

Thursday, February 16, 2012

Jfokus 2012 Trip Report

11:31 Thursday, February 16, 2012 Posted by Markus Eisele
, ,
This was my first ever Jfokus and I wasn't really sure what to expect. What I know from my data analysis about their speakers from last year, that it is a wonderful fresh conference with big names on the speakers list year after year.
And of course I knew the head behind it, Mattias, who is the lead of the Stockholm JUG and a well known Java Champion. so I was really excited as the acceptance email arrived. After arranging a few things I was all set to travel. Traveling to Sweden is very comfortable and short at least for me as a German. Roughly two hours by plane from MUC are enough to reach Stockholm's Arlanda Airport and additional 20 minutes on top to travel to the city center with the Arlanda Express Train. The venue is next to the upper exit of the central station. So this is a "wheels down and be there" experience. I really really like this kind of stuff. Traveling in Europe is easy as hell in general. No passport, only your ID card. Compared to German conferences this still has the feel of "traveling a decent distance" and this is what makes the location special for me.

@myfear, @arungupta,@matkar (Picture by A.Gupta)
Monday - Tutorial Day
No, I wasn't giving one but I promised to (try) to be a helping hand for Arun Gupta who was giving his famous Java EE 6 Hands On Lab (Building an end-to-end application using Java EE 6 and NetBeans) for roughly 30 attendees. The room was packed. Proudly wearing my ACE Director Polo I was even able to help a bit with questions and development setups. If you are interested in the slides and some more impressions from the lab see Arun's trip report on his blog. It's amazing what this guy knows about NetBeans, Derby, GlassFish and Java EE. Most if not all of the attendees stayed for the 3.5 hrs. Arun got a lot of positive feedback afterwards and even if this was roughly the 10th time he was giving the lab the attendees still found room for suggestions on additional troubleshooting tips and sadly some NetBeans 7.1 bugs/improvement ideas came in the way also.
It was all about doing an end-to-end example. Starting with simple Servlets and digging the way down through CDI, EJBs, JPA, REST. Enhancing all this with Bean Validation and CDI Events. A well thought over lab which crossed my desk a few months back as it was initially presented at JavaOne 2011. Combined with all the early feedback from the reviewers and from the field this has gotten a very good and complete sample of digging through the Java EE 6 technologies with latest NetBeans and GlassFish.
The revised hands-on lab document is available here and the complete application here.

The supporting hotel was wonderful. A shame that you will not spend to much time there, because of the packed conference program. After  a nice and light breakfast the sessions started at 9:00am every day. This was early enough for the attendees and even the speakers got a good chance to make final updates to their slides. The rooms were distributed over seven (7!) levels.
What sounds like it is a lot truly feels more like three levels. The main entrance was directly on level 4 (exhibition hall) and it was easy to go upstairs for the two big A rooms. Look at the map to the right to get a good impression (this was taken from the program handout, hope nobody minds. It probably has some kind of copyright on it, let me know if I have to take the plan down again.)
If you want to get some impressions about how all this looked from the inside, take a look at my flickr photoset. It starts with some impressions from the overall venue and also shows some speakers and party impressions. This wonderful first day was closed by one of the most amazing speaker dinners I ever attended. It happened in the F12 Restaurang. I don't have the words to describe the perfect atmosphere, dinner, drinks and laughs we had at our table! Closing down near midnight, I was looking forward to the next day which sadly already was my departure day.

Tuesday - My Big Day
Scheduled for 13pm I was prepared to talk about "Java 7 Adoption in the Enterprise". I can't deny that I was a little surprised to see an A-room assigned to that talk. Both A2 and A4 can handle roughly 500 attendees and the excitement was building since I discovered that. The talk has been recorded for publishing on Parleys.com so I expect to updated this post whenever this is done. In the meantime you have to take a look at the slides I was using. I published them on slideshare.


The talk went well and the feedback I got was pretty good. It was a pleasure doing it! I spend almost the rest of the conference day with taking pictures, dipping into different talks and speaking with attendees and other speakers I haven't met in a while. It was a pleasure to meet (in no particular order): Gerrit, Sharat, Fabiane, Dalibor, Vinicius and Yara, Marcus, Klara, Bert, Paul, Mattias, Masoud, Robert, Enno, Lars, CeciliaStephan, Roger and many many more names, that I forgot to include! Thanks for a wonderful inspiring conference!

Wednesday - Departure Day
One of those days where one surprise comes after another. Starting with an unexpected but awesome breakfast with Greg which was followed by his session, I sneaked into some other sessions until noon which was my intended checkout time. I honestly always try to make the best out of departure days, but it simply doesn't work for me. So, the rest was basically following twitter, chatting in the awesome Oracle Community Corner and trying to catch up with new faces.


The yellow Arlanda Express took me back to the airport. I was still enjoying all the impressions and thoughts which floated through the air being part of the conference. So the delayed flight back home wasn't a big issue for me. I finally reached MUC around 9pm and as usual, coming back also is a good part of taking part in conferences. Thanks to Mattias and his crew for hosting one of the best European conferences I have seen so far. It has exactly the right size for me and I enjoyed running into people everywhere. I will try hard to make it to Jfokus 2013 again!!

Monday, February 13, 2012

The Heroes of Java: Ward Cunningham

23:50 Monday, February 13, 2012 Posted by Markus Eisele
, , ,
The 12th part of my "Heroes of Java" interview series is somehow, let's call it special. It's not about an active member of the Java community in the sense of a well known evangelist, programmer or speaker. It's more about someone providing essential backgrounds in both methodology and tools for our daily work. And I am very glad to have him in the series.

Howard G. "Ward" Cunningham
Source: Wikipedia.org (CC BY-SA 3.0)
is an American computer programmer who developed the first wiki. A pioneer in both design patterns and Extreme Programming. He is well-known for a few widely disseminated ideas which he originated and developed. The most famous among these are the wiki (named after WikiWikiWeb) and many ideas in the field of software design patterns. He owns the company Cunningham & Cunningham Inc., a small consultancy that has specialized in object-oriented programming.

General Part
Who are you? (Describe yourself in max three sentences)
I'm a technologist, sometimes a CTO, sometimes a programmer. I'm best known as the inventor of wiki.

Your offical job title at your company?
I have a one-year position as Nike's open-data fellow. My official title is "Code for a Better World Fellow".

Do you care about it?
I like the title but often substitute "open-data" in the title since many of my colleagues are not familiar with the Nike Better World brand.

Do you speak foreign languages? Which ones?
I took Latin in high school. I remember how to conjugate one verb but I don't remember what it means.

How long is your daily "bootstrap" process? (Coffee, news, email)
My day starts early, maybe 5 or 6 am. Before I get out of bed I listening to news and features on BBC World Service. I skim Twitter at the same time on a tablet. Mostly I want to know what people are talking about. If I find something in Twitter that requires concentration I email it to myself using a separate account for the purpose. I don't have regular work email on the tablet. That would ruin the experience. By 7am I'm up, drinking good coffee, and starting to work. By 9 or 10 am I'm at a desk somewhere. I have several offices.

Twitter
You have a Twitter handle? Why? Or why not?
@wardcunningham User IDs were running around a million when I joined. That makes me an early adopter.

Whom are you following in general?
Mostly I follow influential friends along with past and present colleagues. I appreciate good links and a few words explaining why I should look. I follow Tim O'Reily even though he tweets too much. I've dropped Scoble who tweets too much too. I like him, but Tim finds better content for where I'm at right now. I worked with @built a few years ago. Reading him is like watching Portlandia.

Do you have a personal "policy" for Twitter?
I'm proud to have 15,000 followers. I pay attention to what they want from me. I'm more likely to be retweeted when I recall some agile history or write a witty critique of agile today. When I get too far from agile I see followers drift away.

Does your company restricts or encourages you with your Twitter ussage?
My employers have been impressed that I have so many followers. I might pass along something from a company just because they asked. But when tweeting, I think of myself as working for my followers, not for any company.

I don't often read Twitter at work. I try hard to make my work more interesting than Twitter. Here's a tip: You can "subscribe" to interesting people at work by being valuable to interesting people at work. Its how we networked before networks.

Work
What's your daily development setup? (OS/IDE/VC/other Tools)
I like TextMate and Gitx. I'm learning Sublime for all the reasons that TextMate geeks would make that transition. In ssh I type the same vi finger rolls I did 30 years ago. I know vim is, um, improved. Some day I'll learn what else it does. Intellectually I should love emacs but practically it just doesn't stick. What I use says more about where I've been than what is best.

I loved Smalltalk-80 for 15 years. That's the longest I stayed with anything. 15 years was 5 years too long.

I pay attention when people blog about git workflows. Git gives people a vocabulary to talk about complex social interactions. There is gold in those posts mixed in with all the gravel.

Which is the tool providing most productivity to your work?
I tote a MacBook Air. I screen share into a few other macs that are too heavy to carry or too hooked up with wires to be with me.

I like Sinatra though I'm drifting to Node. I still write 20 to 200 character perl scripts at the command line which I convert to indented script files only when I'm done with them. Bash continues to amaze me. I saw <( ... ) in use once and had to call my unix geek friends to find out how that could possibly work.

I'm studying d3.js hoping to be expert. D3.js has lots of small examples that do amazing things. I'm finding every line takes a lot of thought. Its good thought though. There are sound reasons why every line is the way it is and it is good to know those reasons.

Your prefered way of interacting with co-workers?
I love to pair program and will give it a try with anyone. I get bored if I'm in a mentoring role. Don't confuse pairing with mentoring. When pairing you can assume both people bring something to the collaboration. I'd rather find my colleague's strength or passion and learn from them as we go forward together.

I meet a lot of great people at conferences. I especially like smaller events: either local unconferences where I meet friends of friends or elite workshops with high impact people. I like to ask people what they learned recently that they didn't expect to learn.

What's your favorite way of managing your todo's?
I'd rather not leave #TODO comments in code. I've seen code where every line is clear about what it does and thereby invites the next programmer to do more.

I'll write three or four things to do into TextEdit without saving. If I reboot before getting back to them, well, I probably wasn't going to do them anyway.

I work in complex solution spaces. When there are many approaches possible the shortest path to exceeding expectations rarely goes through meeting expectations.

I admitted to my last employer that of the 7-habits of highly effective people I'd only mastered two or three. I was exaggerating. I've never read the book.

When my wife travels she makes check lists for me. Things like feed the cats and bring in the paper. Once she converted that to a computer printout. I made her switch back to hand writing. When I check off her hand written notes I feeling like I'm doing something for her. The computer printout ruined that effect.

If you could make a wish for a job at your favorite company: What would that be?
I wish I could have worked at Xerox PARC in the '70s but only if I could know then what I know now. I like the Wikipedia Foundation and am glad to be welcomed there.

Java
You're programming in Java? Why? 
I find Java libraries hard to grok but likely to deliver when you finally get into them. 2D Graphics, for example.

I once wired the Rino JavaScript interpreter into Eclipse to make a Greasemonky like extension system. It could even dynamically load Java modules when it discovered that JavaScript wanted them. Every hook I need was in the libraries and documented too. Java, Rino and Eclipse all deserves kudos of that sort of attention to details.

I have a lot of respect for the JVM. It provides a widely available platform with memory and process abstractions that has raised the general level

I will admit to being drawn to less demanding languages, ones where "hello world" can be written in one line, or maybe two.

I like to judge a language by the density of leveraged operations. Smalltalk code would do two or three leveraged operations per line. Perl does one or two. C does maybe one if it is written in the old K&R style, much less now. Java is down at the same level as C: two or three lines for every leveraged operation. That hurts.

What's least fun with Java?
If I can't get the paths right in a half an hour I give up and go on to something else.

I'm no fan of XML either. It seems overused in many Java systems. I like to say that JSON is a representation while XML is a career path.

If you could change one thing with Java, what would that be?
I wrote a class called TypeAdapter in FIT. It was suppose to be the stand-in for the universal format converter that I just assumed every big project would develop. I'm still annoyed that it was so hard to write and that so few people understood the value of collecting this responsibility into a single place.

What's your personal favorite in dynamic languages?
I'm liking CoffeScript, mostly because it makes JavaScript's callback-style tolerable.

Which programming technique has moved you forwards most and why?
I try to make code look like it was easy. That's a sure sign that I understand what a programming language or framework has to offer and I've applied it to my problems well. I like to know the power moves but want to show that I don't have to keep using them to get the job done. Most influential was a week long class I once took taught by one of Dijkstra's students. We were told that we would just look at beautiful programs throughout the week but first he would teach us how to appreciate them. You can get a hint of what that week was like by reading Dijkstra's Discipline of Programming.

Making a new language is the ultimate power move. There are lots of ways to do it. Get to know them all A switch statement inside a for loop makes an interpreter. When you write that, ask yourself: what language am I interpreting?

What was the biggest project you've ever worked on?
I spent four years on WyCash, the first commercial software I wrote after working ten years in research. Year four of WyCash development was just as rewarding in a design sense as years one, two or three. The source code was large enough that it broke the source code manager. We had to delete a few lines to add a few more. But it still felt small. That was something. Relentless refactoring.

Which was the worst programming mistake you did?
I admitted recently that I always felt bad that wiki ran as a single server with a single database. I'm working hard on Federated Wiki right now to set that mistake right. Lots of people suffer with wiki markup. Wiki markup might be a big mistake except that people suffer with every other alternative too.

I programmed a computer once where programming errors could burn out transistors. I made plenty of mistakes but managed to reset the computer each time before anything smoked.

In college I worked as a student consultant. I once helped a researcher rewrite their fortran program to use extended-core-storage. I'd just learned about extended-core-storage by reading computer manuals. I knew our mainframe computer had it and it would help. What I didn't know was that batch jobs weren't allowed to use extended-core-storage so the work I'd suggested was a waste of time. I never got over that little bit of ignorance. To this day I have trouble starting a sentence with anything other than "maybe".

Sunday, February 12, 2012

Headline of the week: Jfokus in Stockholm!

17:54 Sunday, February 12, 2012 Posted by Markus Eisele
, ,
After some very stressful weeks since the beginning of the year, I am going to add another one. This one should be far more fun however :) It's Jfokus time in Stockholm and it's my pleasure to join the awesome line-up of speakers this year.
After a surprisingly short flight of about 2 hours I took the Arlanda Express to central Stockholm. This added another 20 minutes to the total travel time. What I like most is, that they have a strong commitment to caring for the environment. The electrically powered trains do not produce any environmentally harmful emission at all and all Arlanda Express trains have been powered by environmentally labelled electricity from renewable energy sources since the spring of 2001. Even if a resident told me, that it is one of the most expensive ways to get to Stockholm, I like this far better than using a car or even the bus.

The short walk around the hotel after arrival was fun. The Radisson Blu Waterfront is an awesome venue and the collocated Stockholm Waterfront Congress Center looks most impressive with it's blue lights in the evening. I took very few first pictures to kick off my flickr.com Jfokus photoset tonight. And I learned that there is an official Jfokus 2012 group on Flickr also! So, if you are curious what is going on over here, follow my twitter stream, the related conference account @Jfokus or the #Jfokus hash-tag via a public twitter search.


I wish everybody a wonderful conference! Looking forward meeting many many interesting people here! I'm honored to be part of it this year!

Tuesday, February 7, 2012

Heroes of Java - featured in Jan/Feb Issue of Oracle Java Magazine

16:55 Tuesday, February 7, 2012 Posted by Markus Eisele
, , ,
The latest Oracle Java Magazine issue is out since yesterday. Alexis already blogged about the main topic "tame the cloud" and the related GlassFish and Java EE stories. A great free (!) source of information and they have by far the best authors in the field.
I am glad to see my "Heroes of Java" series featured on page 10. It's an honor and I really hope that anybody is enjoying the series. If you have comments, wishes, remarks about it, let me know!

Some further thoughts about the OJM
Beside the fact, the the content of Oracles new Java Magazine is great, I still have some issues with it. I'm not sure if I already told them about, but if anybody from the OTN team is reading this, they hopefully know that this is meant as valuable feedback.

Make it a Text Based!
First of all, I don't like that it's all images. Not a single character to copy. If you are in need of even a single line, you have to open the "See all Listings as Text" page for the related article and search for the single line you are interested in. It's obviously easier to simply re-type it yourself. Makes quoting unnecessarily hard. Thank good you can directly click on links. But I even don't like this a lot

Give it a memorable Domain-Name
Why not http://www.oraclejavamagazine-digital.com/ ? Even if it is long .. but what happens, if you request it? You see the obviously Oracle internal login page. Yeah. Any way to get to the recent issue from there? No. Google seems not to know about http://www.oracle.com/javamagazine/ and always poops up the Oracle internal access point first. Anyway, I like short and memorable domain-names a lot more.

Make it load faster! Or give it a Progress Indicator..
Woohh. I don't know if anybody in the US has a T1 or comparable internet cable, but if you are working with anything slower or slimmer, all you see a lot is a half grey screen. And thankfully this happens with any single click. Zoom in or out. Or change a page via the index. Or do anything else. From time to time the whole screen stays grey for me for over 4 seconds.

Rethink your Source Code License!
Let's look at the license down the code. It's "Copyright 2012, Oracle Corporation". Thank you Oracle. What about CC-BY 2.0 ? Or even another OSS license? Come on! It's about sample code not the whole FMW!

Printing != Downloading
As some other tweets already mentioned. Printing isn't downloading a PDF. At least not to me. There should be a simpler way to do this. The fact that it needs three open browser windows (original, print-pdf and printing dialog) simply feels weird to me.

Make the registration process better
I know Oracle is willing to get something payed back for the free issues. But Do I really have to answer all those questions? And this obviously is a problem for myself only: but I still don't get any confirmation emails timely. Isn't there an easy way getting it into the whole Oracle SSO stuff? Why not simply open it for OTN Members?

Advance the Mobile User Experience
I know, @oracletechnet already tweeted about an upcoming iPad app for the Java Magazin. But ... I have a lot of other devices. Think about Kindle, BlackBerry. I would love to have a broader device support.