DDD10 – The day of REST

I was on holiday when the sign-up for DDD10 went live and I missed the window by about 5 minutes.  Still, I added myself to the Waiting List in hopes that it would work and on Monday I got an email letting me know I had a place – Excellent!

Reading through the schedule, I decided to take advantage of those which relate to my current role as a Lead Developer in 7digital’s API Team, which meant the three REST talks.
The first session, Jacob Reimers’ “Taking REST beyond the pretty URL“, failed to meet me lofty expectations.  It was more of an introductory talk, which did not go much beyond level 2 of the Richardson Maturity Model.  From the questions of other attendees, this talk did get some people thinking, with questions wondering how interactions could be reproduced using only the HTTP 1.1 Verbs, but I was not one of them.  It is at times like these that I realise just how forward-thinking London is and that there are many places where this kind of approach is not a given.
The second REST focussed session I attended was Dan Haywood’s “Restful Objects – a hypermedia API for domain object models” and simply put, it boggled my mind, but not in a good way.  It was obvious that Dan had done his research, but when it came to his implementation, something had gone terribly wrong, and it was like entering the Twilight Zone.  Restful Objects is a specification which aims to standardise and genericise REST.  I’m not a fan of “generic”.  In my experience anything that aims to be generic ends up being complex, difficult to use and maintain, and incredibly inflexible, as such I mentally flinch whenever someone uses that word to describe a system.  
The biggest things which stand out in the spec is the inclusion of an “action” in the URI and a requirement for ~/{resource}/invoke endpoints – this misses the point of using the verbs on the resources themselves!  It is littered with URIs such as http://~/objects/ORD/123/actions/placeOrder/invoke. It also advocates exposing the properties on the URI too, which I believe pulls this property out of the context of the resource.  Also, it seems to advocate exposing your domain as the resources thereby creating systems which end up with tight coupling and knowing too much about each other.

Dan does caveat his design by stating he believes there is no need to hinder and complicate your system too much if it is to be entirely internal.  I disagree, to some extent, all of these systems will become “public” in that they will eventually be integrating with other systems and teams that you do not have direct control over and therefore need to minimise the coupling.  At 7digital we design all of our internal APIs with the same approaches and philosophies as if they were publicly exposed, and at some future date, that may even become the case.

Finally, there was Mark Rendle’s session “Simple.Web 101“.  Although, not a session focussing on REST itself, but on a REST framework.  I had seen Mark unveil Simple.Web back in June at the Progressive .Net Tutorials and I was curious to see how far it has come along. At 7digital we mostly use OpenRasta, but we have a few APIs written in NancyFX too and we’re always open to finding new tools which may be better for the job.  As this was only a 101 talk it didn’t go into enough depth for me to see what the improvements have been, but Mark is giving a free in-depth discussion this SkillsMatter this Monday.  Unfortunately I cannot make Mondays as I have my Cello lessons, but I will catch the podcast later.  

Outside of my mini REST-fest, I attended Neil Barnwell’s talk on “CQRS and Event Sourcing… how do I actually DO it?“.  I have unwittingly managed to avoid learning anything about this area and was hoping Neil could educate me fully in only an hour, which I feel he succeeded to do.  It was an overview with some code examples thrown in which have removed the mystery for me.

Out of curiousity, I attended Jimmy Skowronski’s talk “C# + PowerShell = happy couple” and learned a little about writing your own commandlets.  Finally, Garry Shutler took us through “10 practices that make me the developer I am today“, which he described as a retrospective of his career thus far and hoped to impart some useful lessons.

I had a great day and I wish to thank all of the organisers and everyone who helped and I’m already looking forward to next year.