#DDDnorth 2 write up – October 2012 – Bradford

#dddNorth crowd scene, waiting for swag!

Stolen from Craig Murphy (@camurphy) as it’s the only pic I saw with me on it (baldy bugger, green t-shirt front right) – thanks Craig!

Another 5:45am alarm woke me on a cold morning to signal the start of another days travelling on a saturday for a developer developer developer event, this time with Ryan Tomlinson, Steve Higgs, Phil Hale and Dominic Brown from work.  I’ve been to a fair few of these now, and it still overwhelms me that so many people are willing to give up their Saturdays (speakers and delegates alike) and attend a day away from friends, family (and bed!) to gather for a day with their peers to learn from each other.

Lions and tigers and hackers! Oh my!

Phil Winstanley, @plip

Phil highlighted that the threat landscape has and is changing now – we’re moving away from paper and coin as our means of transactions and everything is existing in the online space, it’s virtual, and it’s instantaneous.  Identity has become a commodity, and we now all exist in the online space somewhere – facebook are making the money they are because our identities and those of our relationships are rich with information about who we are and what we like.

He brought over some very good anecdotal evidence from Microsoft around the threat landscape and how it’s growing exponentially, there are countries and terrorist organisations involved in this (more in the disruption/extraction space) but everyone is at risk – estimated 30% of machines have some form of malware on them and a lot of the time it’s dormant.

Groups like anonymous are those that folks should be most scared of – at least when a country hacks you there are some morals involved, whereas groups like anonymous don’t really care about the fallout or whom and what they affect, they’re just trying to make a point.

The takeaway from this rather sobering talk from me was to read the Security Development Lifecycle – we all agreed as developers that although we attempt to code secure software, none of us were actually confident enough to say that we categorically do create secure software.

I’ve seen Phil give presentations before and really like his presentation style and this talk was no different – a cracking talk with far more useful information than I could distil in a write up.

Asnyc c# 5.0 – patterns for real world use

Liam Westley, @westleyl

I’ve not done anything async before and although I understand the concepts, what I really lacked was some real world examples, so this talk was absolutely perfect for me.

Liam covered a number of patterns from the ‘Task-based Asynchronous Pattern’ white paper, in particular the .WhenAll (all things are important) and .WhenAny (which covers a lot of other use cases like throttling, redundancy, interleaving and early bailout) patterns.  More importantly, he covered these with some cracking examples that made each use case very clear and easy to understand.

Do I fully understand how I’d apply async to operations in my workplace after this talk? No, though that wasn’t the aim of it (I need to spend more time with aync/await in general to do that).

Do I have use cases for those patterns that he demoed and want to apply them?  Absolutely, and I can’t wait to play!

Fantastically delivered talk, well communicated, and has given me loads to play with – what more could you want from a talk?

BDD – Look Ma, No Frameworks

Gemma Cameron, @ruby_gem

I approached this talk with some scepticism – I’ve read a lot about BDD in the past, I’ve seen a talk by Gojko Adzic very recently at Lean Agile Scotland around ‘busting the myths’ in BDD, and although the concepts are fine, I just haven’t found BDD compelling.  Gemma’s talk (although very well executed) didn’t convince me any further, but the more she talked, the more I realised that the important part in all of this is DISCUSSION (something I feel we do quite well at my workplace).  I guess we as a community (developers) aren’t always ideal at engaging the product owner/customer and fully understand what they want, and it was primarily this point which was drilled home early in the talk.  Until you have a clear understanding early on by bringing stakeholders together, arriving at a common understanding and vocabulary, how can you possibly achieve the product they wish.  I buy this 100%.

This is where the talk diverged for some it seems – a perhaps misplaced comment about ‘frameworks are bad’ was (I feel) misinterpreted as ‘all frameworks are bad’, whereas really to me it felt like a ‘frameworks aren’t the answer, they’re just a small part of the solution’ – it jumps back to the earlier part about discussion – you need to fully understand the problem before you can possible look at technology/frameworks and the like.  I’m personally a big fan of frameworks when there is a usecase for them (I like mocking frameworks for what they give me for example), but I think this point perhaps muddied some of the waters for some.  She did mention the self shunt pattern which I’ll have to read more on to see if it could help us in our testing.

A very thought provoking talk, and I can imagine this will generate some discussion on monday with work colleagues – in particular about engagement with the client (product owner/customer) in order to ensure we are getting the requirements correctly – hopefully we’re doing everything we need to be doing here.

Web Sockets and SignalR

Chris Alcock, @calcock

I’m sure chris won’t mind a plug for his morning brew – a fantastic daily aggregation of some of the biggest blog posts from the previous day.  This is the first opportunity I’ve had to see Chris talk, and it’s odd after subscribing to morning brew for years now you feel like you know someone (thankfully got to chat to him at the end of the session and ask a performance related question).

I’ve played recently with SignalR in a personal project so had a little background to it already, though that wasn’t necessary for this talk.  Chris did a very good job of distilling websockets both in ‘how’ and ‘what’ and covered examples of them in use at the http level which was very useful.  He then moved on to SignalR both in the Persistent Connection (low level) and Hub (high level) APIs.  It’s nice to see that the asp.net team are bringing signalR under their banner and it’s being officially supported as a product (version 1 anticipated later this year)

This was a great talk for anyone who hasn’t really had any experience of signalR and wants to see just what it can do – like me, I’m sure that once you’ve seen it there will be a LOT of use cases you can think of in your current work where signalR would give the users a far nicer experience.

Event Driven Architectures

Ian Cooper, @ICooper

The talk I was most looking forward to on the day, and Ian didn’t disappoint.  We don’t have many disparate systems (or indeed disparate service boundaries) within our software, but for those that do exist, we’re currently investigating messaging/queues/service busses etc. as a means of passing messages effectively between (and across) those boundaries.

Ian distilled Service Oriented Architecture (SOA) well and went on to different patterns within Event Driven Architectures (EDA) and although the content is indeed complex, delivered as effectively as it could have been done.  I got very nervous when he talked about the caching of objects within each system and the versioning of them, though I can see entirely the point of it and after further discussion it felt like a worthy approach to making the messaging system more efficient/lean.

The further we at work move towards communication between systems/services the points in this talk will become more and more applicable and have only helped validate the approach we were thinking of taking.

This talk wins my ‘talk of the day’ award* (please allow 28 days for delivery, terms and conditions apply) as it took a complex area of distributed architecture and distilled into 1 hour what I’ve spent months reading about!

And Ian – that’s the maddest beard I’ve ever seen on on a speaker Winking smile

Summary

Brilliant brilliant day.  Lots of discussion in the car on the way home and a very fired up developer with lots of new things to play with, lots of new discussion for work, and lots of new ideas.  Isn’t this why we attend these events?

Massive thanks to Andrew Westgarth and all of the organisers of this, massive thanks to the speakers who gave up their time to come and distil this knowledge for us, and an utterly huge thanks to the sponsors who help make these events free for the community.

I’ll be at dunDDD in November, and I’m looking forward to more of the same there – will be there the friday night with Ryan Tomlinson, Kev Walker and Andrew Pears from work – looking forward to attending my first geek dinner!

DevWeek 2011 – A Week of Geek

Another year, another incredibly lucky software developer gets to spend a week at the DevWeek conference.  For regular readers of the blog (hey mum!) you’ll know I attended last year and you can see my write up of it here.

I look at my own career over the past 12 months and realise just how much DevWeek helped hone and solidify a lot of my thinking – I’ve moved on massively since then and have put a great deal of last years learning into practice within products that I’ve worked on, so definitely was a worthwhile spend (thankfully my employer also thinks so!)

I had to choose my sessions far more carefully this year, it was a downside of returning I feel, but there felt like a lot of repetition on sessions – that said, there was still a great deal of new content (and I enjoyed @JeffRichter’s talk on exceptions so much last year I re-attended this year – sad eh!).

Day 1 Highlights

Ajax and ASP.NET MVC

K. Scott Allen – @OdeToCode

The lightbulb went on at the start of this talk and just didn’t switch off – I’ve not done so much on the Ajax side of MVC, though he made it all incredibly easy, and although I’ve watched the videos he delivered via pluralsight, it was far easier to contextualise and sank in better being in the room (and able to ask those stupid questions!).

He covered the client validation updates in MVC3 (the main reason we switched to MVC3 when it first launched), and covered a great deal around the topic as folks asked questions.

Massive tangibles to take directly onto a project I’m working on and I look forward to getting some of this into code asap.

NoSQL, Is it the future?

Gary Short – @GaryShort

Oh how I wish I went to that day on NoSQL last year in Scotland…  Presented brilliantly (as per really, after seeing presentations at DDD this is the usual craic with Gary).  He covered the various products available and the general use cases for them, obviously the history to NoSQL, and covered a lot of use cases.  I could waffle more but I’d only highlight my ignorance – realistically the cleverness in the talk and the outcome for me was that I have to try this – I have to grab a small project at work that I can pickup in my spare time and experiment with it.  I work in an environment where it’s easy to test the limits of our RDBMS solution as we have a massive amount of traffic, especially writes, and I think it’d be worthy of investigation – definitely more on this to follow from me!

Day 2 Highlights

Model Binding in ASP.NET MVC 3

K. Scott Allen – @OdeToCode

I’m going to start to sound like an @OdeToCode fan boy, but his presentation style and knowledge of the topic when asked a question just rocks – one of those people that qualifies in my book as a Dev Rock Star, so him catching up with him at lunch to have a chat through the questions I’d asked during the session was just superb!

There was a great deal of validation (personal, not model) in this session on the ways we’re currently doing model binding, though again, there were significant tangibles around the extensibility in MVC3 that may well make certain aspects of what we do around model binding easier.

Modern Javascript

K. Scott Allen – @OdeToCode

ok, ok, it’s turning into the Scott Allen show… doh!  I can only hope the reticence to ask questions during this question meant that others were similarly thinking ‘Oh Christ, I don’t do any of this!’.

I got that functions are heavily important (I sort of got this from consuming jquery, I’d just not written my own in the same vein).  Closures are an area I really need to read up on, and in general I just need to work at this one.

For any developer who consumed jquery and just ‘gets things done’, but has never written their own class, implemented their own closure, etc. I’d say do as I plan to do and get to learning – there are so many opportunities that I’ve utterly missed.  Exciting times.

Day 3 Highlights

Do’s and Don’ts of ASP.NET MVC

Hadi Hariri – @hhariri

Again, as much a personal validation session, but loads of little tangibles from this one – lots around IDependencyResolver and Nuget that I just need to *do* – we use Unity in ControllerFactory guise currently so I really need to get this sorted.  Nuget I’ve been consistently positively surprised by, There was a lot more in this session and I’ve got a bucket full of notes to work through but a crackign session.

Improving Website Performance and Scaleability While Saving Money

Robert Boedigheimer – @boedie

Possibly the best talk of the week for me – and there wasn’t a design pattern, a mention of SOLID, or indeed a unit test in sight.  Robert presented a lot of absolutely practical steps that can be taken to improve performance on your website, he highlighted some of the tools he used (and how he uses them), and it was just practical advice after practical advice.  There is content from this that absolutely will be going into my every day work from next week onwards, and the team are going to despair as I wave the flag for the tools/concepts I got from this talk.

Closing Thoughts?

Well, the above (as well as just being in a focused environment where I got to talk dev) was superb.  I personally think if I can continue to be funded for it I’d return every 2 years rather than annually to give the talks a full chance to rotate, though that’s not a criticism of the hosts or those people who give talks, I’ve seen it on other speaker circuits too (DeveloperDeveloperDeveloper events for example) and it’s one of those ‘either shut up and do a talk Tez or let them get on with it’ – I really have no desire to do so, so will be happy with what I get!  Thanks to all of the organisers and speakers, it has absolutely rejuvenated my geek batteries

Onwards and upwards now, fired up geek on board!

DDD9 – or 10 hours in a car and lots of learning

This weekend saw myself and a few of the developers from work take the long drive down from the relative comfort of the north east down to that there Reading for a day full of community driven talks about our craft.  I won’t give you any real background on DDD9 as @philpursglove has a cracking post on this here.

The sessions I attended were as follows:

.Net Collections Deep Dive

Gary Short (@GaryShort)

Having not seen Gary present before, this talk came as a fantastic start to the day – his presentation style is superb, and the content was perfect for me.

He covered the different collection types, and I got an awful lot from the flow of the talk on which collection types to use in different situations.

Key takeaways for me on this one were:

  • the performance aspects of growing collections (the doubling of the arrays, and more problematically the CopyTo that goes on to enable that growing).
  • if you know the size of a collection before you initialise it, specify it (IList<Stuff> stuff = new List<Stuff>(12))
  • Prefer .AddRange() to looping through a collection and using .Add().

He covered a lot more in this talk (sorting algorithms and when to consider using your own sort etc.) but all in all, cracking start to the day.

CQRS – Fad or Future

Ian Cooper (@ICooper)

I arrived at this talk having seen Ian present before on different subjects so knowing he was good, and having utter cynicism on CQRS (Command Query Responsibility Segregation).  It seemed to me (note the past tense) like an utter waste of time and something that allowed/supported a weaker architecture.  Very much a toy for the cool kids.

Well, the talk has convinced me that I need to look into this as a lot of what Ian said resonated with me.  Having a thin ‘read’ layer that (in our case) would return our View Models completely away from the domain objects makes so much sense – do I really need a 7 table join ‘User’ object *just* to present the pertinent details to the user allowing them to change their password (caching in place or no!).

The domain object would get involved on the commands – the changing of something, and at this point the domain model is a godsend naturally as it validates whether or not what you are doing is valid.

I like that it simplifies down our Service and Repository layers, and can see some real potential from it all.

It’s not something I’m going to rush out and implement tomorrow, but it’s something that has now hit the reading list as something that I must understand with an aim to be better informed when I make architectural design decisions in our software – I will no longer rule it out as a fad that’s for sure.

Functional Alchemy – how to keep your c# code DRY

Mark Rendle (@markrendle)

This guy was a great speaker – fantastic talk, his knowledge of the functional aspects introduced to the .net framework was huge, and he certainly used them well in his examples.

What this talk highlighted is just how shit I am!  There are aspects of the .net framework that I have very little understanding of (am I supposed to admit this publicly? lol).  I use and consume Func<T> and Action<T, TResult> on a day to day basis on the framework with no problem (and love them).  Does not knowing how to ‘roll my own’ affect my day to day job? Not really.  Do I want to know them to add to my toolbelt?  Damn sure.  Some of the stuff he was doing with (in his own words) abuse of Actions and Functions was incredible.  There are some really nice patterns that come out of this, and it’s linked for me to the Monads talk that Mike Hadlow gave as things I ‘Must try harder’ at.

I suck Smile

Is your code SOLID?

Nathyn Gloyn (@nathyngloyn)

Very good talk covering the origins and usages of SOLID, including code samples that demonstrated it.

I would encourage anyone that doesn’t understand these principles to read up on them (a google search will reveal much), they very much apply to all software development and even a high level understanding of them *will* make you a better software developer.  They’re not all prescriptive, they are tools to use as and when you feel it applicable, but having them in your mind while you design software is gold dust.

Thankfully the talk for me helped solidify the approaches we are taking at my current employer are the ‘right’ ones, and it was a ‘warm blanket’ type talk that made me feel like I wasn’t an utter numpty.

CSS is code, how do we avoid the usual code problems?

Helen Emerson (@helephant)

I felt like a lone sheep during this one, as I use (and really like) reset.css files (though I understand why Helen doesn’t), I thankfully work in an environment where backward compatibility means that if it doesn’t have rounded corners in IE6 but it ‘works’ then jobs a good un, so I very much felt Helen’s pain when she explained some of the hoops she has to jump through to ensure cross browser remains as similar as possible.

Although a good talk, the key gain from this talk for me was at the end when the community chipped in.  So for example there’s the following products/projects I need to look at:

  • dotLess/SASS – means of treating CSS as a programming language with variables/mixins etc.
  • Selenium, Browserlabs and Mogotest as means of testing UIs

What I did also get from this was Helen’s blog which I’ve subscribed to – she has a lot of very good stuff to say and I’d recommend folks that have any interest in front end have a read of it.

Beginners Guide to Continuous Integration

Paul Stack (@stack72)

This guy has been helping me a lot over Christmas with setting up our CI build, so was nice to finally meet him and say hello (surprising how many people just recognised me yesterday – who’d have thought that I stand out at 6’ 9”! Lol).

He didn’t really cover anything new for me, though really again helped solidify that continuous integration is the ‘Right Thing’ to do.

Most importantly from this talk (and the conversations I had with him over Christmas) – do it in small steps – don’t try to achieve everything straight off.  Set it up, get it checking out and building first – light stays green?  Do a run through of unit tests next.  Light stays green? Look at code coverage and other tasks.  Light stays green? Deployment… etc. etc. etc.

This way, over time you’ll build up the build that you *want* without all that significant up front cost.

Close

Another brilliant day run by the community, for the community, and I can only thank all the organisers and speakers for taking the time out to organise it, along with a huge thanks to Microsoft for the venue – the cookies were ace!

Loads of learning points for me, but that’s a huge positive, not a negative!

It was incredible to see on one of the first slides of the day that the North East is getting a DDD event in the Autumn – yay, I can do the geek dinners, the beers, and still get home to a comfy bed!

Roll on DDD Scotland!

Developer Developer Developer Scotland, or summer arrives early in Glasgow!

Who let the sun out?

What a stunning day we were all faced with for #dddscot this year – the drive up from Newcastle (albeit starting at an ungodly hour) was actually fun – great scenery on the way, I’d forgotten what it was like to get out of a built up area – plenty more trips out needed over the summer methinks.  I had high expectations of the event after attending #ddd8 earlier in the year and being overwhelmed by the content there, and the day didn’t disappoint.

Onto the talks I managed to get to:

HTML 5: The Language of the Cloud?

Craig Nicol – @craignicol

A good start to the day, and pertinent for my current role (we’re investigating what HTML5 can do to help us with alternate platform delivery, certainly with a focus on the mobile market).  Craig’s talk was animated (in both senses of the word!), and it was useful to see just where the ‘standards’ were at.  Safe to say at present, and Craig mentioned it a few times during this talk, that if you want to target HTML5 then you really do need to pick your target browser (or generate more work usually and target browserS), as the standards are still significantly in flux.  There is a lot of help out there, and those people creating mashups really are helping in showing which browsers support which elements.

I particularly liked the look of the XForms (forms 2.0) stuff – being able to define something as an ‘email’ field, or a ‘telephone’ or ‘uri’ I think adds significant context to the proceedings and will deliver (for the users) a far richer experience.

As with a lot of emerging technologies though, I certainly think it’s far too early for reliable deployment in all but very controlled environments – even if you implement progressive enhancement well.  Something to follow for sure though.

Overall a very well presented talk, a minimal smattering of the expected ‘this worked 10mins ago!’, but this is HTML5+bits, so to be expected.

Exception Driven Development

Phil Whinstanley – @plip

plip at his usual exuberant self with this talk on exceptions, and it was a useful additional session to one I’d seen at DevWeek earlier in the year given by Jeffrey Richter.  The initial message was ‘exceptions happen’ – we have to learn how to live with them, what to do when they happen, which ones we should fix (and yup, I’m one of those people that hates warnings, so I suspect I’ll have to fix all of them!), which ones we should prioritise – how we make sure we’re aware of them, that sort of thing.

Two very useful additions to my current understanding – one was ‘Exception.Data’ which is essentially a dictionary of your own terms.  At present we’re throwing our own exceptions within our business software (more on that later), but .Data will give us far more information about what parameters were at play when the exception happened – utterly brilliant, and terrifying that I didn’t know about this!

Another was the use of window.onerror in javascript – ensure that you http post (or whatever other mechanism works best for you) when your scripts don’t work – there’s nothing worse than your javascript borking and not being able to repeat it, so make sure you report upon these too.

Some key snippets (some common sense, some not) such as never redirect to an aspx page on a site error (thar be dragons and potential infinite loops), go do static html instead.

plip’s acronym at the end of the session made me chuckle, I shant repeat it, but it had an odd way of sticking in the consciousness ;)

The only thing I thought lacking in this talk (and it’s no real criticism of plip) was the concept that was covered in that talk earlier in the year at DevWeek.  The idea that Exceptions are *not* for exceptional circumstances, they’re there as a means of controlling program flow, of reporting when something didn’t work as expected, and of giving more effective information.

So for example, if I had a method called ‘ProcessLogin(username, password)’ and one of the first checks was ‘does this username exist in the DB’, if it doesn’t, throw new UserNotFoundException.

Of course, if plip had gone down the custom exceptions and business defined exceptions, the talk could comfortably lasted two to three times longer, so I feel the devweek talk and plip’s complemented each other well.

Cracking talk though plip – really did get a lot out of this one, and I think this was the most useful session of the day for me.

A Guided Tour of Silverlight 4

Mike Taulty – @mtaulty

A reminder from Mike that I really need to spend some time looking into Silverlight 4.  I focus very heavily on web development and web technologies, and although I have little interest in desktop development, SL4 I think has a lot of interest in terms of as an intranet based tool with rich GUI.  Of course, I may be better going down the WPF route with that, but there’s something about the versatility of SL4 that appeals.

Cracking talk from Mike as per – always good to see one of the UK evangelists wax lyrical about their current focus, and this was no exception.

What ASP.NET (MVC) Developers can learn from Rails

Paul Cowan – not sure on twitter

I have to prefix this talk by saying that I thought Paul’s presentation style was great, and much as he maligned his irish accent, he was cracking to listen to.

That said – rails… what a bag of shite! lol.  I suspect I may get a number of replies to this, but what I like about MVC2 is that I can focus on architecture and the important stuff, and ‘get the job done’ without too many interruptions.  Ok, I have to add views myself, and a ‘Customer’ entity doesn’t automatically get a controller/views/unit tests associated with it.  But I feel in complete control, and don’t feel constrained at all.

I spent too many years in a unix/perl/python environment, and I really do not miss the command line shite I had to go through to really add value to what I was doing in the programming language.

VS2010 + Resharper deliver a significant number of improvements in the ‘streamlining’ of application development, and I have none of the hassle that came about as part of that rails demo (no matter how much it delivered with just a simple command line).

So I really do apologise to Paul – his presentation was great, but it only reinforced for me that the love affair I’m having with MVC2 at present is well grounded.  God, I sound like such a fanboy!

Real World MVC Architectures

Ian Cooper – @icooper

A few teething troubles at the start (don’t you just hate it when a backup brings your system to its knees), but overall a good presentation – I’d seen Ian’s talk at #ddd8 (prior to really solidly working with MVC), and I thought I’d re-attend this again after spending 2months solidly working with MVC2.  It has certainly reinforced what I’m doing is ‘right’ or at least appears to be good practice.  I’m still sceptical about the overhead that CQRS delivers when implemented in its purest sense, though the principles (don’t muddy up your queries with commands, and vice versa) is a one that obviously all should follow.

Ian had a bit of a mare with his demo code, though more to my benefit as I managed to nab some swag for being ‘that geek’ in the front row pointing it out – yay for swag!

The Close

Colin Mackay and the rest of the guys then spent some time covering the day, handing out significant swag (yay, I won a resharper (or if I can wing it as I have one) a dotTrace license!), and we had the obligatory Wrox Lollipop shot taken.

All in all, it was a cracking day, and well worth that early drive up from Newcastle – I think events like this work so well – getting a room or rooms full of enthusiastic devs, who all just want to be better at their art, and being presented to by people who’ve spend some time working on that art.  There’s nothing finer in the geek world.

Thanks to all organisers and sponsors – great fun was had by all :)

Dev Week 2010

Well, I was lucky enough to have my employer pay for a trip for me and the dev team lead to DevWeek this year.  First time I’ve been to DevWeek, and hopefully not the last.  I attended the 3 days of the full conference and from the outset it showed itself as a very well organised and run conference.  The Barbican was a cracking venue, and I found the overall structure of the event very useful.

My mindset at the start of the week was very much about attending those sessions I felt I’d learn the most from (well duh!), and those that would have the most useful impact on the current dev stream I’m in.  We’re in the process of re-architecting the site, both hardware and software, and part of that re-write will be the move from a predominantly classic ASP (with asp.net elements thrown in for good measure) across to using: MVC2; Entity Framework 4/a.n.other ORM or indeed linq-to-sql; intelligent caching; automated builds/continuous integration; and bringing in elements like test first development, etc.  So the talks were about targetting those areas to maximise gain. 

I’ll cover my thoughts on the talks that had the most impact on me.

Day 1

Keynote – 97 Things Every Programmer Should Know

Kevlin Henney – Curbralan@KevlinHenney

A cracking opening keynote which delivered a talk from the above title, one of a few in the O’Reilly 97 Things series.  I confess to never hearing about this series, though I shall indeed be purchasing the book.  The 97 things are covered on their wiki, and Kevlin for his part distilled a number of them as part of the talk, interspersing with personal experience (of which the guy has a bucketload!).

Some of the key premises that stuck for me in this talk were:

Do Lots of Deliberate Practice – very much the idea that performing a task with the sole aim of mastering and improving your ability to do that task is what makes us (essentially) better at our jobs.  The obvious geek term that springs to mind here is grokking, and I think that any developer who actively involves themselves with deliberate practice will be the richer for it.

Learn to Estimate – struck a chord merely because we all face this, and I’ve never worked in a job when I haven’t had to estimate (and then subsequently commit to) timelines.  As Giovanni points out in his contribution, the difference between estimation (“that’ll take me 4 weeks”) versus target (“I need that in 2 weeks”) versus commitment (“I can’t do that in 2 and a half weeks but no less”). We as developers will always face this, and as we discuss with our managers, what they are after is a commitment of time – it’s how we arrive at that that is important.

There were many other points that sat well with me, and I’d really recommend grabbing the book to pickup on quite a stash of collective wisdom.

Objects of Desire

Kevlin Henney – Curbralan@KevlinHenney

I don’t think I’ve seen a room so packed!  There were as many people on the floor as there were on chairs – clearly this one struck a major chord with us all.  The concept was an interesting one, especially for someone who’s programmed on the .net stack since 1.1, and has attempted to be OO since day one.  The aim was to relay (among other things) effective OO practice, pitfalls, and techniques.

This was one of those talks that helped reinforce the direction that I’m steadily taking (loose coupling, the effective use of patterns, etc.) isn’t far off the beaten track, and the talk really solidified my thinking.  These first two talks were the first time I’d seen Kevlin talk, and I hope to see more in future – an incredibly accomplished talker, buckets of experience, and someone who clearly fully understands their subject matter.

Design for Testing

Kevin Jones – Rock Solid Knowledge@KevinRJones

After reading through The Art of Unit Testing and playing around with testing myself, I found this talk again helped solidify that my thinking on the subject was going in the right direction – loosely coupling, staying away from concrete types preferring interfaces/contracts, separate your layers/concerns, test a single element of the code, dependency injection is your friend and the use of inversion of control containers.

I’d not seen Unity in practice, so to see the syntax/usage of that was particularly useful, and I think I’ll give that one a whirl as we move forward with our re-architecture. Expect a separate blog post from me on this one as I document the setup we finally arrive at.

Great talk, great demos.

Day 2

Entity Framework in the .NET Framework 4 and Visual Studio 2010

Eric Nelson – Microsoft@EricNel

Another cracking talk from Eric – it’s always nice to feel you’re getting a genuine (not marketing led) talk on any microsoft related product, and where it’s good there will be gushing, but where it’s not, you can be sure you’ll hear about it.  Entity Framework 1 clearly caused Microsoft no end of trouble in terms of adoption rates, and it seems to have used this as a clarion call to improve EF4 in every way possible.  Are there still issues? Yup, without doubt.  Does it now look like a viable provider for a solid data access strategy – absolutely!

I think the key things from this talk for me were:

  • play with it in more anger, and attempt to model our existing schema on it (thankfully a weeks holiday will allow this, I’ll try to spend some of it sat coding in the sun!)
  • Investigate POCO support – I like the idea that the domain model is designed and written as a separate concept away from the data access strategy, and then (with the clever use of T4 and some other shenanigans that I’ll have to play with) the coupling is brought in (though it doesn’t strictly ‘muddy’ your domain model)
  • Investigate T4 – seriously, why haven’t I started playing with this – Eric mentioned the Tangible T4 Editor which I’ll have a look at, and investigate any other tooling that may help.

I feel almost convinced that the use of Entity Framework 4 is the data access strategy that we need as we re-architect our site, and I look forward to getting past the testing and proof of concept stages to see what it can really deliver.

Exception Handling

Jeffrey Richter – Wintellect@JeffRichter

Superb talk, and this highlighted that I need to start thinking about exceptions differently to how I currently do.  He highlighted the myth that “Exceptions should only be used for exceptional situations”, and an exceptional situation isn’t something that rarely happens, it’s when a method doesn’t do what it says it’s going to do.

ProcessPayment(Customer, Order, CardDetails)

If the above method does not actually process the payment (for any reason), then throw an exception – hopefully of a type that is useful/meaningful.  The caveat to that is that you should only catch exceptions that you can meaningfully do something about.

So what if the customers payment was declined?  What if the customer is blocked from placing orders? What if the card has some issue with it?

All of these feel very much like reasons to throw business related exceptions.

There was an awful lot more to this talk, and I feel bad distilling it to the above, but for me, this was the key gain from that talk – that I need to start thinking about exceptions in a wholly different way.

Day 3

Improving Quality with an Automated Build Process

Simon Brown – Coding the Architecture@simonbrown

Another of those ‘it’s obvious, but I bet not many of us are doing it’ talks – the talk focussed on Simons work on an internet banking site, what they used in order to help them improve quality, streamline their processes in terms of software delivery, and just generally make their lives easier.

There was a lot of discussion in this talk around tooling, and I shall have to do a thorough investigation of those tools available with regards continuous integration and build management.  Simon used Nant, Nant Contrib, Cruise Control.Net, NCover, NCover Explorer and a number of other tools.

If I had one criticism of this talk it’s that I’d have liked to see a bit more hands on/working with the tools, though I can only imagine how sensitive their code base is, so can understand if this was the reason this wasn’t possible.

Overall though a very thought provoking talk, and one that will see me doing an awful lot more reading and playing in the coming weeks.

Closing Thoughts?

What about the rest then?

The other talks I attended were all good too, though obviously the blog post would have gotten stupidly long (well, it is stupidly long, but it would have been far more painful to read than it already is!).

One of the big things for me from all of this (and I apologise unreservedly to @ericnel for this), Azure – I’m just not convinced.  I’ve joined the UKAzure fan site in order to monitor developments on this, but it just doesn’t feel mature enough to be a production platform.  Strategically I can see where Microsoft are going with this, and over time clearly improvements will be made.  I’d just feel if I got involved now, I’d be beta testing in order to feedback for the next version of the product, and with so many other technologies available for me to play with, this one has been bumped off the list.

All in all though, a fantastic conference, and one that leaves me feeling significantly fired up about the technology that I’m going to be employing over the coming months – thanks!