London Alt.Net beers night - 25th November 2008

The London Alt.Net community convened again this week at a beers night kindly hosted by Tequila.

Topics are suggested on a board as people arrive and mingle and when the night begins in earnest, votes are cast for the most popular topic that will be up for discussion in a park bench style - three people at any one time on four seats at the front can answer questions and discuss the topic of the day with anyone free to occupy the free seat should the want to contribute something substantial.

The format works for the most part and Seb Lambla and Zi Makki are very capable moderators of this good idea, but unfortunately the way the topic is talked about throughout the session dilutes the discussion somewhat. With strongly held opinions battling for prominence the topic quickly descends into a fight to justify or explain the topic that is up for discussion - the mere fact that the majority voted for it doesn't seem to mitigate this.

This is not to say that the current format is not producing worth - I certainly got something out of the night and the topic(s) at hand, but something about it leaves me feeling as though I was short-changed.

My suggestion would be to allocate a set time for describing the topic - 10 minutes devoted at the start of the session solely to defining what it is we are talking about, with three people volunteering to give their few minutes unbiased description of the subject. From then on, all discussions must be productive and not about justifying the term or why it should be used in a project in the first place.

Anyway onto the topic that was discussed, or rather two topics... AOP and Opinionated MVC.

Aspect Orientated Programming was the first topic of the night and we ultimately rounded the discussion off with four forms of AOP discussed:

  • Simple Decorator pattern AOP where the decorator class of the same type performs its aspect before calling into the containing type and these can be nested as much as required - Neil Robbins described this well as the Russian doll AOP (to paraphrase).
  • Attribute based where a framework inspects attributes at runtime - this has to be baked into the framework you are utilising
  • Proxy or interception code provided by libraries - usually introduced via a run-time configuration
  • IL weaving where the assembly is changed after compilation - for example with PostSharp.

All attempt to provide a way to move cross-cutting concerns out from the domain objects themselves, helping adhere to the single responsibility principle and provide cleaner code. As no-one could think of a concrete reason other than logging for its use (!) the session moved onto another topic:

Opinionated MVC was discussed and again, this is where I pitched for one of my first times at one point asking whether we were actually talking about Convention MVC as opposed to "Opinionated" and in doing so played the "describe the topic" game I criticised earlier! D'oh!

The topic was clearly a hot one though and we did get a few different opinions on the subject, the most interesting of which, I found, was one put forward by Alan Dean where he advocated building component parts of a page (again cross-cutting concerns) from client code via javascript to REST-like resources, thus fully utilising native http caching and reducing server load.
For example, the breadcrumbs are the same for every user on a "my profile" page - why produce it on the server with composite views each time if it can be cached for all users?

In my web experience, having the page degrade gracefully to non-javascript users has been paramount and all my hairs raised in automatic repulsion of the idea.
But I DO like it - it is a very interesting one as the caching ability he proposed would be truly useful as a website scales.

All in all a good and thought provoking night.