After repeated attempts to resume blogging, I think I’m pretty much determined to end my hiatus. And I’ll start off with my experience at DDD Belfast.
Apart from a Scott Gu special event last year, this was my first DDD event. The travel up to Belfast was a bit hectic - the “journey” from the security gates to the EasyJet gates at Gatwick seemed like a mile long trek. Note to self: if flying out of Gatwick, leave an extra hour in your schedule. We were horrendously late but the pilot was kind enough to let us board minutes before take off. Surprisingly, the landing in Belfast has to be the best three point landing of any flight I’ve been on. Anyway…onto the geeky stuff.
Mine was one of the first sessions. Due to some awesome weather on a Saturday morning, turnout was relatively low. There were 15-ish attendees in the session. Having a smaller audience meant some nice discussions about the pros and cons of Code Contracts. I tried to give a good idea of what Code Contracts is and how it may benefit their projects – be it greenfield or brownfield. I also put forward the common problems they may face and what they could do to overcome them. The slides from the session are provided below:
CQRS and Event Sourcing
This is the session I really wanted to take as it’s one of my primary fields of interest at the moment. The session was just after lunch and attendance was significantly higher. I believe I managed to fill the room. It was nice to see such interest in CQRS and Event Sourcing. I was also taking a risky move – a couple of days before the session, I decided to scrap my presentation and create a new one showing exactly how simple it is to use these patterns in even simple applications. There seems to be a negative vibe around CQRS suggesting that it’s only appropriate for large scale complex systems. While that is definitely an area where it can be applied, even simple systems can benefit from it. My goal was to put forward these benefits and provide an easier way to try it out. In order to do so, I created a usable (as in real apps) CQRS / ES mini-framework in exactly 250 lines of code – a file that you can simply drop in your project and start using. Sure, the file can be refactored further and it doesn’t to everything. But it is extendible and you should be able to bend it to your will. Creating the framework took less than a night’s coding – and considering I hadn’t previously used RavenDB before, it reflects exactly how simple the architecture really is. There’s far more to what it than what can be shown in a single hour and I shall be blogging about it in the coming days. Initially I had wanted to show just slide no. 5 after taking the decision to scrap the previous presentation. I ended up adding a few more. Like most of my talks, it’s more about the code than it is about slides. But if you want to see them, then here they are:
I’m yet to receive the “official” feedback from the event but the vibe was quite good. I will be releasing the code in an upcoming (series of?) blog posts. Stay tuned
Other People’s Sessions I Attended
RefORM – Death to ORMs in .NET
James (@kouphax) did an excellent job of summing up all the Micro ORMs that have been popping up left, right and centre. He quickly covered the ones you hear about, their relative levels of abstraction, their pros and cons and showed us code samples. I quite enjoyed the talk.
BDD with F#
Phillip (@ptrelford) told us about BDD and how “framework” agnostic it is. He then went on to show us his F# BDD framework called TickSpec. He showed how BDD is used in real projects and how TickSpec is nicer than other tools like SpecFlow. While I agree to the last statement, I’m not particularly fond of SpecFlow and if you feel the same, then take it with a (tiny) grain of salt. Regardless, the usefulness of BDD was clearly put forward.
During the last session of the day, some attendees and speakers got together for a free for all talk which was quite fun. All in all, it was an excellent event. Kudos to Jackie (@kievia) who managed to put the event together in difficult circumstances.