Progressive .Net Tutorials

This week I attended the Progressive .Net Tutorials at Skillsmatter.  It’s a 3-day conference of hands-on tutorials focussing on the .Net Platform.

Day One

Don Syme talking about F# (Photo from @AnaisatSM)

On the morning of the first day I attended “Practical Functional-First Programming” starting with Don Syme giving a presentation of the benefits of using FSharp.  To me the presenation felt far too “sales-y” for my liking containing statements along the lines of F# will make you write robust code faster and with less bugs – I’m sure I’ve heard that said before about almost every language out there…  We then got our hands-on some F# with Phil Trelford introducing the F# Koans.  I’ve completed these before, and feel that they are a fantastic practical introduction and I recommend looking for Koans in any language you plan to learn.

After lunch I went to Liam Westley’s “Async and C# 5“.  This was very much the same talk I had seen at DDD9 in January last year, but as it was a tutorial we got our hands on trying out the Async ourselves – once I’d finally downloaded the VS2011 Beta of course.

Day Two

Look! It’s me in the audience😀  (Photo from @AnaisatSM)  

For the first talk of the second day, I took a chance and saw Mark Rendle‘s “Introduction to Simple.Web“.  As Mark himself said, he’d not talked about Simple.Web before, so he was pleased that so many people came to see him talk about something no-one had heard of, but I had heard of Mark and his tool Simple.Data.  It turned out to be the beginnings of a REST framework, but unlike OpenRasta, which we use heavily at 7digital for our APIs, it has HTML representations as a main focus and works very nicely with Razor.

It’s still very much a fledgeling project which doesn’t handle errors or logging very well, and I daren’t ask about which IoC containers it integrated with, but it was only created at the end of Feb!  I’ve already taken my own fork of the repo and will see if there’s anything I can contribute.  You can read more about it on Mark’s Blog.

In the afternoon I chose Gary Short’s “End-to-End Javascript“.  I’m afraid that I’m one of those developers who shies away from the front-end and anything related to it.  As such, I’m quite perturbed by Javascript and it’s craziness and felt this talk would hopefully give me a kick up the backside to get it all figured out.  Sadly, it did not.  Instead, I felt inundated and lost track rather quickly.  It was a tall order – MongoDB as the data store, NodeJS for the middle tier and JQuery on the front end – all to be introduced and linked together in 3 hours.  I didn’t have MongoDB installed and soon got left behind trying to get that downloaded.  NodeJS installed quickly, but I couldn’t do anything without a data store.  By this point  Gary was already talking about JQuery and I gave up trying to catch up.

Day Three

I could not decide between Dan Thomas’ talk on “HTML5” or Dylan Beattie‘s tutorial on “Security and Identity in the .Net World“.  I went with Dylan as I wished to know more about OAuth as we use this for our APIs at 7digital, also with Skillsmatter recording all the talks I could catch up on the HTML5 one.

Dylan’s tutorial was probably the most organised.  He came fully prepared with printed out tutorial worksheets, also available online, which meant that everyone could move at their own pace and not get lost trying to keep up with the presenter’s typing on the projector.  He gave a quick presentation and description as to why it is important to consider identity and that it is probably best not to write your own solution when the built in tools from ASP.Net are so easy to set up – in fact he did just that whilst holding his breath to show how quick it can be done.

A third alternative, is to get someone else to do the identity checks for you, such as Google or Facebook, and use OpenID or OAuth to manage this.  The talk focused on OAuth 2.0 which seems far easier to grasp and more featured than the OAuth 1.0 we are using at 7digital.

After lunch I decided to attend Ashic Mahtab’s tutorial on “Messaging – It’s not just about Large Scale Integration“.  I had missed Ian Cooper’s talk on “Messaging 101“, plus the description included things such as dependency injection and aspect orientation – it promised to be a fun talk.  Unfortunately, it was impossible to keep up with Ashic as he typed away on the projector and many others also got lost along the way.

Coding makes us smile! (photo from @AnaisatSM)

He dived straight into coding with generics and actions, which can take a few moments to decipher if you’re not sure what the intent is.  It seemed as though he wanted to show the steps you would go through to grow a codebase which would implement dependency injection and aspect orientation from the ground up – therefore not needing any other frameworks.  He really seemed to really know what he was talking about, but it was presented in a hardcore lecture style at a very fast pace.  I got so lost that I decided to bail after the break and hang out in the breakout area getting to know the enemy guys at Huddle.

Thank you

It was a great conference, with great presenters, great talks and great attendees.  I have a lot to think about and play with now.  I also want to thank Skillsmatter for being great hosts (the food was wonderful!) and for recording the sessions I missed and making them available online.

F# Koans

This lazy Sunday afternoon I decided to spend an hour two working my way through the F# Koans project on Github.

As my functional knowledge is zero to none I found this exercise quite interesting – Pattern matching and Pipelining in particular.

I ran the Koans in VS2010 which comes shipped with F# and in order to get the project to compile I needed to remove and re-add the assembly Fsharp.Compiler.CodeDom so that it was referencing the version.  I have created an issue on Github to alert the author of this.

Quick Gr1d F# Tips

Just made the following quick post on the Gr1d Forum of using F#with the game, in particular setting the CLSCompliant attribute and signing/strong-naming the assembly

Just a quick tip for anyone else thinking of using F# with Gr1d.

It’s not obvious where to stick the CLSCompliant Attribute and Google wasn’t a great help.  I eventually found this post which shows that you need to explicitly create and ‘assmeblyInfo.fs’ file and add the attribute there. Also, signing/strong-naming isn’t built into the properties window of the project like it is in C#.  As described in this post, you need to add a command to the ‘Other Flags’ textbox on the ‘Build’ Properties window pointing to your keyfile (which you can create from the C# properties window and just reuse with a full path), e.g.


Other than that, I’ve found the F# Survival Guide to be an excellent resource. I’m still learning the language myself, so please feel free to reply with any more tips😀

    Taking over the Gr1d

    Ok, so it seems that I have a short attention span and am easily distracted by the next ‘shiny thing’.  The current ‘shiny thing’ with my attention is Gr1d – an RPG for Programmers.  I’m really, really enjoying it.

    The concept is that you code some Agents based on a chosen predefined class and these Agents run around the Gr1d claiming nodes.  The more nodes you claim, the more experience you earn and you level up allowing you to use more class skills and deploy more Agent bots at the same time.  You will encounter other Agents on your travels which you can either attack or flee from, depending on how you’ve coded them.

    So far I’m a lowly Agent with extremely simple logic, basically crawling around the Gr1d collecting nodes and fleeing as fast as possible from any danger – it’s great fun!

    The software is still a little buggy with the Ticks (a timer concept) regularly getting stuck and some people’s poor code bringing the system down, but with each revision the creator ‘root’ improves all of these things.

    I’m also hoping to use this little game to learn F#.  So far I have coded my really stupid Agents in F# but have hit a hurdle in that the servers do not have F# installed, yet.  We shall see what happens when I pit my C# and F# Agents against each other🙂

    Give Gr1d a go, it’s great fun and an awesome tool for learning programming or .Net if you’re new to these concepts – there’s nothing quite like a game for making learning fun!