Öredev 2011–My Summary of Day 1

Today, Wednesday, was day 1 for me at Öredev (there were two tutorial days on Monday and Tuesday which I did not attend). It’s been really great so far, so thank you Active Solution for sending me. I have taken tons of notes so hopefully I can squeeze all of those into an interesting summary. It started with a fun keynote from Alexis Ohanian, a co-founder of Reddit, about starting a company and delighting your customers. And ended with a thought provoking keynote by Neal Ford from Thoughtworks entitled the Abstraction Distraction. Very relevant for all programmers, as we work daily with abstractions and most (or all) of them leak. I absolutely loved his onion skin api concept. He used Active Record in Ruby on Rails and Git as examples, the idea being that you can used Active Record at the highest level for 80% of all cases but for the other 20% it leaks the layer underneath in a good way so that it is easy to dive directly into writing SQL if needed.

All the sessions were good but I think my favourite session was Christian Johansen’s session on Test-driven Javascript (see review below).

So here is my summary in chronological order of all the sessions I attended.

C# 5: Async 101

Jon Skeet investigated the new async feature keywords coming in .NET 5. He did this by using following the spec for .NET 5 and implementing it himself using .NET 4. Impressively geeky. Check out his blog series describing his EduAsync project. Jon is very English in a Black Adder/Monty Python fashion which when combined with the geekiness of deep-diving into how the C# compiler works, made for a strange and interesting session.


Yehuda Katz, a core committer on the jQuery, Ruby on Rails and SproutCore projects, gave an introduction on just SproutCore. SproutCore is a Javascript MVC framework and a competitor to projects such as Backbone and KnockOut.js. Yehuda was pretty low-key and took the programming approach to showing off SproutCore. He had a really cool slide deck build with SproutCore which had an inbuilt console for live coding of SproutCore examples. And this, more than what he said, really showcased SproutCore. It builds on bindings to SproutCore objects or raw Javascript objects which make it really easy to make views update automatically. I could definitely see the benefits and will probably be using this or one of the other similar projects in the near future.

Resty Galore

I follow Sebastien Lambla (@serialseb ) on Twitter and chose to go this session because I was intrigued by this quote “Now, time to take pictures of that unicorn…” at 3 o’clock at night. I felt I couldn’t miss REST combined with unicorns and it was even better than I imagined. Sebastien used a secret agent unicorn named Resty Galore to illustrate links and forms in REST. Resty Galore had a mission to get to Malmö from Paris implemented as a series of http requests and responses. The first implementation was very procedural and rigid so Sebastien proceeded to introduce links and forms to reduce coupling in the workflow. At the beginning of the session I was wondering how would I ever apply this in my real life projects but by the end I had a few ideas about where I could use it. Any project with a lot of jQuery ajax calls and callbacks could potentially reap benefits of this approach. Intriguing is the right word here. More investigation required on my part.

Building mobile web apps using ASP.NET MVC 4, HTML 5 and jQuery Mobile

Phil Haack from the ASP.NET MVC team at Microsoft presented on the new mobile features coming in ASP.NET MVC 4. He started with Adaptive Rendering of current web pages so that they look better on mobile devices. MVC 4 will have a new default template which by using CSS 3 will change the layout automatically when the viewing device’s screen  is narrower than 850 pixels. Next up was a new DisplayMode features with which you can create pages specifically for a mobile device i.e. Iphone or Android. Phil then showed some jQuery Mobile stuff which is very interesting and feels like it will be how I get started with mobile development. And then lastly he showed off some of the new HTML 5 offline capabilities of jQuery Mobile. See this website here, connect once and then go offline to test it yourself!

Test Driving Javascript

Christian Johansen from Gitorious showed off some mad Javascript skills at this session. The programmer in me was very impressed. He built a jQuery plugin for autocomplete of a search for film database using TDD. Using js-test-driver, a unit testing framework, and sinon, a mocking framework, Christian used a fine-grained Test Driven approach to coding the plugin. He started with one large functional test that failed and then wrote around 10 unit tests to drive the design. And the revelation was that the process was exactly the same as using TDD in any other language. He used constructor injection to get rid of a jQuery ajax dependency in a class and he used sinon to stub out the ajax calls and to stub out the timing issues. I will be buying his new Test-Driven Javascript Development book. js-test-driver works well with Continuous Integration servers so no excuses; it’s time for me to TDD my Javascript as well.


The last session of the day was about Node with Felix Geisendörfer, one of the core committers. It was a nice little introduction to Node where Felix showed off the various killer features of Node; Websockets, proxying data streams and parallelizing I/O and more. It has just been ported to Windows and the integration with IIS has begun so I will probably be using this sometime in the future. But not this year, so this is one technology that I’ll look at again when it is a bit more established on the Windows platform.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s