# Tuesday, May 12, 2009

A very interesting day yesterday included a meeting with David Willetts, a British Conservative MP with a shadow ministerial brief that includes Innovation and Universities.

We had a great opportunity to discuss the role of government in innovation networks, and the barriers to innovation in big public sector contracts, many of which are put up by the procurement process. We also touched on the gap between University Research and early-stage product development.

I was encouraged to see real thought being given to the problems SMEs face in this area, by someone who is likely to be in a position to do something about it in the near future.

The Obama administration faces similar challenges with its Healthcare plans. How do we prevent the current spend on Healthcare IT from running into the same trouble as the UK Connecting for Health initiative? How do we get real innovation from the small and medium partner community into the market?

Ythos have some experience of this, and it is not easy.

I’d be interested to hear your thoughts.

posted on Tuesday, May 12, 2009 8:27:20 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Wednesday, May 06, 2009

Between my last post and this morning, a patch has appeared on Windows Update for the very IE8 problem I described.

The KB article suggests that it occurs as a result of a recovery timeout which is too aggressive if you have a low-spec machine, or it is under high load.

That may well be the case, but starting up IE from cold on this Core2 Extreme (Quad core) box  (depending on the page you have set as home) qualifies, so there is clearly a perf problem elsewhere (as per the slashdot.org sluggishness), as well as the over-sensitive timeout.

That said, this is a very minor niggle about an otherwise excellent release candidate (anyone remember Win2k RC? *shudder*)

posted on Wednesday, May 06, 2009 7:57:48 AM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback
# Tuesday, May 05, 2009

As promised, Microsoft have made the Windows 7 RC download available. Links to the bits are here.

As a follow up from my last blog post, there are a few oddities with IE8 in this build – it keeps hanging up trying to retrieve some of the ads served up by uk.msn.com, and slashdot.org is slooooow.

Apart from that, everything seems peachy. I especially like the aero-peek-on-alt-tab and the DCR on the explorer breadcrumbs that means they’re actually useful for navigation now!

Biggest visible changes are the new themes, pictures and…sit down and take a deep breath…a change of the snippets of sample music. Yes, Beethoven is toast. Welcome to the age of Debussy.

posted on Tuesday, May 05, 2009 4:09:30 AM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback
# Friday, May 01, 2009

A couple of weekends ago, we had a design meeting on the WPF project I mentioned a week or two ago, which now glories in the codename Clock Tower 7 (don’t ask!).

Brian and Ian will have plenty to add, but here’s my perspective…

Coffee and extensibility

Once we’d decided which brand of coffee was going to fuel the day, thoughts turned to the extensibility model.

First question: do we need an extensibility model?

Well, that’s probably another blog post ; premature extensibility is like premature optimization – tempting, so very tempting. Suffice to say (for now) that we do want to allow ourselves - and 3rd parties - to develop additional data providers for the application, and bind those at runtime.

Choices…so many choices…

We considered three basic options for the plug-in framework.

1) Roll our own

2) Managed AddIn Framework (MAF)

3) Managed Extensibility Framework (MEF)

We pretty quickly rejected “roll our own”. A plug-in framework is hard to get right, not least in terms of the programming model, security considerations and testability. So why shouldn’t we try to get the “Goldilocks” implementation – not too hot, not too cold, but just right for our app?

Well, groups inside Microsoft have had several goes at this with .NET, with varying degrees of success and compromise. On top of that there are innumerable 3rd party efforts (try querying “.NET Plugin architecture” in your favourite search engine).

Adding to this menagerie just didn’t seem to be made of win.

Next under consideration was MAF. This was added in .NET 3.5, and provides very sophisticated plug in capabilities. It even has the option of full AppDomain isolation for security, stability, and the ability to unload code – almost the holy grail of plug-in models.

It even goes some way to supporting WPF add ins. However, it turns out that WPF is not happy at all in the presence of multiple AppDomains. It might seem to work, but it isn’t really supported. And while MAF is very powerful, and an in-the-box component of the .NET framework, it is also quite complex to use. Much of this complexity serves the goal of AppDomain isolation, and if we’re ditching that for WPF, then it is pain we could happily do without.

The third option is MEF. This is a new .NET library that enables in-AppDomain runtime extensibility, with a simple programming model that is itself extensible.

At the present time, MEF is not an in-the-box component of the .NET framework, but the published intention is that it will be, in the .NET 4.0 timeframe. At the moment we can download full source and binaries from the Codeplex site linked above. (They’ve just shipped “preview 5”.)

The major downside to MEF is that the programming model is still changing with each preview, so it is some way from being a totally stable target. That said, migration between versions has been pretty painless so far.

The other limitation of MEF is that we don’t have the potential isolation and unloading benefits of AppDomain separation. This was a serious consideration for us – not just from the security perspective, but also for crash isolation; we’d like to do as much as possible to prevent a 3rd party plug in from bringing down our application. In managed code, this is much less likely to happen “by accident”, and we can catch most cases. Defending ourselves against a malicious plug-in is a topic for another day.

On balance, we think that the programming model and future-proofing makes MEF the compelling choice for our application.

posted on Friday, May 01, 2009 3:38:46 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback

So, the Windows 7 Release Candidate (build 7100) has shown up for MSDN Subscribers. (Keep looking here if you want the public RC – it will show up on 5th May).

I decided to go for a clean install, and then reinstall the apps and migrate my data across, rather than bodge an upgrade from the beta, and I’m glad I did.

OS install time was very quick (less than 30 minutes), and I’m back to fully functional in less than half a day. As usual, the VS2k8, TFS and SP1 was by far the slowest part of the process.

So far, everything seems fine, apart from a one-time MSN Home Page / IE8 crash that is new-for-this-build.

posted on Friday, May 01, 2009 3:28:13 PM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback