In the first day’s of June I went back to Amsterdam because one of my friends was one of the organizers of the 2012 European Ruby conference. Euruko is one of those pleasantly strange conferences that we have in the Ruby community. Single track, stunning location and interesting speakers make for a good conference spread over two days and some nights.
The night before
Even though I’m kind of local to Amsterdam compared to most of the GitHub boat party attendees I had a lot of fun. Not really with the boat trip itself but with the people on the boat. Talking about Riak, distributed systems, high traffic load balancing and why the houses in Amsterdam are leaning forward. I was really impressed how the organization got 8 boats filled within the short period of time they had to do it.
So, boat ride over, let’s get to the pub! We did and I’ve seen some very highly respectable people act not so respectable (I’m not naming names but you know who you are). Interestingly I met new people from all over. Germany, Spain, Austria, Italy, US, UK, Poland, Russia and others were all represented (I did miss out on the French though…). Anyways the night was late enough so I needed to take a cab back to my temporary place of residence.
Day 1: #BobRoss and Balloons
As any good Ruby conference we started the day with a keynote by the father of Ruby. Matz gave an interesting talk about his new vision on mRuby and the direction that Ruby 2.0 is going in. Not really anything new to report here but the vision of a Ruby that can work on any hardware platform is interesting. The modularity that mRuby can be compiled into allows this by just using the parts that a certain application needs. Even though the memory usage of mRuby is still relatively high compared to other languages it is much more complete as a language.
After the break the talks started. Sean Cribbs from Riak talked about concurrency. As the applications become bigger and we do more things with more data concurrency in ruby can become a problem. Sean elaborated on how with the use of Fibers and Thread Pools we could solve the issues in out applications. After that highly technical talk Vincent Marti gave a very passionate talk about why everyone should run on Unix based systems because Ruby is originally written in C and Unix is very good with C. Ruby is unlike a banana because a banana is not Unix. Basically it comes down to the JVM. It is compared to Unix a very complex machine and therefore very hard to scale. Even though jRuby is better in many ways it has scaling issues that come from this core principle.
With a lunch in our stomachs we set ourselves back into the main room of the Tuschinski. Eloy Durán talked about the creation of CocoaPods for Objective-C. WAT!? This was a Ruby conference right!? That is true but one of the things the Ruby community is good as is taking over other languages and applying it’s own ideas. CocoaPods is basically Bundler for Objective-C and that is kinda cool! Also was the continuation of his talk with a choir sitting in the audience that started singing randomly and balloons being thrown down from the top balconies. One of those “This community is pleasantly disturbing” kind of moments.
Rick Olsen from GitHub took the balloon filled stage to talk about ZeroMQ. A concurrency transport layer, will look into it as it seems to be fairly easy to do very complicated things and solve complex problems. Elise Huard came on after Rick and talked about Garbage Collection within Ruby and the way the problem is solved within the different implementations of Ruby. Rubinius has a very interesting GC mechanism called generation GC that basically splits it into 4 levels, almost instant sweeping, fast sweeping, normal sweeping and long sweeping. During day2 Charles Nutter showed the result if that in real time with a benchmarking tool that showed these different generations of objects in the application. Cool stuff!
After the afternoon coffee break Roy Tomeij took the stage to talk about “the joy of front-end”. This was meant in a little bit of a funny way but he had some good points about building modules in the front-end. Although for me most of the html5, css3, sass and CoffeeScript examples were far from new for me I did enjoy the talk and some of the more high level ideas he had about front-end. He also had made a nice reference to Bob Ross where he said his paintings were always different but he used the same modules for all his paintings; “In front-end we should all be more like Bob Ross”. He was also responsible for #bobross being a trending topic on twitter in Germany that day.
Martin Rehfeld from Wooga closed off the day by talking about how Wooga was scaling it’s billions of API calls a day with the use of Erlang and Ruby. They are working with delayed and batched requests. So, instead of; “request => response <=”. It is more like; “request => request => request => response <=”. This is way less requests and responses but is still a very big load to deal with. Even with this advanced delayed processing in place they are hitting the limit of the technology. There were some lightning talks but I found they were more like recruiting talks.
Dinner for me was interesting as I got a ride with my organizing friend to the Euruko organizers headquarters. Had some Texmex, talked to a bunch of interesting folks and got to charge the RFID scanners that were all over the venue. At the end of the day Club Judge organized a party at Club Home near the venue. Even though I only stayed a couple of hours I had some time to hook up with a former Jooster (Andrea Campi) and got to talk a bit to Terrence Who would be talking about Bundler the next day.
Day 2: clash of the runtimes
Okay, I was late for the day so I missed the keynote by Peepcode’s founder Geoffrey Grosenbach (still kicking myself for missing it). Anyways I walked in just before Mitchell Hashimoto started talking about the boring parts of library development. And he had some good solid tips on what we know but we always forget. Like, “Don’t make complicated and specific DSL’s when a plain Ruby solution would do”. Using sane standard ways of doing things is a good thing for library developers, don’t be too fancy about it. Also naming came forward; “why create complex error messages while a comprehensive error class name can tell a lot about what the issue is”. All sane and good principles by Mitchell.
With both Charles Nutter in the room and Brian Ford on stage Brian kicked of the clash of the run-times. Because of course Rubinius is better than jRuby, it uses Ruby and not Java! A fun way to start the morning. Bruno Aguirre took to the stage after lunch as an old man. He wanted to talk about the core principles of development, the ones we can learn from the past. “Prototype first, optimize later”, “keep it simple and stupid” and “Design for the future, it comes very fast” were all core ideas in his talk. He ended with the nice phrase; “learn from the past, watch the present and create the future”.
Konstantin Haase is a developer on TravisCI, Rubinius, Rack, Rails and MRI. He’s been around and has been right in the middle of the Ruby community for years now. But he wanted to talk about other languages at a Ruby conference. So he did. He asked the question; “what is FULL Object Oriented?”. There are only a few and Konstantin pointed out exactly why. To talk about the internals of Bundler and “Y U SO SLOW?” Terrence took to the stage. and it is basically due to the way gems are currently build. One depends on other and those other depend on others. Just getting that list from rubygems.org takes some time. Especially when using complex dependency chains. In the future this will change with the newer versions of Bundler as dependency information will be pushed higher into information provided by rubygems.org. In Bundler 1.2 it is planned to have better local gem development options and to package bundles. The “Holy grail” of Bundler is being talked about for version 1.3. Removing the need to do ‘bundle exec’ for every command, not sure though it will be done!
Last but not least Charles Nutter went on stage to tell why jRuby was better than all the others… in most cases… jRuby really uses and relies on the JVM and that shows in the speed. The JVM is a well developed and well progressed run-time and it has it perks when standing on the shoulder of this giant. After Charles there were some smaller lightning talks and they were a lot better compared to the day before so the organization got the hint. The last talk was given by one of the organizers as he created an RFID system to track conference visitors during the day when they checked in. During the conference everybody had a small RFID chip in their name tag that they could use to check in at place. He presented some of the basic stats like most check-ins, most divers check-ins and most coffee check-ins. A fun fact was that the Sister of one of the organizers that was present during the whole conference got most by miles; “She must have been pretty bored”.
At the end of the conference there was a voting for the location of the next Euruko. Athens was the winner! So, see you next year in Athens!