Øredev wrapup, part 2

This is part 2 of my Øredev wrapup.

Part 1 is here. I will jump right into a resume of the talks I attended:


Traditional Programming Models: Stone Knives and Bearskins in the Google Age

Cameron Purdy.

Again, a very interesting talk by Cameron Purdy.

He argued that some of the basic ways of thinking of software programs have become  obsolete or even harmful, when we try to implement highly available, scalable systems on parallel platforms.

Requirements for  ACID transactions become bottlenecks, and the assumption that an operation is executed exactly once (because we think in terms of an in-process function call) become hard to satisfy.

Instead of struggling to retain this, we should change our thinking. He briefly discussed the CAP theorem, idempotent messaging, distributed caching, eventual consistency. He, also briefly, described a case of a forex trading platform, where introducing an architecture based on this, increased the throughput massively – of course using Cameron’s DataGrid product: ‘Oracle Coherence’.

This was one of the most interesting talks for me at Øredev. Only way too short: 50 minutes made it impossible to scratch the surface of this topic. I am definitely going to review this talk once the videos become available.

(The CAP theorem states that of three properties of shared-data systems—data consistency, system availability, and tolerance to network partition—only two can be achieved at any given time.)

jQuery Loves Web Developers

Remy Sharp.

Since I haven’t touched web development for a long time, I wanted to check what all the buzz about jQuery was about. It looked pretty impressive. It is just another Javascript library, but it enbles very clean and compact code, especially around traversing and manipulating the Dom.

Entity Framework for Agile Developers

Julia Lerman.

Focused on the features in version 4, which attempts to address the critique of version 1 from the agile community.

Some key takeaways:

– EF 4 supports persistence of POCO style objects. No need to inherit from an EF baseclass.

– This comes in two flavors, which Julia refered to as push or pull. Pull: the datacontext keeps snapshots of all objects. It calls detectChanges() on objects and compares when nescessary. Push: Objects inform the datacontext when they are changed. If you make the properties on the objects virtual,  EF can can create dynamic proxies to your objects by subclassing using reflection, and the notification of objectContext will happen automagically.

– EF 4 uses T4 to generate code, so developers are free to customize.

NoSQL: the new generation of agile, scalable, high-performance databases

Emil Eifrem & Adam Skogman.

An edutaining overview of the many new, noSQL databases:

-Key-Value stores

-Google BigTable clones (Hadoop)

-Document databases

-Graph databases

The Productive Programmer: Mechanics

Neal Ford

4 principles of productivity:

-acceleration (use the commandline and keyboard shortcuts)

-focus (turn off notifications from Outlook etc) ,

-automation (automate trivial tasks),

-canonicality. (aka: the DRY principle – Dont Repeat Yourself)

Check productiveprogrammer.com !


Advanced LINQ Queries & Optimizations

K Scott Allen

explained IEnumerable vs. IQueryable.

Note: Be aware of the LINQ operators:  are they ‘greedy’ (ex:count). are they streaming ?

Be aware of the order of operators. Doing a ToList() on a query against a database will cause any subsequent operators of the query to not be part of the generated SQL, but rather to operate in memory on the sequence returned from the db.

Sidenote:  Check .NET4 for new linq extensions for working with events: the Reactive Framework. There are videos about it on Channel9.

IoC and Dependency Injection; Breaking out of dependency hell

Oren Eini aka Ayende Rahien

The basic recommendations were:

1) Combine IoC containers with ‘convention over configuration’. Populate the container according to conventions about class names/namespaces instead of configuration file.  Can then add new functionality without touching infrastructure code or configuration.

Castle was used in the demos. It has a nice fluent API to populate the container.

2) Use aspects for cross-cutting stuff!. Castle has AOP support. AOP examples : validation, logging.

Just-In-Time Scalability: Agile Methods to Support Massive Growth

Eric Ries

Eric talked a lot about doing changes in tiny incremental steps and being incredibly focused on process and automation. Using his former company, IMVU, which he co-counded, as the case, he introduced ‘Continuous Deployment’: They deployed changes to the production system many times a day. Instead of having endless planning and prioritization meetings, they allowed developers to implement pet features and expose them to selected users while collecting usage statistics. This was made possible by a high level of automation: for example if unittests failed during builds, check-in were automatically blocked until the problem was fixed. After deployment the systems themselves would collect key health metrics, and if something was wrong, the deployment wouls automatically be rolled back.

Inspiring talk!

ASP.NET Advanced Ninja MVC

Scott Hanselman

Some key takeaways:

ASP.NET MVC  also uses the T4 generator to generate views, so developers can modify the views that are generated. To override the templates for how views are generated, locate  the template folder under the VS installation folder. Drag it into the solution. It now becomes a local override of the default templates.

Scott walked through features supporting a model driven development style.

Encourached to check the sourcecode for MVC.

Sidetip: in Windows 7, check the ‘Boot from VHD’  feature.

Why Oslo Matters

Shawn Wildermuth

Unfortunately, Shawn had a day where every demo failed completely, so we never came close to getting an answer to why Osllo matters.


Øredev wrapup, part 1

I needed to condense all the impressions from four days at Øredev into writing, so I decided to take the opportunity to re-start my blog.


Here is part 1:


This was my first Øredev conference. Before that, I have only attended TechEd conferences.  Øredev is quite different: smaller, much broader in scope and with a different crowd of attendees. By itention, it is not focused on a specific technology or vendor. There were tracks on Agile, architecture, programming languages, cloud computing, Java, .NET, mobile, testing and even more. This years headline was efficiency.




This was a pre-conference day, with two half-day sessions. I think there were 5-6 sessions to choose from in both timeslots. My picks were:


Morning: Building Applications with ASP.NET MVCK. Scott Allen is among many other things working for Pluralsight. He was an excellent presenter, and he knew his stuff.


Notes from the presentation:


  • ASP.NET MVC as an alternative to WebForms. Implemented on top of ASP.NET using HttpModules that intercept the http processing pipeline. Just like ASP.NET WebForms and ASP.NET WebServices are.
  • A central component is the routing engine living in System.Web.Routing. It parses the url of the http request and calls the appropriate Controller.
  • You implement Controllers either by inheriting from ControllerBase and overriding the Action method, or by implementing IController from scratch.
  • Actions methods return ActionResults, that contain the data for the view, which is supposed to be very simple. Obviously a different approach that the one in WebForms, where the view, ie. the Page object is the driver of things.
  • ASP.NET MVC also doesn’t try to fit a stateful programming model resembling WinForms into the stateless world of the web. There is no ViewState blob in the emitted Html. Actually, total control over the emitted Html is a central point of the ASP.NET MVC.
  • It is often used with the JQuery Javascript library on the clientside. JQuery has some basic controls.
  • Everything is designed to be very pluggable and unit-testable. For example, there are alternate view engines out there (Spark and others), and the built-in IoC container can be replaced with StructureMap or other containers.
  • Get the MVCContrib code on Codeplex!

Afternoon: NHibernate: From Principle to Practice


Steve Bohlen. Steve is a Microsoft MVP and ALT.NET guy from New York. He was super well-prepared, and was able to cover a lot of material in three hours. His blog is here


Notes from the presentation:


Motivation/background: The impedance mismatch. Persistence is a solved problem!  Time spent writing data-access code is waste of clients/employers money.


Then, Steve walked through:


  • Building the Xml mapping file from scratch. Tip: don’t forget to associate the mapping file with the mapping schema file. This provides Intellisense and validation in VS. The mapping assiciates class properties or members with table columns.
  • Adding the nescessary NHibernate assemblies.
  • Sessions, Transactions.
  • Modelling relations.
  • Picking one of three available dynamic proxy implementations available for lazy load support. Dynamic proxies allow NHibernate to intercept property access.
  • The different options for querying:
  1. HQL: full featured. But ‘lives’ in strings.
  2. Criteria API: Typesafe API for building up a query.
  3. Example queries. Query based on an object instance: Generates a where clause based on the not-null values of the object.
  4. Coming: LINQ to NHibernate.



First real conference day:


Interactive Visualizations from Microsoft Research,

Eric Stollnitz, MS Research:


Eric demoed some of the mind blowing visualization software that has emerged lately:


  • Photosynth – composes a 3d navigable model of a scene by analyzing photos of different parts of the scene.
  • HD view – compose gigapixel images by stitching thousands of photos.
  • www.worldwidetelescope.org. Navigate the known universe! Guided tours. An incredible amount of content.
  • Project Tuva. A series of Richard Feynman physics lectures put online and annotated with loads of additional educational material.

Some of the demos suffered from an unstable Wifi and a struggling laptop, so we never got to see Project Tuva. Note to self: Remember to check that out!


Debugging .NET Applications with WinDbg: Tess Fernandez, Microsoft


Tess is an Escalation Engineer at Microsoft. Her blog is a great resource: http://blogs.msdn.com/tess/


She demoed process dump analysis using WinDbg and SOS. Examples: Tracing memory leaks by tracking object references back to the root. Tracing locking issues by looking at a combination of the locks held in the process and the call stacks of the threads holding locks. Cool stuff!


Of course, no one except Tess and John Robbins remembers all the commands of WinDbg/SOS. Enter the .cmdtree command, which opens a helper window containing preconfigured commands. See here for details. Or alternatively, as Scott Hanselman put it: ‘Google it with Bing’ 🙂


Another useful tool is DebugDiag. Apparently it is somewhat overlapping with WinDbg. I need to look further into that.


A great piece of news is, that VS2010 will probably include a whole new graphical dump analysis tool for .NET4. It will not (yet) be as full featured as WinDbg though.


Pracmatic, Real world Scala


This was part of an interesting Programming Languages track. I only managed to see this session.


Scala was together with Erlang the language I heard the most people buzz about. It runs on the JVM, has libraries for parallel computing, is a mix of OO and FP, and has a lot of the functional constructs that have been added to C# 3.


It is claimed to be used by companies like eBay, Twitter and many others.


There is an implementation running on the CLR, so it is an interesting candidate for investigation of a new language without going too far away from the comfort zone.


Exploration of the NHibernate Extensions EcoSystem


Steve Bohlen gave a whirlwind tour of many of the extensions to NHibernate out there. Among many others, there are


  • Fluent NHibernate: A fluent API to do the mapping configuration programmatically instead of in XML
  • A Validation Framework.
  • The Castle ActiveRecord implemensation works on top of NHibernate and makes it very simple to use.
  • A framework for web session state management across requests.
  • Linq to NHibernate

I will update the post with relevant links later.


Data in the Cloud: Accessing Azure


 Julia Lerman made a presentation that was focused on practice: How does the stuff actually work, look and feel from a programmer perspective. A simple walkthrough of the process of using Visual Studio and the emulated Azure environment on the local machine, to implement and test a website. Then publish it to the cloud.

It was nice to get the cloud down to earth… 

C++, Java and .NET: Lessons Learned from the Internet Age

Cameron Purdy is Vice President of Development at Oracle. He gave a very entertaining overview of pros and cons of C++ versus managed languages, and why they almost instantly replaced C++ for enterprise development. Then he gave his take on what the future of programming languages will look like. As I heard him, languages  with deeply integrated support for parallel programming will win. Scala was one candidate that he mentioned.











testing the performancing firefox extension

Flickr competition

According to TechCrunch, BubbleShare is incredibly easy to use, but has no tagging support. I wonder if they have an API ?