After the GeeCON 2012

Whoa, those few days of GeeCON – Polish Java conference – just passed way too quick. A lot of great speakers, pretty good organisation and the overwhelming Java climate. Yep, it’s geeky or even nerdy but – what the hell – me like it! ;-)

GeeCON Logo

But for all of you who was not able to attend this conference – it consisted of 3 parts:

First three days were held in Poznań’s Multikino 51 and the last one was held in the Cognifide company headquarters.

Overall organisation

The first GeeCON I attended was last year in Cracow. I was not able to attend the one in 2010 (which was held also in Poznań.) At the beginning of this years conference I was a bit afraid about the space which will be able to seat approx. 600 attendants. I mean – I know how it looked like in Cracow – large entry, large hall, a lot of space and still – during the lunches it was terribly crowded. Now the Poznań’s Multikino 51 is a much smaller place, so I couldn’t imagine how this can be properly organised.

Luckily, the organisers did imagine that and it worked quite well!
In the main hall there was something like a “snack table” with a lot of stuff. And I really mean a lot – so much sugar must kept us awake for 8 – 10 hours of the conference day.

There was all kind of stuff – tea, coffee, apple and orange juice, water, fruits, doughnuts, biscuits and so on. I couldn’t imagine anyone complaining about this part of the event.

Registration

The sessions were held on cinema screens (up to 5 tracks at the same time), so there was no problem with finding a seat. As far as I remember, only 4 talks were “common” ones – these were sessions where you didn’t have a choice and usually had a guru presenter like Bruce Eckel, Ivar Jacobson, Gavin King or Kevlin Henney.
In other talks, you needed to pick one track you’d wish to attend to and believe me – sometimes it was quite hard to decide where would you want to go and who you’d like to listen to. All (or at least majority) of the sessions were recorded, so I do hope that this year there will be a published videos from the session I wasn’t able to attend to but still would like to listen to.

There was a difference in sponsors visibility between this year and last year conference. Being more precisely – this year sponsors were not present during the University day. Besides that, there were definitely less prizes to win than last year (where you could win a lot of books, a smartphone, netbook or Xbox 360). This year, the sponsors didn’t attach the importance to the prices / souvenirs. I know that Poznań’s people are one of the scrooges ones (hello Scotland!) but gimme a break – we are spoiled after GeeCON 2011! Well, at least there was a drawing of few Diablo 3 CD keys and books, so big thanks to the GeeCON team.

The lunches were held in separate rooms and were definitely of a better quality than the last year ones. A lot of choices (4 different dishes) and very tasty – that’s how I’ll remember it.

A lot of overall info up to this point, but what about the main content of the conference?

University Day

University day differs from the conference mainly in session lengths – it’s 120 minutes instead of 60. I’ve attended Arun Gupta and Pete Muir session entitled “Java EE 7: The Magician’s Number” and it was rather theoretical introduction to Java EE 7. Main theme of the next EE is cloud and there are no doubts about that. Some improvements in JSF, JPA, some new stuff in CDI and a bunch of new specifications. Some interesting things about changes in EJB or the new specs weren’t discussed, so I think I’d just need to skim over the specs by myself. Nevertheless – it was a very decent talk – just as the university day one should look like.

Pete Muir and Arun Gupta

At the end I went to the Nikolche Mihajlovski’s “Innovative and Pragmatic Java Source Code Generation” talk. After about 10 minutes… well, don’t get me wrong – Nikolche can have a great knowledge, but the session itself was boring and monotonic. I just couldn’t stand it after 6 hours of other talks, so I decided to move to the other session. The point is, there was no choice at all – the only available session was Bruce Eckel’s “Atomic Scala”.

Just to give you a context – I really hate declarative / functional programming. Mainly because I just soaked into the imperative programming it’s very hard for me to be “reborn” in the declarative programming paradigm. That being said, it was “loose-loose” situation – monotonic Nikolche or functional Scala.
But then again – hey, it’s Bruce, a Java guru, maybe it won’t be so bad at all?

And that’s why it was one of the biggest shock for me. I tried to listen about Scala, I tried to read about Scala. The point is, all those sources were really discouraging. I really don’t like when you start reading a book or an article that and the author in first paragraphs bashes all you know about programming or the habits you have. There are people who are motivated by such talk – I am not one of them. I couldn’t find any good, objective source of knowledge about Scala – all was like “we do this better than Java”, “we do this better than Ruby”, “you will be more productive because of this fantastic one-liner” and so on.

But Bruce’s talk was different. It was a great introduction to the Scala world – all from the beginning, discussing what is val and what is var, simple code examples and how you can gently move to the Scala. One step at the time – learn to walk before you’ll jump to Akka. Add Bruce’s calm speech to that and you’ll end with really good talk. Even if Scala tricked Bruce few times during the speech, it wasn’t bothering me. I must say that I’m even a bit interested about Scala right now – it just proves that it’s all about proper introduction to the new language.

Bruce Eckel at GeeCON 2012

Once again – Bruce’s talk was my University Day’s favorite.

Conference

Day 1

Starting at 9.00, last lecture ends at 18.20 = long day.

Bruce Eckel’s session

The conference started with three sessions which were aimed for all attendants. Firstly Bruce Eckel talked a bit about hybridization and different programming languages on the JVM. He also emphasized the overall need for focusing not only on IT but also on different subjects because the divergence is very motivating. It wasn’t really the best opening keynote at all.

Ivar Jacobson FTW!

Fortunately, second session with Ivar Jacobson, rescued the situation. Sometimes you can just recognize a good speaker and definitely Ivar is one of them. At first he seemed to be a bit misguided but after few minutes – he really kicked asses.

The main idea of the session was about finding your “kernel” in whatever you’re building / doing. The “kernel” is a common part of your idea, a very core of what you want to achieve. If you have properly designed and defined it, than you can build additional services on top of it. You shouldn’t even try creating a full-blown application from the beginning. Start small, focus on the most important parts of your project and only when you’re sure it’s well designed, tested and functionally capable – then go big. It’s quite obvious when you hear it, but it’s also so easily undetermined!

Ivar Jacobson at GeeCON 2012

As every good university speaker, Ivar ended his lecture by telling a joke about two idiots thinking about how to be successful in life. A good ending joke helps the audience remember the lecture. Dr Ivar- it was a great piece of talk, so kudos to you!

Gavin King’s Holy Grail – Ceylon

Aaah, yes, Gavin King. If you’ve ever read his blog you have some idea what kind of person he is. In my opinion, he’s very controversial, intelligent and arrogant.
Basically the session was about bashing Java, Scala, C++ (Ruby? don’t remember but if it was mentioned – if it was definitely also bashed.) Tremendously biased session – everything is bad, only the Ceylon is good and properly designed. I am not impressed, I am not interested, I am not going to go with Ceylon. Enough was said already.

Adam Bien’s Q&A Sessions

Then I decided to go for two Adam Bien’s talks – “Java EE – Or Who Cares About WebContainers?” and “Interactive On-stage Hacking With Java EE”. Now it was really refreshing after the Gavin’s bashing. Both Adam’s sessions spawned so many questions that these talks were more like questions and answers ones. It wasn’t a bad thing – a lot of interesting things were discussed regarding the usage of the web containers, full application servers, importance of the deployment time and so called “lightweight” solutions.

I agree with most of the things discussed by Adam but I don’t think everybody understood what he said about the third-party libraries. His position was not to forbid or discourage using third-party libraries to solve your problems.
The point was that every additional dependency on third-party library should be firmly stated and discussed with the rest of the team. Every dependency will need to be maintained.

As a side not, Adam suggested to add (or save somewhere) a source code of third party libraries you use. You should do that because there might be times when you need to find or solve a but in the library behavior and the source code is no longer available in the internet.

So, rephrasing – using apache-commons for your project is not a bad thing. A bad thing is when you use apache-commons and cannot explain why did you need it in the first place, or using it just for one, minor equals(-) or toString(-) implementation. Just make sure all your decisions are rational and you’re not doing “Article Driven Development” which is changing your code or using third-party libraries just because you’ve read a great article about it.

Discuss it with the rest of the team and document your choices.

GeeCON Duke

Rest of the Day

Then it was Pete Muir with OpenShift presentation. Pretty nice and easy way to develop your Java, PHP, Ruby, etc. applications and deploy them into the cloud (in fact, as far as I remember, the Amazon’s EC2 is under the hood.) Nice, compact talk by Pete, however I’ll just wait until the OpenShift will not be so heavily developed – it’s not to be used as a production environment at this moment.

The end session was “Mastering Java bytecode with ASM” by Anton Arhipov. The beginning was quite interesting (basics of the bytecode generated by particular Java code) but then we jumped straight into the ASM. Yeah, it’s nice, verbose, a lot of constants to be used and at the end – you’ll generate your own bytecode. Nice. Don’t see any particular use-cases for myself, but – it’s good to know what is this all about.

At the end the session, during the Q&A part, there was a question from the audience which was something like: “Having an AspectJ and stuff like this – how often do you use ASM in your everyday job?”. Anton answered “Everyday”.

Well, no surprise here – JRebel must be heavily using the ASM, so it’s an everyday job for JRebel guys. But how many bytecode manipulation products are there? Majority of the Java developers will end with Spring AOP, Java EE interceptors or AspectJ at its finest for all the things they need to achieve. The point is – it’s highly specialized tool.

Day 2

It was a great idea to start the conference at 10.00 instead of 9.00. Guys this one hour of sleep is worth a million!

Morning Talks

First, I’ve chosen to hear Pavel Lahoda’s “Android Burning Questions”. He mainly talks about some intricacies of the Android development, optimizations, what are the differences between XML and Java APIs for some particular tasks and so on. It was definitely not a tutorial for Android newcomers. One interesting thing I’ve learned is the dependency injection in Android – a RoboGuice. Although its performance is questionable, it’s nice to see this feature in Android.

Later on I’ve chosen the “Optimizing your cloud for millions of connections” by Zbynek Slajchrt. It was about the Avast antivirus services infrastructure. Quite interesting case-study showing why did they decided no to go with any Java EE web container and use Netty instead. I would like to hear more about the overall pipeline, how and why did they develop it in such way and a bit less about how to write handlers for Netty. Nevertheless, it was a decent talk.

Afternoon talks

Arun Gupta talked about “PaaSing a Java EE 6 Application”. He took an existing Java EE application and deployed it into the local cloud using Glassfish 4. Easy, nice, fast and quite powerful. I’m very curious how the Java EE 7 cloud features will be adopted by the community.

Just after that, I listened to Keith Braithwaite talk about “Agile Requirements by Example”. This was the first time I could listen to Keith and I must say he is a great speaker. He talked about importance and characteristics of User Stories (and User Stories Mapping), and appropriate testing approaches. Very nice and easy to listen. +1!

End Talk, Cool Code

The ending session with Kevlin Henney was a masterpiece. Really, this guy have an amazing speaker’s gift. He talked about the importance of reading the code (which is much harder than writing), very expensive errors that occurred because of the unreadable code or untested, unverified behaviour (Arianne 5 fireworks!) He pointed out the importance of “cool” code – code which is remarkably compact so it starts even to fascinate us. What can I say more? I think that if Kevlin will be the next year GeeCON speaker, I will go to all his talks!

Crowd on the common sessions

Summary

So, the GeeCON 2012 ended; I found it to be really motivating and inspiring. It were great three days. Despite that the last year edition was a slightly better one, it was still definitely worth its price.
Because of some preparation to my wedding, I wasn’t able to attend the Open Spaces with Bruce Eckel. However, as I could see on Twitter, it seemed to be a great success. Hope it’ll be in the next year’s edition as well!

If you’d like to see a photo gallery from the event, take a look at the official GeeCON 2012 gallery.

Aaah, and a must-have souvenire photo; cheers to Mieciu and Tomek!

Geeks on GeeCON!