Friday 26 November 2010

Scrum, Lean and Kanban Training

So over the first 3 days of this week I attended a Certified ScrumMaster course and a Lean & Kanban course back to back and it has been interesting to see the differences between them which I’ll get to in a bit.

Certified ScrumMaster

The course was run by Paul from Agilify with some help from Geoff and with some very good exercises demonstrated very quickly the benefits of an iterative approach to work and how retrospectives can drive continuous improvement.
Over the 2 days Paul & Geoff explained where Scrum came from, how it works, the Agile Manifesto, the 5 values of scrum, etc and how you can use all these things day to day to help you.  The second day the value of iterative working, fail fast, etc was all demonstrated by splitting us into 2 teams and building a lego city in four 11 minute sprints included planning, review and retrospectives, this gave people a compressed experience of Scrum which allowed the course attendees to see how the various parts of the process fitted together.
The course was finished with Paul & Geoff going over some of the things a ScrumMaster does & doesn’t do, Scrum Fact or Myth and a competition between the teams in relation to everything we had covered over the last couple of days.
I thought that the course was excellent and I believe that the attendees who had never heard of Scrum before went away from this course with a really good idea of what Scrum was about and how you went about doing it.

Lean and Kanban

In contrast this was a single day course covering Lean principles/practices and Kanban, it was run by Bazil Arden who has a lot of experience in Scrum and Lean.
Bazil started off by outlining how Lean has evolved from the Toyota Production System in the 1930’s through to today so you get the idea that this isn’t some new fad methodology and in fact the manufacturing industry has been using it during this time.
Lean is a comes with a toolkit of different principles, practices and techniques to help identify problems in your organisation and ways that you can tackle those problems.
Finally Bazil took us through Kanban covering its origin and how it is used today  with software development, he outlined the Kanban is used in its most basic form and then how you can ‘enhance’ Kanban to provide additional value for your organisation.

The differences & Similarities

So the main difference between them is that Lean is a complete methodology that also includes a work scheduling system where as Scrum is a lightweight process just for project management that has no proscribed techniques or practices for identifying and solving problems.
The main similarity is that both Lean & Scrum look to an empowered team to get the most of of them and this ranges from being able to come up with solutions to any problems they face.
Both Scrum and Kanban make use of a board to track the work in progress with the intention of making any problems very visible so that everybody can see there is a problem and can then look to tackle them.
After seeing how Kanban should work in practice I believe that the basic version of Kanban is not the best fit for the delivery of software projects but I can see how it would be perfect for a team handling support.

Conclusions

I believe that for software development Scrum is the better fit for managing the work involved in a defined project, however, if you are dealing with support I can see how Kanban would provide the same sort of benefits as Scrum but with even less overhead.
There is absolutely no reason that you couldn’t take the Lean practices and principles such as 5 Whys and use them with Scrum.
I think that ultimately it comes down to what works for you, just take the time to look into the different tools and decide what works best for you.

Wednesday 17 November 2010

Firebreak!

So when you’re doing Scrum (or another iterative process) the constant pressure to deliver business value can be a bit relentless and a side effect of this is that you do not get time to investigate new/alternative technologies, unless it is for a genuine business need, you may also find that often technical debt can build up due to lack of time in a sprint to fix it.

So to remedy this situation you can implement a firebreak week/sprint where the team is not tasked with delivering business value rather they are given the time to be able to investigate new technologies, clean up technical debt, etc.

The team can utilise this time in any way they see fit, it should still align in some way with what the business needs so that the business is still getting value from what the team does, but it is the team that gets to decide what they do and how they organise themselves to do it.

For the business the hardest part of allowing a firebreak is often the lack of control over what the team does and the concern that they’ll sit there all day doing nothing but in reality most teams grab the opportunity to do things that will benefit them in their work either now or in the future e.g. clean up technical debt, investigate a technology that could be used.

During the firebreak there does not have to be any daily stand-ups and you don’t necessarily create stories and tasks relating to what you are doing but as with all things agile you customise it your way so if the team still wants to stand up and tell everybody what they are doing then let them.

If the team are investigating many different things then it can be valuable for them to put together grok talks to give to the whole team to share any knowledge has been gained during the firebreak to ensure that the knowledge doesn’t remain silo’d with any individual(s) .

The value to the business of allowing a firebreak is that it helps to reenergise and motivate the team and provides an easy way to allow for R & D without impacting on normal delivery of business value. 

The firebreak can also be used to align development and business cycles, if you follow 2 week iterations then you find that the developers will have a sprint/iteration that finishes a week before the end of a quarter so what do you do - simply not worry about it and allow another sprint to start so that it overlaps, or would you rather have the next sprint start at the beginning of the next business quarter?  If you need to align the sprint cycles with business quarters then a regular firebreak at the end of each quarter allows the cycles to be aligned and keeps the team happy for the reasons outlined above.

So if you are doing scrum and finding the experience a bit like a hamster wheel perhaps you need a firebreak.

Monday 15 November 2010

Tech Ed–Post conference thoughts

Ok so the conference is over, I blogged about each day and now its time to reflect on the subjects covered:

  • The new members of the family
  • Agile
  • CMS
  • ASP.Net MVC / HTML 5
  • WCF
  • Silverlight/WPF
  • Parallelism

The new members of the family

I took time at the conference to ensure that I got an overview on the 2 newest members of the development family web matrix and light switch as up to this point I hadn’t seen either and wanted to know if they would possibly fit into my toolbox and I believe the final verdict is that they I don’t see them an appearance in my work any time soon.

Agile

I attended a couple of sessions on Agile but although really good sessions I didn’t take a lot away from them, this was through no fault of the presenter I just happen to have a fair bit of experience in this area. See my post for details.

CMS

I got to see Umbraco & Orchard CMS’s demo’d by very knowledgeable people in both environments and it was interesting to see the differences between the two and its given me a head start in evaluating them.  It will be especially interesting next year when Umbraco bring out a MVC version to see how that stands up against Orchards native implementation.

I believe Umbraco is the more usable at this time simply because its not pre-release code and has a very large community supporting it.

ASP.Net MVC / HTML5

There were very few sessions on MVC with the majority of them being around the newly released MVC 3 and I didn’t manage to attend any of these.  I did get to attend a session on ‘Design Considerations for ASP.Net MVC Applications’ which whilst interesting wasn’t quite what I was expecting and again see my post on this for more details

The HTML 5 session was really good giving me a very good understanding of what “HTML 5” is, some of its capabilities but more importantly that whilst in a cross over period where HTML5 & HTML4.1 co-exist additional work will be required to allow the users a seamless experience whatever technology they are using.

WCF

There were a couple of sessions that I attended on WCF RIA & Data services both of which are newish additions to the WCF family and it was interesting to see the differences with RIA effectively staying SOAP based and Data Services moving to a REST based model.

Whilst the Data Services looks fantastic I have seen people I know struggle to be able to use it in quite the way that is promised but until I have a go at it myself I can’t say whether it is hard to do more than trivial applications, if I get to look at it I’ll blog about it.

Silverlight/WPF

The majority of the sessions I attended ended up being about Silverlight and/or WPF, this wasn’t explicitly by design but after all the furore over whether it was dead or not and I wanted to find out what the future held for Silverlight.

I think through the various sessions I attended and people I spoke to that the original idea of Silverlight being the cross platform technology from Microsoft is not longer the case but it is far from dead and has a future in the creation of LOB applications for the enterprise and as ‘islands of richness’ in general web sites much like the way that flash is used now.

Parallelism

There were a lot of sessions on parallel programming which is not surprising given that C# 4 has introduced the Task Parallel Library and the new CTP for the Asynchrony functionality.

Due to various scheduling issues I only managed to attend one session but it was a brilliant session which was less about the actual technology and more about how you could apply it to gain the performance benefits it promises.

Summary

I found this conference interesting in that my team got to decide a fair number of the sessions I went to rather than me simply picking the ones I may attended otherwise.

I also prioritised these sessions as we are about to start Silverlight development in work and as such I wanted to know as much as I could about the subject and ensure that we were making the right decision to do the development in the technology.

I think that the conference was good but perhaps could do with a little more developer focused content, in the past there has been an entire week given over to just developers.

Saturday 13 November 2010

Tech Ed – Day 4

Ok so last day of the conference and it was only half a day with 3 sessions and as expected I had started understanding where everything was so I didn’t have to walk so much.

So the sessions that I attended today were;

  • Your Questions on MVVM Answered
  • Light up on Windows 7 with WPF and Silverlight
  • WCF Data Services A Practical Deep Dive

Your Questions on MVVM Answered – Laurent Bugnion

So first session of the day was an interactive session all about the MVVM pattern, Laurent commented that he expected nobody to turn up as it was the last day of the conference and the first session of the day but the room was full with people wanting to have their questions answered.

Before Laurent started taking questions he quickly restated the MVC pattern and then MVC with passive view before describing the MVVM pattern and the advantages of using it.

Then he started taking questions which ranged from better control over a drag ‘n drop data source to should you include code in the code behind.  Laurent answered all the questions and where possible showed code demo’s of the problem and solution so you could better grasp what scenario you may come across and how to solve it.

The session seemed to be over all to quickly but I hope I’ll be able to side step some common issues when doing development using MVVM.

Light up on Windows 7 with WPF and Silverlight – Pete Brown

So if you’ve been following my blog posts you’ll have noticed that I’ve attended several sessions with Pete, this wasn’t by design rather Pete just happened to be presenting interesting topics in the various timeslots.

So this session was focused on what extra stuff you could do when developing on Win 7 and the extra UI features available.

From the Silverlight perspective it was all about ‘Out Of Browser’ (OOB) applications and what OOB offered you and to get the most out of OOB you really need it to run with elevated privileges because that then gives you access to more functionality on the desktop like the speech API and automating MS Office.

WPF has a load more functionality that generally seems to revolve around the task bar and the functionality available with the task bar item such as being able to show a progress bar on the applications task bar icon, adding jumplist functionality, etc.

Pete finished off the session by showing how easy it was to connect and work with external sensor devices like GPS or a joystick when you used .Net 4.0 and WPF.

WCF Data Services A Practical Deep Dive – Mario Szpuszta

The last session of the conference was all about WCF Data Services and oData and it was obvious from the beginning that Mario knew his subject matter.

He began with a quick overview and demo of oData and how you are able to use it; with this done he built his own oData service, WP7 client and showed the phone consuming the data.

With the WP7 client completed he then moved on to creating a console application that would allow not only consuming data but also updating and inserting data.  Unfortunately he ran into a couple of problems but it was interesting to how he solved the problems including how to use fiddler to debug the service and the messages being passed around.

Unfortunately Mario didn’t manage to cover everything he wanted to but he promised to make all slides and code available for download so that we could look at it ourselves in more detail.

Summary

So today was sort and sweet and for the majority of it revolved around Silverlight, WPF and MVVM and I found all the sessions useful and have definitely taken away things to look at and explore in the future.

As per the other days I have more extensive notes for my team but if you want them drop me a line and I’ll sort them out for you.

Friday 12 November 2010

Tech Ed–Day 3

So I’m starting to find my way around a bit which is typical when you’ve only got 1/2 a day left at the conference.

Today I almost managed to go to all the talks originally planned for, I changed one at the last minute after checking on the content, the sessions I attended were:

  • When working software is not enough: Death of an Agile Project
  • Architecture in Agile
  • Silverlight experts panel
  • Deep Dive into “HTML5”
  • Design Considerations for ASP.NET MVC Application

When working software is not enough: Death of an Agile Project – Mitch Lacey

Despite its title this presentation wasn’t really about agile at all.  Mitch was using a project that he worked on as a case study in how just producing working software using agile can often be the least of your worries.

What Mitch highlighted in his presentation is that no matter how good you are at developing software in an agile manner when it comes to statements of work, contracts, etc. things aren’t that easy and if you aren’t dealing with the right people in the client organisation, or worst still, don’t know everybody who is actually involved you will run into a lot of issues.

The main thing I took away from this presentation was if the customer wants fixed schedule, fixed cost and fixed features create a contract for doing just that even if you know its going to change and then charge the customer for every single change they want to make.  Also if you estimate its going to cost £1 million and the customer only wants to pay 1/2 that then walk away unless you have a really good reason to foot the bill for the other half of the work (Mitch said that the company he was with absorbed the extra cost as they had another £5 million contract with the customer about to start).

Architecture in Agile – Mitch Lacey

So I went from one session with Mitch to another and I was looking forward to hearing his thoughts on how architecture and architects fitted into an agile environment.

I was a disappointed in this session as the majority of it seemed to be more like a sales pitch to architects who were perhaps not working in an agile environment currently; if I had no agile experience then I believe this would have been a good introduction to agile principles and practices with Mitch explaining how you slice the system, create throwaway code to get it working, etc.

For me Mitch covered a little of what I had originally attended the session for right at the end explaining how he saw an architect working in an agile team and utilising emergent design/architecture working out any architecture that was needed in a just in time fashion.

One really good anecdote was an experienced architect who worked on one project with him and saw the architecture that was created after the project was successfully completed said to him that it was a really elegant design and even with his 20 years experience he didn’t think he could have come up with an elegant design if he worked the way you normally work i.e. big up front design which shows that simply have x years of experience isn’t always what you need or even helpful.

Silverlight experts panel – Gill Cleeren, Laurent Bugnion, Pete Brown

This was an interactive question and answer session with the presenters fielding questions that were asked by the audience.

I asked the first question which was ‘is Silverlight dead?’ and felt I got a corporate answer being told its not dead and that Silverlight 5 was on the way rather than the discussion I had hoped for relating to where Silverlight sat currently and where they saw it in the future.

I won’t relate all the questions and answers here as there were about 20 of them and some with answers from all 3 presenters, but during the course of the session I sort of got the answers I was looking for so to summarise what I believe Silverlight is now being used for and where its going in the future:

  • Silverlight's main focus is most likely to be internal line of business applications in the enterprise providing quicker development and ease of deployment and maintenance.
  • It may be used on the internet but only to provide specific functionality much the way flash tends to now e.g. play video
  • Silverlight is intended to create web based applications not general sites for people to browse.
  • Html 5, when it comes, will the technology to create sites/applications outside of the enterprise but you are still likely to find Silverlight fulfilling a the web application niche where you need rich functionality.

Deep Dive into “HTML5” – Giorgio Sardo

This was a very well timed session coming after the Silverlight Experts panel as up to now I have not looked into Html5 at all and so was very interested to hear all about it.

So Html5 is the future of the web, well most of us knew that already, but what I wasn’t aware of was that what people are calling Html5 is in fact a collection of 80-90 specifications that the W3C are looking at and a lot are at different stages in the path to recommendation some are only at the draft stage (beginning) and others are at recommendation already e.g. next version of javascript.

Giorgio went then went on to demonstrate the video and canvas elements as well as CSS 3 & SVG 1.1 showing us some of the power that will be available to us in the future.  Giorgio also mentioned that currently there is very little tooling available out there although there is a download for VS2010 which could help you now as well as some other libraries and utilities.

The one thing I did take away from this presentation is the amount of complexity that web developers/designers will have when trying to use these new features but at the same time making the sites work with browsers that only support Html4.1 which there doesn’t seem to be much discussion over.

Design Considerations for ASP.NET MVC Application – Dino Esposito

Based on the abstract for this session I was expecting to hear and see demos on how best to structure ASP.Net MVC applications to make best use of the technology.

However, the session started with Dino talking about SOLID principles and how at an abstract level ASP.Net MVC controller action method was no different to ASP.Net Webform's event handler with the only exception on closer inspection being ease of testing.

The talk then continued on lines of how to best meet Single Responsibility Principle in your controller, what a service layer was, and the different ways to access data in the view (ViewData, Model & Dynamic in case you were wondering) with strongly typed views using a Model as the best way for any reasonably sized project.

With the majority of the session gone Dino then briefly covered Dependency Injection via implementing your own IControllerFactory before moving on to ASP.Net’s aspect orientation implementation via ActionFilters and how you could create a way to dynamically inject the filters at run time to introduce new aspects without having to recompile and deploy the application, which he then demonstrated using a framework he has created which does just this.

Summary

I found today a mixed bag with the first couple of sessions interesting enough but didn’t really tell me anything new. 

The next 2 sessions helped me fill in gaps in my knowledge so I now have a far better idea how and where to use Silverlight and the real impact Html5 will be having on developers.

The final session was a little disappointing but interesting to see dynamic injection of cross cutting concerns, although I’d probably need more information about what problem this functionality actually solves before attempting to use it.

As per the other days I have more extensive notes for my team but if you want them drop me a line and I’ll sort them out for you.

Thursday 11 November 2010

Tech Ed–Day 2

So day 2 at Tech Ed, still not quite managing to find my way around and getting sore feet from all the walking.

Due to some talks being far more popular than the organisers anticipated I only managed to catch to get to 4 sessions;

  1. Building Web Sites with Orchard
  2. Building Business Applications with Visual Studio LightSwitch
  3. Patterns for Parallel Programming
  4. Introduction to WCF RIA Services for Silverlight 4 Developers

The sessions that I missed out on were:

  1. How Frameworks Can Kill Your Projects and How Patterns Can Prevent You from Getting Killed
  2. Web Applications in Danger: Attacks Against Web Sites and RIAs

With any luck the sessions may be repeated or failing everything else I should be able to view the videos online.

Building Web Sites with Orchard – Bradley Millington

This session was all about a CMS called Orchard that has been built on top of ASP.Net MVC, it was first announced at Tech Ed last year and its currently pre-release software with an expected release date to January 2011.

Orchard has is built around the concept of Layers, Zones & Widgets which gives the system a lot of flexibility when it comes to how the pages are laid out and how/what content appears in the pages.

The team building Orchard hope to build a community around it much as Umbraco has done and have already created Gallery functionality that will allow people to upload modules that extend Orchards functionality.

Orchard has been designed to be localised from the ground up so not only can you localised the Admin UI you can add translations for the content, it currently doesn’t have any functionality to detect a users culture settings and automatically use the appropriate translations but you can do that yourself and hopefully it would be in the RTM.

Just as per Umbraco you can use Live Writer as an interface to allow business users to enter content into the system.

Building Business Applications with Visual Studio LightSwitch

LightSwitch is the new product from Microsoft in the Visual Studio family aimed primarily at business users who are currently using Excel & Access to create applications themselves rather than asking developers to do so.

LightSwitch has generated a lot of bad feeling in the developer community as generally it is not seen as a ‘professional’ developers tool, I believe the issue is that it is in the wrong product family as it should belong in the office family of products along side Excel and Access the tools the users are already using.  If the product was in the office family I believe that you would see a lot of the bad feeling disappear and may even get some traction from the developers in getting the business people to use it.

The product itself allows users to select from a data source, or sources, and it will then generate a UI in Silverlight for the user over the data. A data source can be a database, SharePoint, RIA service, etc so the user has a lot of flexibility over where they can select data from and how they link it together.  Only issue this could cause is the user is unaware of the time it may take to query these sources and performance could be an issue.

The generated screens are simple enough and the product will allow you to customise them to give user friendly names, add validation rules, etc but the user will need to be able to write some Vb.Net or C# in able to accomplish some of these tasks.

LightSwitch also comes with deployment support to allow the user to decide how it will be packaged and deployed, will it be a desktop app or a browser app, the user decides, my question at this point is how does this align with an Enterprise that controls all software that is deployed to the desktop centrally?

It is possible to create your own extensions for LightSwitch and have them utilised within the product and Microsoft seem to be looking to developers to do just this to enhance the whole LightSwitch eco system.

Ultimately I don’t see this tool being used by developers but it may gain some traction with business users that its aimed at, all I can say is please move it to the office product family to avoid the tears and tantrums that abound from developers.

Patterns for Parallel Programming - Tiberiu Covaci

This session was not on the original session line up, the presenter for the original session was ill and so Tiberiu (Tibi) was drafted in to fill the gap and he did so admirably.

Tibi set off at a cracking pace and didn’t let up the whole way through explaining to use about the benefits of being able to parallelise code and how to go about it.

To help demonstrate the various parallel techniques and discuss the patterns relating to them he used an example of cooking a meal and having code replicate the steps in the recipe, this provided a nice simple frame of reference that I believe the whole audience could relate to.

He then went on to put into practice how you can work out what can be parallelised and how you then implement that in the code using the functionality that is available in the .Net 4.0 framework.

To round off he gave us a load of links to resources to help learn how to do this and also a list of books that would help.

Introduction to WCF RIA Services for Silverlight 4 Developers – Peter Brown

The final session of the day for me was with Peter Brown which coincidentally was the same as yesterday.

Today Pete was explaining how you implement the RIA services that have been introduced in Silverlight 4 and what you can do with them.

Pete started off by explaining a little about the new Business Application template in Silverlight 4 and how it fits with the DomainService concept.  He then went on to create a DomainService and have it implemented in the client showing the client retrieving data through the service.

A note of caution was raised by Pete when he said that you don’t get good separation of concerns and that testing could be difficult although he felt that the functionality that was offered at least balanced out these issues.

Pete then went on to demonstrate how you could paginate, sort and filter the data simply by setting various properties on the Domain datasource that your UI is bound to.

Basic client side validation is also possible utilising the DataAnnotations assembly that is also used in MVC to indicate things such as max length via attributes on a meta data class for the entity linked to the DomainService although it is not possible to do cross field validation through this technique.

Finally Pete showed how you can add authentication simply by decorating the DomainService with attributes and that both Windows and Forms authentication was supported.

Summary

Although I wasn’t in sessions all day (nice to have lunch at a more leisurely pace) I found the majority of the sessions interesting and I have enough information for me to perhaps look at some of the things I have seen in more depth.

As per yesterday I have more extensive notes for my team but if you want them drop me a line and I’ll sort them out for you.

Wednesday 10 November 2010

Tech Ed 10 Berlin–Day 1

Whilst this post is entitled Day 1 it was day 1 for me not Tech Ed which in fact started on Monday with pre-conference workshops and opening keynote.
I must also mention how confusing the conference centre is and trying to work out exactly where you are is a bit of a challenge but hopefully this will improve as the week goes on.
So here is a list of the sessions that I attended on the first day were :
  1. A Lap around Web Matrix
  2. The Future of C#
  3. Systematic Approaches to Project Wide Refactoring
  4. Code Like a Pro: Tips, Tricks and Techniques for Writing Killer Silverlight Applications
  5. Building Great Websites Fast using Umbraco, an Open Source ASP.NET CMS
  6. 10 Things Every New Silverlight and WPF Developer Must Know

A Lap around Web Matrix – Bill Staples

This session was the first time I’ve seen a presentation of the Web Matrix product which is primarily aimed at the ‘hobbyist’ programmer and I attended the session to see if the product could be useful to professional developers.
The presentation revolved around a set of demo’s showing how easy it was to create sites/applications with little or no work using the template systems.  When Bill then drilled into it a little it was obvious that this application is not suitable for developers creating enterprise LOB applications but if you are a one man web shop creating sites I can see that it could be of a lot of use making you more productive.
A nice feature is the ability to open a web matrix project in Visual Studio and take the site further and with more tooling support, only caveat there is that you have to have ASP.Net MVC 3 installed.

The Future of C# – Mads Torgersen

This session was partially eclipsed by Anders Hejlsberg PDC session and the initial announcements he made and focused on the same subject which was the new Asynchrony functionality which intends to make it easier for developers to create asynchronous code.
After a brief introduction Lucian Wischik took over to show some code and how the new functionality will work and how it makes life easier for you, this was fairly high level stuff and Jon Skeet has in fact put together a far more in-depth set of blog articles about the functionality.
What was interesting was a question by the member of the audience about whether the new asynchrony functionality would be available on the existing .Net 4.0 framework to which the answer was that the CTP will run on it but when it is RTM it will be on a new version of the framework (.Net 4.5? .Net 5.0?)

Systematic Approaches to Project Wide Refactoring – Gary Short

Gary has been voted top presenter at many conferences so you know you’re going to see a good session when you go and see him.
Although this was only a short session I found it immensely interesting as Gary was giving forth with a way to work out how you could go about working out what to refactor when looking at a application/system in conjunction with Technical Debt (TD).
He outlined different types of  TD with Known & Planned, Unknown & Unplanned, etc combining that with a prioritisation – Urgent, Important and Urgent & Important. Gary then went on to how the business sees the application/system and the tension developers have with the business in relation to getting the business to agree to the refactoring in the first place.

Code Like a Pro: Tips, Tricks and Techniques for Writing Killer Silverlight Applications – Jeff Prosise

This was an really good session with an excellent presenter that focused on some of the more technical things you may want to do with Silverlight as you would expect from a 400 level session.
Jeff covered subjects ranging from dynamic loading of XAP, localised resources, self referential pages (back button support & deep linking), discretizing work so that UI appears to have long running thread in background updating UI and creating custom Behaviours for designers to use in Blend.
Jeff finished up with some small gotcha’s like culture agnostic XAML parsing, thread agnostic libraries and resolving the memory leak issue in Silverlight 4 by making users upgrade to the GDR1 release.
A good session with some interesting tips, I would say that his localisation resolution isn’t the only way to do that and Guy Smith-Ferrier has other techniques that may suit your situation better.

Building Great Websites Fast using Umbraco, an Open Source ASP.NET CMS - Niels Hartvig

Niels was the original founder of Umbraco so he was well placed to comment on how you use it and how it has evolved.
Umbraco prides itself on the user have 100% control over how the product works from the mark-up to the Admin UI, it has a large user community who developer additional functionality for the main CMS system.
Umbraco is ASP.Net Webforms based, but an ASP.MVC version is planned for release hopefully next year, it utilises its own http module and custom server and user controls to be able to render the content and as you have 100% control you can create your own user controls and add them into the site so if there is some functionality specific to your enterprise you can easily plug it into your site created with umbraco.
There is a comprehensive admin UI that will allow the creation of sites, adding content, meta data, etc
Niels also demonstrated how he has created functionality to allow you to use Razor syntax instead of the default XSLT for generation of the mark-up.
One nice thing to note is that Umbraco now supports Live Writer as a content editor which is good because at a previous job we didn’t use Umbraco solely because the business users didn’t like the UI and we had no time to build them a nice one.

10 Things Every New Silverlight and WPF Developer Must Know – Pete Brown

This was a good session that all developers who are starting development in Silverlight or WPF should attend or at least have a more experienced developer pull them to one side and go through with them.
The 10 things that Pete listed were:
  1. Hand code XAML
  2. Expression blend
  3. Layout System
  4. Dependency Properties
  5. Asynchronous Programming
  6. Binding
  7. Value Converters
  8. Architectural Pattern
  9. Threading
  10. Our limitations
If you have to ask about the number above you’re probably not a developer Winking smile
I’ve not listed out all the content under each heading otherwise this long post would be even longer but I’ve got it all stashed away.

Summary

A very full day with some nice sessions, I have taken more notes for my team and if you would like them let me know and I’ll let you have a copy but with most of the sessions videoed and slides, etc available online you can probably just watch the content yourself and draw your own conclusions.

Monday 8 November 2010

Book Review: DSL’s in Action

dslsinactionAfter my last review Manning Books were kind enough to let me have another book to review namely  DSLs in Action by Debasish Ghosh.

When I started reading I discovered the book focuses on languages on the Java Virtual Machine (JVM) specifically Java, Ruby, Groovy, Clojure and Scala and I freely admit that I have no experience in any of these languages, so I would not only be learning what Debasish has to say about DSLs, their use and creation but also getting an introduction into the languages mentioned.

The book is split into 3 parts over 9 chapters and with additional appendices, all the examples in the book are based on a equities trading domain (stocks & shares) and through out the book Debasish provides the reader with information about the domain to help you grasp what the DSLs being discussed are trying to achieve and how different languages can implement the various concepts being discussed.

I did run into one problem quite quickly in that the electronic copy of the book I had to review did not contain any appendices and Debasish mentions that he has put a lot of the basic concepts he will be discussing in the appendix 1 and in fact says after chapter 1 you should read appendix 1 before continuing. 

Part 1: Getting Started with Domain Specific Languages

Part one has 3 chapters which aim to introduce the reader to the world of DSLs what they are, how they help, existing DSLs you may be unaware of (SQL would perhaps be the best known) and the different types of DSL - internal and external. With this groundwork laid Debasish finishes off part 1 by covering integration patterns for both internal and external DSLs.  You will find that this part is light on code having to deal with all the theory and background to DSLs rather than focusing on how you create them in the language of your choice.

Part 2: Implementing Domain Specific Languages

Part two consists of 5 chapters and is all about implementing DSLs with Debasish stating at the start of chapter 4:

Every architect has his own toolbox that contains recipes of designing beautiful artifacts. In this chapter we will build our own toolbox for architectural patterns that you can use for implementing DSLs.

He then starts with patterns for implementing internal DSLs before moving on to show how internal DSLs can be created in Ruby, Groovy, Clojure, and Scala; then Debasish moves on to creation of external DSLs with tools such as ANTLR and XText as well as how to build an external DSL in Scala.  This part is heavy on code with all five chapters revolving around showing the reader how to build a part of a DSL for the example domain (stocks & shares trading) in each of the languages and external tools.

Part 3: Going Forward

In part three Debasish attempts to take a look at the future of DSL’s with growing language support, DSL workbenches and evolution of DSL’s. This chapter has very little code as Debasish is trying to show the user what he believes will happen with DSLs in the future and the sort of support you should expect to see in languages and tools to help you create DSLs.

Summary

It would seem that Debasish is a fan of Scala having dedicated 2 chapters in the book to explaining how to create internal and external DSLs with the language; having not developed with Scala I cannot comment on whether the focus on the language is justified or not and can only bow to what I must assume is Debasish greater knowledge in this matter.

You will find though as you read through the book there are more and more references to material that is in the appendices which Debasish recommends you read, so unless you have good working knowledge of DSLs and of all the languages mentioned I would expect you may need to be flicking backwards and forwards to ensure you understand all the material in the book.

DSLs in Action is a good book for anybody that is interested in DSLs especially so if you are developing on the JVM, even more so if you develop in Scala, and should provide you a good grounding in deciding the type of DSL to implement and the tools and/or skills to do so.

Many thanks to Manning books and Debasish Ghosh for allowing me to review this book.