Øredev 2011 in the rear-view mirror – Part 1

Øredev logo

This is the first part of my sum-up of Øredev 2011. Read more by following the links below:

I will label each session with day:order to satisfy all structure freaks (myself included) that read this.

About Øredev

Two weeks ago, I attended to the Øredev Developer Conference in Malmo, Sweden form Wednesday to Friday. It was truely inspiring, and I would like to share my experience. I will write about the sessions I attended to, the ones I missed (but watched on screen outside the conference rooms) and the ones I heard a lot of good stuff about, but either missed or had to opt-out.

I have deliberately waited two weeks with writing this summary, since I wanted it to be objective and not influenced by the oh-so impressed mode that I was in directly afterwards. I will sum up the sessions over a couple of days, so my experience of Øredev will consist of a number of posts. I will label each session with day:order to satisfy all structure freaks (myself included) that read this.

Finally, before beginning to write (quite a contradiction), I just want to thank my employer – Cloud Nine – for deciding to send me as one of three. It was a fantastic experience.

1:1 – KEYNOTE: Alexis Ohanian – Only your mom wants to use your website

After an early morning flight, we arrived at Øredev a bit too late for the morning’s keynote with Reddit co-founder Alexis Ohanian. The doors to the keynote were closed, but the keynote was displayed on screen just outside, so we managed to catch a short glimpse of it.

Alexis talked about how to convince people that your product is worth their precious time, and that companies tend to ignore users experience…and thus their customers. He mentioned some interesting scenarios that we have gotten used to as Internet users, but that does not deliver good experience, such as online airline ticket search engines that return a huge amount of tickets in a paginable list.

I attempted to make out the most of the real-time illustration that was being made of the keynote (and of all other keynotes), but will watch the video once it is released instead. People who attended it told me it was quite good, although Jeff Atwood threw Reddit a pinch during his Friday keynote – more on that later.

1:2 – Jon Skeet – C#5 Async 101

My first session was one of many at Øredev, where a distinct British, Scottish or American accent, together with an almost over-the-top engagement, seem to be two of the key-criteria to be invited as a speaker (more on this in my final conclusion). Jon was very inspiring, though, and demonstrated the new async keyword, which will be shipped together with C#5.

Jon talked about how async operations have been around since .NET 1.0, but how they always have been jumpy and resulted in spaghetti code. I agree, although working with async operations in JavaScript over the years have made me used to handling async callbacks. The new async keyword, though, together with the new await keyword seems like a clean and promising tool for writing async operations.

The code becomes really clean. In fact, it looks just like “ordinary” non-async code, with a few new keywords. Another really cool thing about it all is awaits are potential pause points. If .NET has all the data it needs to return a result, it will do so without going into async mode. All this, while the code looks almost exactly the same as it would do without the asyncs and awaits.

Instead of throwing us a bunch of examples of how to use this new feature, Jon showed us a few, sure, but then also took the time to actually show us how it is implemented and how to use the Task classes in C#4. As a developer, I found this extremely entertaining, although I feel a bit disgusted at how low my opinion of “entertaining” has sunken over the years. Can’t wait to try it out, though.

Oh, and one final thing. Jon was very clear about pointing out that async != parallell, so maybe I should forward that as well 🙂

1:3 – Gary Short – .NET 4.0 Collection Classes Deep Dive

This session was one that I found really interesting while listening to it, but that I afterwards doubt brought me that much to work with in my daily life as a system developer. However…

…once more, a charismatic developer with an attitude…and a distinct Scottish accent. You have probably guessed it already…the fact that I have a hangup on the accents is that I deeply envy people with Scottish (http://www.youtube.com/watch?v=KrCMB7N5V1s) or British (http://www.youtube.com/watch?v=Ii2ZyhWvxos) accents. If I could have one wish come true (sorry, peace on earth), it would be to have one. So, now you know.

So, yeah…Gary had one for sure…and man, could he talk. He spoke a lot about list operations and how NOT to populate a list. For instance, did you know that when you add your first item to the list, its capacity grows to 4…and that when that is no longer sufficient, it grows to 8, then 16, then 32, 64…? Well, neither did I. Gary suggested to initialize the list with an integer parameter, e.g. new List<string>(10), which will cause it to grow with a fixed intervals when needed.

He also spoke about not using Add in a loop, that AddRange is better than sequential Add operations and how XAt is better than X (RemoveAt instead of Remove etc.) since it executes at fixed time, no matter how many items you have in your list. Combined with graphs of how much slower certain operations work when the size of the list grows, Gary really exhausted the subject. He also went through sorting and how the various sorting algorithms perform and ended the session by going through various collection types.

So, sure, Gary knows a lot about collections, and no one can blame him for not delivering what the title of the session indicated…but I already knew about most of the stuff and feel like I maybe should have attended another session. For people not knowing about the various collections, though, I am sure it was a great run.