The blogs of Black Marble staff

Request for help with PhD Research

Whilst at SC2009 today a request was made by Emad Ghoshen for attendees, and any other developers they knew, to assist him in his PhD research into maintainability of web applications.

He asked if people could download some Java/JSP code and answer a few questions on it, don't worry if this is not your usual languages this is one of the questions he is researching.

All the details can be found at,

Intent is the key - thoughts on the way home form Software Craftsmanship 2009

Today has been interesting, I have been to conferences where you sit and listen, such as DDD, TechEd etc. I have been to conferences where everyone is encouraged to talk open spaces style such as Alt.Net, but today has fallen between the two styles.

The Software Craftsmanship 2009 conference has been in more of a workshop style; most sessions have started with a short presentation to set the scene then the attendees split to forms small groups to do some exercise or chat, reporting back later in the session. A sort of lead open spaces feel if you want.

As usual with events you need to let what you heard sink in, but I think it will be useful. Not so much in the 'I must do X to fix project Y' but in the general approach to development issues. This was a conference on craftsmanship, best practice in general not magic bullets. A good example was in the session on responsibility driven design with mock objects, where a good deal of time was spent discussing the important of variable/object names in the design. From this session you should not take away that 'View' is a bad name and 'Display' is a good one; but that the choice of the name is important to how you will view the intent of the test and the code you are writing.

I suppose this was the theme for the day, in development intent is key, why you do something is more critical than how. It is only through clear understanding of the intent of the business users that a developer can hope to design the best system. So often what the client asks for is based on what they think can be done and unless this requirement is challenged to get at the underlying intend the best solution (whatever best means to the project) will be missed. The same holds true with writing tests, it is vital that the test conveys the intent of what is being tested, else there is little hope for any future maintenance work when all the original staff have moved on. This means to me that the most important part of the user story is the 'so that they can' clause at the end, it is so often the window onto the truth of the real story intent behind the story.

So an excellent day all round, thanks to Jason Gorman and everyone else who helped to organise the event, I look forward to next years, and so should you if you are interested in your craft....

Do you need work item hierarchy in TFS?

Is so have a look at Notion Tools from Team System. This set of tools provides

  • A timesheet based on works items that you access inside Visual Studio
  • A work organizer  to manage work items and documents allowing creation of hierarchies
  • A work planner to help schedule resources for future iterations.

Well worth a look as a means to extend the reach of TFS into your Agile projects.

SLExtensions HTMLEditor

I have been looking at porting a old content editor I wrote from WinForm to SilverLight and hit the problem there was no HTML editor control available in the standard Silverlight 2 control set. Roll in the excellent SLExtensions controls on CodePlex, to save the day.....

Now I did hit one problem with the HTMLEditor, that was addressed very quickly in for support forums. The point to watch out for is that for the HTMLEditor control to work the Silverlight object must be loaded into the web page with the setting to be windowless

<object id="appId"  data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" > 
    <!-- all the other parameters -->
    <param value="true" name="windowless"/>

If you just add the object with default settings to a new web page, or let Visual Studio generate a dynamic test page then this is not set. You end up rendering the editor but cannot enter text.

Hope this saves you some time.

Excellent selection of speakers at the May Progressive .NET Tutorials

You may have seen on a few blogs that Skills Matter are organising the Progressive .NET Tutorials, a 3 day event in May. I have to say that the selection of speakers is excellent including Hammett, Ayende Rahien, David Laribee, Gojko Adzic, Ian Cooper, Mike Hadlow, Scott Belware and Sebastien Lambla; on subjects such as NHibernate, Castle, Monorail, Agile Testing, Web Testing, DSL's in C#, OpenRasta, Windsor WCF, MEF (Microsoft's Managed Extensions Framework) and more...

For the full programme and description see There is a massive discount available to blog readers for this May .NET workshops. If you were thinking of signing up, quote SM1368-622459-33L in the promo code field which allows you to book the workshops for £350 (normal ticket price is £1000).

Bad Apples

One of the interesting pieces of work we get involved in are rescue projects. Rescue projects can be thought of projects that aren’t delivering or won’t deliver either to timescales, feature requirements or quality.

In a rescue project there are many areas that normally need addressing: Project Management, Documentation, Process and Quality. The one common theme in rescue projects is people; when we are brought in to help on a project people start to worry about losing their jobs, but more often than not are un-accepting of the situation they are in.

The reasons for projects failing are numerous but people are the main cause, Jim McCarthy in his 1995 book Dynamics of Software Development (ISBN 1-55615-823-8) discussed flipping the bozo bit where people fundamentally just lose the plot and need to be refocused.

A recent post on the problems of negative focused staff (Rotten Apples) by Jeff Atwood (Coding Horror) has sparked some thoughts, rather than copy sections out I urge you to read the posts and I have added some of my experiences on the same matters.

Dealing with Bad Apples (read this post)

Looking at projects where we have seen individual issues, the ones that strike home are refusal to have code reviewed, increasing amounts of secrecy (keeping lists on paper not electronic, discussions with third parties outside of the project or company), consistent grumbling but supplication when confronted. But I think the most common sign is complaints about others to divert attention away from the real problem. I can’t say how much is conscious, and malicious or not, it must be dealt with.

The striking mark is people on the high horses who stand absolute in their correctness, my advice, shoot the horse and then deal with the problem.

The Bad Apple the Group Poison (read this post)

I have run though nearly all the projects that have had problems and this post contains the key -

The worst team member is the best predictor of how any team performs

and for worst, it is more attitude than technical ability.  We have seen projects with what should have been a dream team fail but this fits the pattern, not technology but attitude.

It is strange that the people who are the problem are normally the ones who should have the most potential, but have flipped the bozo bit and refuse help. It is rare that the people I encounter don't have the ability (they may need training and advice) but they are missing the point and sometimes languishing in politics seems an easier ride, but they always fail. Only once do I think someone was out of their depth and in that case I feel they were making the best of a bad situation.

In any project, people do need to stand up if there is a problem, and fight their corner, rather than just sit and whinge.  They then need to work through getting it resolved in a short space of time, in a reasonable manner, and accept the outcome.

In summary whilst it is generally best to maintain all project staff, there is a point when management must make a hard decision for the good of the group rather than the individual.

I’m interested in others’ experiences on this topic.


BizTalk Hotrod

If you are in the BizTalk world, I would recommend reading the BizTalk Hotrod. it looks like Todd has stepped down from BizTalk Hotrod , he mentioned he was moving when we were at TechED US last year. Rajinder has taken over and it looks like he is off to a cracking start.

Get it here


Windows 7 on the 8Gb SSD Mini 9: Redux

You may remember that I ended my previous post with about 1.6Gb free on the 8Gb SSD of the Mini 9 after installing Windows 7.

I still needed to install Office 2007, or at the very least Word and Excel for the ‘book to be useful. I therefore rummaged out another 16Gb SD card and revisited my earlier vista post about installing apps to an SD card. This time I simply let the card allocate a drive letter and installed Office to d:\Program Files instead.

The trouble was, after installing Office I was down to about 400Mb free on the Dell’s SSD, despite installing the suite to the SD card. There are two reasons for this: Firstly, the common stuff goes into c:\program files\common files\microsoft shared; secondly, the installer files are stored in c:\windows\installer.

I then followed the steps in my post about moving installer files with Vista and created d:\Windows\Installer to hold the data. I’m now back to 1.3Gb free on the SSD. I have successfully installed a couple of apps (including some of the Wave 3 Live suite) following the change so I am pretty confident it works.

I should point out at this juncture that after my previous post I received an email about junctions, Windows installer and Windows XP. That email warned me that performing the steps I documented with Windows XP was extremely dangerous and I should warn people against it. I did ask the mailer the reason why so I could post more detail, but I never got a response. The moral? Do this at your own risk, people.

Ultimately, I wouldn’t recommend the 8Gb SSD as a realistic option. The XP install shipped on it is compressed and slow. My Windows 7 solution is compressed (although not as slow as I had expected – it’s quite usable). Most importantly, once you’ve got the OS on, you’re a bit stuffed for anything else without resorting to hacks like the ones described here. I would say that 16Gb is a minimum, and depending on your needs a 32Gb SSD might be worth the money.