Monday, February 18, 2013

JFokus 2013: First confrence day

This was my first time at JFokus but hopefully not last. I wasn't quite sure what to except. I had heard good things about the confrence and knew that it was quite big. It was more and better than I expected. There were over 1500 attendees and great session from beginning to end. If i get the opportunity to go again I'm most definitely going again.

On the first day I attended six sessions. I'm not going to write all my notes here but I'll try to give good summary of each session and the rest can be read from JFokus website where you can find presentation materials for both days.

Taking development to the edge

This was the keynote of JFokus embedded, M2M & internet of things miniconfrence.

In the future everything is connected to each other and to the internet by everything meaning absolutly everything. Cars can share information of traffic, houses can tell if all the doors are closed and locked or the are the lights on.

Smart homes didn't succeed 10-15 years ago because automation was expensive and possibilities were unknown. In the future smart homes will be true but instead of full blown automated homes the automation will take care of the simple things. Lights can controlled automatically depending on movement in rooms or how much sunlight shines through the windows. When nobody is at home the lights can be switched off, temperature can dropped by adjusting central heating and home surveillance system be turned on.

For all this to be true and to keep the networks running without massive break downs embedded systems need to able to turn on and off their network traffic so that they don't send status updates every minute or so but when there's actually something signicant to report.

Today there are about 200 000 programmers in the embedded field but in the future there are going to billions of embedded devices. So who's going to be designing and implementing all those devices and their software. There's going to be a huge need for embedded programmers in the future and Oracle is going to respond to this with Java and their aiming to #1 platform of embedded devices. JVM already works in embedded devices but Oracle is going to expand this support by bringing Java SE APIs to Java ME.

By attending this session I also got a free Raspberry PI and hopefully I have some time in the future to try out some embedded programming with RPI and Java.

Design patterns in modern JVM languages

Very well presented session about patterns by Venkat Subramaniam. The most important thing to remember from this was that patterns are communication between people a common way to describe how something is done so don't force your code to patterns. I didn't have to make much notes abot this one because I was so concentrated on observing.

Unofrtunately there aren't anything about this session on the JFokus web site either but here's a few good patterns he demonstrated: Lambda expressions, execute around and function composition. And these are a few you shouldn't use: Cascade pattern, Java 7 ARM (automatic resource management).

Continuous delivery: From dinosaur to spaceship in 2 years

Story of how SAP's SAP ID Service department brought their tools and methods to this day from Java 1.4 and waterfall methodology. This was a ok session nothing bad but also nothing amazing. I don't think I have anything say that you can't find in the presentation material.

Large scale automation with Jenkins

Introduction to Jenkins plugins that makes Jenkins more than just a CI build tool. Kohsuke Kawaguchi introduced Jenkins plugins for variuous situations like parameterized builds, naming builds, virtual maven repository and some for visualizing build workflows and pipelines. If your using Jenkins or evaluating it I really suggest that you look through the presentation material.

Howto do kickass software development

Great non-technical talk of howto create good software.

So why to deliver kick-ass software?

To have happy customers of course.

Howto know that you're doing the right thing?

Fake the software first, do a pretotype e.g. do paper models of web site and see how everything fits together. Constantly gather feedback and remember to answer to the feedback and don't let the project manager filter the feedback but go through the feedback in the development team and let the developers answer.

What about kick-ass development team?

Traditionally developers are one team and QA is another break this! Make developers test each others code and practise this. Do pair programming with developer and tester or let developer do the testing and tester do the testing and compare notes.

Some other things you can do to improve

Automate builds and testing. This gives you the opportunity to fail fast and to share artifacts. Run your tests concurrently to run them faster. Have a build stategy for unit tests and for performance tests. Examine the statistics of your code, builds and tests.

Howto fail a software project fast and efficiently

This presentation listed almost all the possible things one can do to ensure that a project fails. I can't summarize this presentation because everything in the presentation was important. This is something everybody involved in software development at any level should read through. When you read it through remember to negate everything until you see the stop sign.