Monday, September 03, 2012

DDD 10 - A retrospective

Developer Developer Developer 10 has now been and gone, and so I'm once again distilling 15+ pages of notes into a summary as both aide-memoire and commentary on what was (once again) an excellent community event.


I arrived bright and early on Saturday morning at Microsoft in Thames Valley Park - for the first time fresh and relaxed after a mere 15 minutes from home. Bliss.

Registration was quick, easy and efficient and it shows the draw of this event that Building 4's reception was pretty full even at 0820. 

After catching up with a few friends and the odd colleague, I headed to the area in front of Chicago 1 and 2 to find food and coffee - the sausage butties going down a treat

Fortified and ready to go, I was briefly distracted by the O'Reilly book stand - and then quickly divested of cash for a couple of books that I just HAD to buy. "Just keep telling yourself, 'Tax Deductable'..." was the mantra for a lot of people around that table, I think!

With the introduction and housekeeping from Phil Winstanley out of the way, including the announcement of DDD Norfolk East Anglia next summer, it was straight into the first session.


Language pattern anti-patterns, aka "C# - the broken bits" - Jon Skeet


Standing room only for Jon Skeet
Jon's session could well have been billed as "Jon Rants At Cr*p Language Design", but his humour and flair made this a must-see - as the standing-room crowd attested to.

The session was thought-provoking in analysing some of the the oddities of C# in the context of more general principles of language design - the two key take-aways being
  • "Language expresses ideas - it is COMMUNICATION.
  • "C# is generally a well-specified language - others are not"

There were also more specific things to take-away from the session to do with the niceties of C# , including an interesting sample demonstrating how picking a different framework version can give radically different behavior due to changes of co-variance for IEnumerable.

The sock-puppet "Tony The Horse", and "Evil Code Hench-Kitty" had to give centre-stage to "Beary Dorans", however - a bear that glared balefully at delegates from the desk in Chicago 1 for the rest of the day.

Next up was a double act...


Stuart and Simon both with with Phil at Microsoft - and it's a somewhat radical departure that Microsofties were allowed to present at a DDD event. That being said, there was no corporate push, nor branding, in what was a very well thought out talk on the "Rules" of writing ASP.Net MVC the right way.
  1. No Business Logic in MVC Controller actions
  2. Maximum of 15 loc per MVC Controller action.
  3. No base controller class
  4. No Javascript (embedded) in C# code 
  5. Always use strongly-typed views
  6. Minimal logic in views - 1 loop, 1 branch
  7. No javascript in views
  8. No base views.
  9. No behavior in ViewModels
I for one agree with every one of these rules - tho' have to admit to have being guilty of implementing code that breaks all of them. The helper classes presented (and linked here) give solutions to aligning your code with the "Rules" and are something I'm going to be investigating.


Raspberry Pi-lovers
Next up was a change of pace - a session that had (almost) nothing to do with .Net or the code I write day-to-day. 

But as my own Pi has been languishing on my desk at home waiting (literally) for a rainy day for myself and my boys to play with it, this was one that was going to get my mind filled with ideas. And this was another session that was rammed to the rafters.

Garry gave a great intro to the little-computer-that-can that is the Raspberry Pi, and showed a demo of a web-app running on Node.JS on the Pi, with C# Mono worker-processes.

During this session, the power of Twitter was demonstrated when my pen ran out of ink. A speculative tweet resulted in Craig Murphy hand-delivering a RedGate pen to me in the middle of Gary's talk - now that's service!

After the usual sandwich/crisps/fruit/chocolate/can'o'drink lunch, which most people were able to enjoy in the sun in the Building 4 amphitheatre, it was on with more hardcore coding stuff.

Performance & Scalability The StackExchange Way - Marc Gravell

Marc presented some of the issues StackExchange had experienced with ASP.Net MVC sites, and looked at ways to investigate and solve performance problems.

The biggest take-away came from the first couple of minutes, and was that


"Adding servers is NOT a silver bullet."

Marc went on to demo MiniProfiler and show how it can help bring to light both rendering and pipeline issues, and SQL issues. MiniProfiler is definitely something I'm going to investigate and integrate with our standard practices.

He also suggested that devs should borrow from CQRS best-practice and implement a KISS approach - using a lightweight "microORM" such as Dapper.NET for reading from a database, and a full-fat ORM (e.g. EntityFramework) for C_UD operations to allow better optimisation of the most common activities.

Next up was something bang-up-to-date

Windows 8 with XAML and C# - Kris Athi

Kris started slowly, but built up to demo'ing the code needed to really make a Windows 8 Metro Modern application shine, including notifications and the five view states that you need to implement.


Dr Who Cupcake - Nom!
After the final break - with delicious Dr Who cupcakes care of Gibraltar Software, it was the turn of the ineffable Mark Rendle.

Simple.Web 101 - Mark Rendle

Mark was introducing his Simple.Web framework - a kind of "little brother" to Nancy that is even more pragmatic - making RESTful services a doddle.

There were a couple of head-scratching moments as he described the framework, but it's clearly a powerful little beast, and would probably have been a better choice then NancyFx for me in the last month or so had it been properly available. Another one to investigate.

Mark did have to suffer heckling on voxpop.at during his session (that'll teach him to put it on screen), including an atack of Rainbow Ponies (you had to be there!) - but it was all good natured and nicely punctuated the session.


Finally it was time to head outside into the amphitheatre for the traditional swag-out.

Nothing for me in any of the raffles, but others went away with books, ebook vouchers, RedGate stuff and one lucky punter even got a soon-to-be-obsolete-when-Windows-Phone-8-RTMs Nokia Lumia 800 running Windows Phone 7.5! 

But many still wondered why Microsoft didn't want to shift more swag after it's recent re-branding. 

All in all, it was another definite win for the DDD team. Slick organisation, great sessions, and a great community spirit - roll on DDD11.

The DDD 10 Team Swagging Out