GeeCon 2014

I’ve spent the last three days on GeeCon 2014. I must say I become demanding when I go to conference, so my opinion is becoming more critical.

Basically the conference was good. There was small problems with WiFi, venue wasn’t in the city center (imagine 1000 peoples ordering taxi or getting to the local bus), but generally it was ok. Most of the talks were good. There is one thing, that I am really happy about. I made a lot of new connections. This is the aspect that push me to the next edition of GeeCON :)

I really enjoyed the afterparty at ‚Stara Zajezdnia’. This place is a local brewery, so we drunk very good beer. Also we had opportunity to take a tour with experienced brewer, so I also learned new things about brewery. Thus GeeCoin game, I also meet new people ;p

There was not any feedback system, so this is my feedback. Lets make an talk about hobbies or very light topics which will take 30 minutes after the dinner. I would like to listen about how take care of you health when working all days with computer, how to make a beer, something about motorization or photography. I need a longer break after the diner with soft topic.

I’ve selected talks, that I think was good and which I would recommend for my friends (excluding keynotes):

  • All Sam Newman talks about microservices. Just must watch or read a book.
  • Josh Long talk about Spring, because live demo was exploding with energy.
  • Tom Bujok with ’33 things you want to do better’, but only the first part. Second part was to obvious for java developer with some experience.
  • Kevlin Henney with ‚Seven Ineffective Coding Habits of Many Java Programmers’ for great preparation of content.

Thats it. See you next year.

CraftConf 2014

There was a ticket to CraftConf to win on WJUG raffle. Maciek Górski win this ticket, but he couldn’t go, so he gave the ticket to me :) I was so happy to go to this conference. 

This was three days conference, one day of workshop, two days of university. The ticket I won was for university. At the moment there wasn’t any space left to register on workshop that I was interested in, so I wasn’t present at the workshop.

The day before the conference, there was five meetups:

  • Budapest Agile Meetup Group.
  • Budapest Database And Big Data Meetup.
  • Budapest DevOps Meetup.
  • PHP Meetup Budapest.
  • Frontend Meetup Budapest + UX Budapest.

The speakers on those meetups were conference speakers. They must have very good communication between those groups and conference organisers, to organise those events :)

My meet up was in ‘Prezi house of ideas’. Prezi is a company started in Budapest. They have great auditorium, for about 200 geeks, where you have place to eat pizza, drink bear all the time, beamer is ready to use and speakers just work. Lets look at the photo:

Prezi

I feel confused when I entered venue. There wasn’t any tips (arrows) on how to reach the registration desk. Next was the conference room that haven’t been signed. So on web page and on badges, there was order: MainRoom, Room1, Room2. In the venue there was three floors, so many people made an assumption that floor 1 is a MainRoom, floor 2 was room1, floor 3 was room3. It was wrong assumption because MainRoom was floor 2. After first session, arrows appeared on the wall’s. For me, it was only one thing that was bad on this conference. 

Let investigate conference bag. 
I have found, three good gadgets in conference bag:

  • Headphones from e-pam. All conference session’s were transmitted online. If I wanted to switch the rooms, I used my computer and headphones to make a sneak peak preview of the other presentations and decide where to go. It was so great ! I did it only twice, because presentations was generally awesome. 
  • Phone cover from yahoo. It was raining all the time in Budapest, so this thing was great, because you could use your phone on the rain.
  • Sugru from Google.

 

GiftBag

So how about main room? 5 big screens. One for slides, two for camera, two for twitter. Makes an impression. 

Main room

For questions to the speech we used sli.do. Whole event was led by one person, who did it great. I remember following sponsors talk Ericcson, Misys, Yahoo, T-Mobile, JetBrains, Epam and maybe more, but I fall asleep. One more fact. 20% of the speakers was woman. Great achievement.

I make about 500 lines of notes. I think I never noted more before. I probably never ever read them again, but this help me remembering things. 

I can distinguish three kinds of topics that was on conference. 

  • First are about motivation, passion, craftsmanship. Those kind of of lectures makes you to think about why you do.

  • Second group of talks were about architecture or similar things. Those kind of of lectures makes you to think about how you do. 

  • Third group of talks where about specified technique or technology. Those kind of of lectures makes you to think about, what you do.

Talks are becoming available at: uStream. If somebody ask me to pick three best lectures (except keynotes) I will point at:

  • Jackstones: the journey to mastery - Dan North (Dan North & Associates)
  • How I Learned to Stop Worrying and Love Flexible Scope - Gojko Adzic (Neuri Consulting LLP)
  • Functional Reactive Programming in Elm and JS - Evan Czaplicki (Prezi)

You may ask, why those three? First two are simply great in every word. The third is about passionate speaker. Im do not like front-end and things like that. But Evan, when he presented Elm language, there was a message “I believe in what I am doing” and it was great.

How about networking ? I met geeks from Finland, Germany and even from Australia. After parties helps with this a lot :) 

To summarize. Why to go to CraftConf 2015? Because this conference is a good therapy session. 

Photo credit

New methods in Map.Entry comparingByKey and comparingByValue

JDK 8 is still new and hot. I have explored some new methods in Map.Entry interface, to sort objects.

Image that we have following collection:

Initial data
1
2
3
4
5
Map map = new HashMap<>();
map.put("Kawasaki", 3);
map.put("Honda", 1);
map.put("Norton", 5);
map.put("Moto Guzzi", 2);

There are four new methods:

  • comparingByKey()
  • comparingByKey(Comparator<? super K> cmp)
  • comparingByValue()
  • comparingByValue(Comparator<? super K> cmp)

The method names are self-describing. If we pass different comparator, we can get different behaviour.

Comparing by value

If we want to sort by value with default behaviour (ascending), we can do something like this:

ComparingByValue
1
2
3
4
5
6
7
List<Map.Entry<String, Integer>> comparingByValue = map
.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toList());

comparingByValue.forEach(System.out::println);

As a result, we get a list sorted by values:

1
2
3
4
Honda=1
Moto Guzzi=2
Kawasaki=3
Norton=5

Comparing by key

If we want to sort by key with default behaviour (ascending), we can do something like this:

ComparingByKey
1
2
3
4
5
6
7
List<Map.Entry<String, Integer>> comparingByKey = map
.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toList());

comparingByKey.forEach(System.out::println);

As a result, we get a list sorted by keys alphabetically:

1
2
3
4
Honda=1
Kawasaki=3
Moto Guzzi=2
Norton=5

Comparing by key with comparator

If we want to sort by key length, we can pass function as a comparator,  Then we can achieve something like this:

ComparingByValue with comparator
1
2
3
4
5
6
7
List<Map.Entry<String, Integer>> comparingByValue = map
.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey((String s1, String s2) -> s1.length() - s2.length()))
.collect(Collectors.toList());

comparingByValue.forEach(System.out::println);

As a result, we get a list sorted by keys length:

1
2
3
4
Honda=1
Norton=5
Kawasaki=3
Moto Guzzi=2

Photo credit