Sunday, 5 December 2010

The Future of Silverlight

I've spent most of my weekend watching downloaded HD video's of the Silverlight Firestarter event held last Thursday. (You can download all the video's from the day via links posted on John Papa's blog).

The first thing to say is, giving credit where credit's due, Scott Guthrie's team did a superb job at turning around all the negative stories about the death of Silverlight that have plagued the technology since rumours of its imminent demise first started to spread in August this year.

The really good news is that there's a ton of exciting new features coming in Silverlight 5 (You can read a very good summary of these on Tim Heuer's blog). These are important features regardless of whether Windows Phone 7 succeeds or not (and the signs for Phone 7 are not good, as an article in The Times (Warning: linked article is behind paywall) earlier this week demonstrated). The keynote did a great job of quickly and efficiently showing these new features off to best advantage. Indeed, it made the PDC2010 keynotes look like the tired, lame relics they were and I would imagine those UK Silverlight developers who made the expensive trip to Redmond for this year's PDC must be kicking themselves that they didn't opt to go to this 'free' Silverlight Firestarter event instead. I suspect many late nights have been had in Redmond to give this event the zing it needed, and Microsoft delivered on the zing big time.

So the good news for those of us working with the technology, and loving it, for the moment at least, is that Silverlight seems to have won something of a reprieve, especially for those wanting to write RIA applications that can run in a browser on the Windows platform.

However I didn't see anything that contradicted my last, rather gloomy, post about the longer-term future of Silverlight in a world full of new devices running non Microsoft software. Despite all the references to 'now' from the speakers, as if these much needed developer productivity features were here today, Silverlight 5 is a year away! A year is a very long time in the currently fast-evolving world of device and platform development, as the last 12 months have shown. I guess this long wait is understandable given that effectively we were being shown material originally intended for next April's MIX11 event, but Windows Phone 7 is proof that such delays can cause what is initially perceived as an exciting product to be delivered still-born. And as I said in my original post, there was never any doubt that there was going to be a Silverlight 5: it's after that which enterprises need to have confidence in if they're to take what is perceived to be the highly risky step of building new applications on top of Silverlight, whose long-term strategic (as opposed to tactical) importance is unclear.

The firestarter event keynote kept emphasising that '70% of user requests are being fulfilled in Silverlight 5', but nobody saw fit to point out that by far the most demanded feature - for greater reach - is being completely ignored. There's a reason why Silverlight was originally called WPF/E (the E being for 'Everywhere') and Microsoft are foolishly ignoring the no.1 most demanded feature from their user base, seemingly to concentrate on Windows-specific features. Bad move. Very bad move. Parity with (replacement of?!) WPF is OK I guess, but not if it comes at the expense of reach and if WPF already delivers what is required for the Windows client base, why waste effort on duplicating that in Silverlight instead of delivering what users have made quite clear what it is they really need. Microsoft had a great opportunity to improve things in this area with the purchase of Novell, who have been working on MonoTouch and Moonlight to port .NET and Silverlight to new platforms, but have foolishly let Attachmate sneak in and take over the company, making the future of these ports extremely uncertain. This is very bad news for those of us wanting to see the platform achieve greater 'reach' as well as greater 'rich' and who think this is the only way the technology will survive longer term.

The problems that have held Silverlight back (mainly around initial productivity because of the steep learning curve), at least as far as developer take-up is concerned, remain and don't appear to me to be being addressed. PRISM v4 has NOT delivered on the promise made more than 18 months ago that best practice guidance was on its way. Try finding anything on 'don't repeat yourself' validation typically required both server and client side in real world applications. Try and find information on taking the recommended Inversion of Control approach for things like event aggregation but also ensure your application doesn't blow up when opened in Blend (a reference to a non-existent 'Blendability' section, highlighted as if it were a hyperlink when it isn't, doesn't count!) Try finding anything relating to WCF RIA Services and how it fits into this MVVM architectural world view. Try finding any reference to Silverlight's Application Extension Services, or ... well you get my drift! There's nothing there!

PRISM v4 seems largely to have been a 'smoke and mirrors' exercise to patch the v2 release, with post-release blog entries rushed out to address basic questions like 'How do I integrate PRISM new 'roll your own' navigation with the Silverlight Navigation Framework?' It's just not good enough after 2 years waiting!

I've heard, unofficially, from contacts within Microsoft that the team working on PRISM was 'large' - but I see little evidence of that in what's been delivered: essentially a bit of freshening up of the release we got 2 years ago. There's some new stuff to support MEF and make sure the acronym MVVM finally appears, but important MVVM reference information hidden away in QuickStart tutorial appendices or great gobs of source code, rather than the main 'take a week off work to read it all' reference book isn't going to get seen or read. Worse, whoever put together the new 'MVVM Reference Implementation' appears to have a very different view of what a Reference Implementation should contain - it's far too simplistic to deserve the 'Reference Implementation' title and it does nothing to bring all the 'smorgas board' options available in PRISM together. So many different approaches have been taken in the different quickstarts that it's small wonder that most developers look at these, scratch their heads and want to run back to the safety of the ASP.NET/AJAX development environment which they understand and can relatively quickly deliver working applications in.

I've recently started work on a new project that is going to be using WCF RIA Services. Being pretty green with WCF RIA Services (It looked too much to me like 'drag and drop demoware' but that's not the message Microsoft are giving their corporate clients) I decided to run the planned architecture by WCF RIA Services MVP and all-round good guy Colin Blair for sanity checking. Over a few emails I mentioned how good I thought John Papa's PDC10 talk on Best Practices for MVVM had been, and how I wished I'd had that talk a year ago instead of having to learn things the long, slow, painful and totally unproductive way. Colin pointed out that John made a mistake using ObservableCollection to hold entities which is a big no-no with WCF Ria Services (some details on why here) which demonstrates how ridiculous claims that Silverlight automatically makes developers immediately productive is: if the Microsoft 'experts' who've been working with this stuff for years can't keep up with the disparate technologies needed for Enterprise Line-of-business apps and use them correctly, what hope for the average developer?

If my experience at several clients is typical, the reality is that most Enterprise developers are still pretty much stuck at an ASP.NET 2.0 level knowledge of C# because they haven't needed to get to grips with all the stuff that came down along the line later. So the real issue in moving to Silverlight is that not only will a developer have to get to grips with a completely new way of programming (XAML-based) and the core Silverlight technology itself, and also the MVVM pattern and far too many competing frameworks to help deliver on MVVM, but also basic techniques they won't have used before like asynchronous programming, understanding Lambda expressions and LINQ, and a seemingly never-ending series of 'supporting' (but required) frameworks like PRISM, MEF, Unity, Silverlight Navigation Framework, Entity Framework, the Reactive eXtensions framework etc all of which have equivalent 'open source' offering which may need to be understood and compared with before making a choice on which are 'the best' for their specific scenario's.

The Silverlight Firestarter was a great kick-off for of Silverlight, but there's still a long, long way to go if Silverlight is truly to move into the developer mainstream. I'm still not convinced that Microsoft (or their Silverlight MVPs) realise how big a task educating developers will be, or even understand that without it mass take-up of the technology is doomed to failure, despite all the enthusiastic reviews from those who have overcome the steep learning curve and learnt to really love the technology.

Tuesday, 2 November 2010

Silverlight Shenanigans!

Until now I've avoided writing a blog post on the whole "Microsoft are killing off Silverlight" noise that's been reverberating around the Microsoft echo chamber for the last month or two, although I have commented on others posts where basic facts were quite outrageously being ignored. There are three reasons why I haven't rushed to make a blog post:

  1. I saw the way the echo chamber launched an all-out assault on the first person to 'go public' with what was really happening within Microsoft a month or so ago. I've had enough of that already, thank you very much. I don't need any more of it. Dealing with unthinking zealots is never much fun!

  2. It would have been hard to say anything without naming sources for the information that I first heard about back in August, but which wasn't generally in the public domain. That could have caused problems for people simply being honest about what seemed to be happening internally within the company.

  3. There was far too much heat around the subject once the basic 'Silverlight strategy has changed' statement became public last Friday. I wanted a few days out to consider what I was going to say about it.

I'd probably have remained quiet if Microsoft hadn't effectively gone public at PDC. I've been extremely critical of Microsoft in the past, but boy they reached new levels of incompetence at this year's PDC. First of all they made their main keynote a repeat of that given 3 years ago - one that had been used to launch Silverlight, but this time round replaced the word 'Silverlight' with 'HTML5' to promote their brave new focus. One really has to wonder whether those responsible for this farcical state of affairs are idiots, just plain lazy, or simply assumed the developer audience were idiots and wouldn't notice. When you're asking people to travel and pay good money you owe them a hell of a lot more than a tired old rehash of a previous keynote!

Then, in an interview with a journalist at the event, a senior exec reported that the company's Silverlight strategy had changed. The executive, Bob Muglia, effectively stated that the change in strategy was that Silverlight was now focused on Windows Phone, whilst noting as an aside that it had some 'sweet spots' for line-of-business apps. HTML5 was now 'the glue between the front end and the back end'. The message was very clear, and (I thought) very carefully and deliberately worded. This was not a misquote, this was a thoroughly prepared statement.

The echo chamber went ballistic. The Silverlight MVPs went into 'ignore reality' mode and posted long, tedious articles reminding folks how much easier and more productive it is to develop a line of business application in Silverlight rather than with HTML5 (well duh!), adding in great dollops of FUD about lying tech journalists, huge Silverlight demand from businesses, and news that HTML5 would not be ready for another 10-12 years along the way.

The general developer community split into two rather extreme camps: one saying they'd they'd never trust Microsoft again and would now actively look elsewhere for technology solutions, the other rejoicing that yet another 'useless, proprietary shiny toy' from the company was rightly being abandoned.

Yesterday the exec who'd made the statement that caused all the furour was forced into 'damage control' mode and made a new blog post stating that there would be a new release of Silverlight (nobody had ever claimed otherwise!) and basically re-iterating the main points he'd already made, albeit couched in more diplomatic language. Bottom line, as the journalist who'd reported the original remarks pointed out: nothing at all had changed.

So it was extremely disappointing (if entirely expected) that huge swathes of Silverlight MVPs and evangelists have rushed to celebrate the fact that they have been 'proved right' and the 'nay-sayers' were all wrong. Ridiculous posts re-iterating those same tired 'facts' (' says Silverlight has huge market share') or pointing out that all tech journalists are scum, or that people have been too 'emotional' (presumably it's better to be mindlessly 'passionate' instead!) have appeared like flies all over a fresh turd. The message seems to be that all is back to normal, the storm in a teacup is over, we can all relax and the drama queens so quick to attack Microsoft and Silverlight without understanding or using the technology can all bugger off! Hoorah!

What such posters seem to have spectacularly missed is that nothing in the new post contradicts anything at all that caused all the furour in the first place. Arguments about ridiculously low take-up of Silverlight amongst developers AND businesses, (even after three years of marketing hype) are conveniently ignored in the rush to say 'Nyaa, nyaa. I told you so. Silverlight rocks. HTML5 sucks. Shame on you for thinking otherwise'.

Yes, HTML5 and JavaScript do suck somewhat. The tooling isn't there either. And the real mistake Microsoft have made in rushing to announce the 'change in strategy' is that they've done so too early. The tools aren't there for HTML5, Microsoft haven't got them in place, and are clearly some significant time way from having them in place. My guess is that the core developers currently 'on loan' to PRISM or Windows Phone 7 won't be back in their 'real' Silverlight development roles until after Christmas. That means they have a LOT of work to do if they're to make the MIX11 deadline of April 2011 that they need to make to retain any sort of credibility around their Silverlight strategy.

But if you really think that this means that Microsoft haven't made decisions at the highest level that the vast majority of future effort is going to HTML5 rather than Silverlight you're living in cloud-cuckoo land. And, with all due respect, statements from Silverlight evangelists about betting their own careers on the technology (haven't we all?!), losing money on their houses to do so etc etc are totally irrelevant. These folk are not working at the political exec level where these things are decided. Nor, if history is anything to go by, at a level where they will have any real say in the decisions that the various in-fighting political divisions in Microsoft will make that will affect them. It's amazing how nobody's mentioning the fact that Silverlight's biggest internal evangelist, Bill Gates' chosen successor Ray Ozzie, is leaving the company (did he fall or was he pushed?) or taking on board that this might not be the best news for Silverlight's future.

My guess is that Silverlight 5 will be a 'stabilisation' release that unites the browser/desktop world (currently on Silverlight 4) with the phone world (currently on a mix of Silverlight 3, with some bits of Silverlight 4 and some new additional hacks on top of that). I'll be pleasantly surprised if we see much else - there's a reason why former Silverlight Product Manager Scott Barnes tweeted that 'Silverlight and WPF are dead' after a visit to Redmond, and it has nothing to do with seeing lots of bodies working on a new release! The hope has to be that Silverlight's main design tool, Blend 5, will be modified to incorporate some sort of HTML5 Canvas functionality, maybe even some sort of XAML/Silverlight to HTML5/JavaScript conversion. That sort of stuff doesn't get written overnight, and if the last 6 months have demonstrated anything it's that Microsoft finds it impossible to move at anything like the rate they need to move to keep up with their competitors and the shifting device platforms out there.

I don't think anybody's denying that Silverlight's a much better technology than HTML5 for writing RIA applications. That's not the point here. It's irrelevant, just as the same arguments used to justify Betamax over VHS, or HD-DVD over Blu-Ray, were irrelevant when it came to what survived in the marketplace.

If you're a Silverlight developer you should have been looking at HTML5 already anyway. What the announcements over the last month or so have indicated is that, short of a seriously dramatic shift in market demand, device reach and developer interest, Silverlight is living on borrowed time and is effectively becoming a 'niche' product rather than the 'premier UI' for Microsoft that it was announced to be this time last year. No amount of articles from those with vested interests, conveniently ignoring all the evidence or the real arguments, is going to change that!

The only thing that matters in all the heat and noise of the last few days is that a 'shift in strategy' has been announced. You ignore that shift in strategy at your peril!

Monday, 18 October 2010

Is Video Killing Community?

A few weeks ago, before I canceled my Twitter account, I saw an informal conversation taking place between a few of the UK Microsoft community 'leaders' on the subject of an overall decline in attendance and interest in community events over the last year.

I've noticed the decline in some of the user groups I attend and apparently more country-wide events like Developer Developer Developer are also seeing a decline in interest. This manifests itself either through less bums on seats (like the recent Windows Phone 7 event), or through a longer period before the free event 'sells out' (like the upcoming Special .NET event aka DDD8a).

I have my own theories about why the interest hasn't been as great over the last 12 months as it has in the preceding 12 months, but it was interesting to see speculation that video might be one answer to this loss of interest. Could it be that video is encouraging people to stay away and just 'watch the video' instead?

I must admit, the same concern that video might encourage people to 'miss' meetings had crossed my mind when I first started doing video for London-based user groups a few years ago. It's one of the reasons why some user groups specifically told me 'Thanks for the offer but we don't want video'. These user groups feel that video in some ways detracts from the main objective of the meetings which is networking, albeit packaged around a couple of more formal talks. This makes sense to me, and the 'rule' is usually bent when a high profile event, such as Microsoft VP Scott Guthrie flying into town, takes place and it's assumed ahead of time the demand for places can't be met.

As a video consumer I have to confess that video has meant that I'm unlikely to be attending big events like MIX or PDC again. It costs far too much money to sit in a room hearing mainly marketing material presented badly, when a free video means you can at least stop things a few minutes in and move onto something else if the content isn't what was initially advertised.

So far as 'free' community events are concerned though, my personal view is that the impact of video on actual attendance numbers is minimal (but then I would say that!), and when many user groups only have access to premises that limit live attendance to 30-50 people, but even the poorest performing video can garner over 100 views (with the most popular grabbing over 7000 views) then doing video of a talk seemed in the early days like a win-win for both the user group and its members and the speaker wanting to reach as wide an audience as possible.

At the last meeting of the user group I attend as a priority, The Silverlight UK User Group, attendance was lower than normal and for the first time in a long time we had some empty chairs. This is possibly because of a clash with another user group that same evening, possibly because of a clash with a high-profile football match that same evening, or possibly because it's becoming increasingly obvious that what Ray Ozzie described this time last year as 'Microsoft's premier UI' is clearly anything but that. Or it could, conceivably, be the fact that people knew ahead of time I'd be videoing the talks presented at the meeting.

Whatever the reason, the Silverlight User Group organisers asked me to hold the video publication back for a couple of weeks (which then turned into four weeks because I've been lazy!) instead of rushing to get it online as quickly as possible, the way I usually do.

In many ways this debate about video being a possible cause of declining attendance gives me a good excuse to retire from doing community video. Those who followed me on Twitter for the last 3 years (before I deleted my account a week ago) know how disillusioned I've become with not just Microsoft over the last 12 months, but also the current 'community' eco-system that seems to be far too reliant on 'partnership' with Microsoft. I think it's time for me to move on and use my spare time to support things I actually believe in.

The truth is that while it's been a privelege producing video when the subject matter and speaker have been as high as it often has, there have been rather more occasions than I'd like where the talks have not been good and when I've been faced with hours editing, rendering, compressing, uploading and transcoding video that I know nobody will watch past the first couple of minutes. On such occasions, it's hard not to resent the fact that you're stuck at a PC when the sun's shining outside and you know you're wasting hours on something nobody will have any real interest in.

I think it will be interesting to see what happens over the next 12 months in the Microsoft 'community' space. I am totally unconvinced that it's video that's killing user group attendance, but in the meantime I'm happy to finish my community video efforts with a really excellent couple of videos. These last two videos feature Guy Ferrier-Smith giving an excellent 90 minute talk (split over two videos) on the subject of Silverlight Internationalization. This is well-researched material that the blogs and the official Microsoft documentation have largely ignored and there's a LOT of hard work and experience gone into Guy's talk. It's exactly the sort of talk that got me excited about doing video for community a few years back. An opportunity to get the really good stuff out to a wider audience that otherwise wouldn't have access to it.

The latest videos, along with the other most recent user group talks, can be seen on my hosting page on Exposure Room. Enjoy!

Monday, 4 October 2010

Silverlight 4 Books - Whatever happened to Proof-Reading?

I read a lot of books, and at one point, unhappy with the lack of good technical book reviews available, I was going to review each new Silverlight 4 book as it became available on this blog. However I was getting so much flack about my 'negativity' on Twitter I abandoned the idea when I found each new book I intended to review was just not worth the money I'd paid for it.

About this time last year, one book author asked me via a private message on Twitter for an 'honest' opinion on his book, which at the time had received two or three five star reviews on Amazon USA.

So I gave my honest opinion! I pointed out that the book was out-of-date with even the public beta version of the software it was claiming to exhaustively cover. I also pointed out that the back cover jacket sales blurb mentioned stuff that wasn't even included in the book, and that the book's biggest chapter was irrelevant because it was all about the WPF version of something, NOT the Silverlight version, when this was supposed to be a Silverlight-specific book (and so was clearly written for the convenience of the author, not the audience being asked to pay good money for this irrelevant nonsense). I concluded by pointing out that two adjacent chapters had whole paragraphs of identical text, indicating both bad cut-and-paste writing and that no proof-reading at all had been done on the book.

To say the author wasn't happy with the 'honest' feedback he'd asked for is putting it mildly. I got the usual 'hero justification' about how many hours the author put into supporting the book, answering all his readers emails to correct things and help them, producing supporting screencasts and even downloadable extra chapters, speaking to community etc as if that were justification for selling a book that didn't meet its basic remit and which people were expected to pay a hefty fee for.

Apparently I was just a 'hater' for answering his direct question honestly instead of behaving like a shill and saying 'Your book's faaaabuloous, dahling'. The sad thing is that I actually think the author has talent, and could have produced a stunning book, if only his publishing company had bothered to get someone to do a bit of technical editing and proof-reading instead of trying to gouge the market by rushing a title to print before it was ready.

Accused of being alone in my opinions, I directed the author to the average Amazon UK review of just two stars (which contrasted wildly with that five star average on Amazon USA - hmmm! I wonder why!) I was accused of having written the three Amazon UK reviews which resulted in this average rating, along with the accompanying justifications from named readers, myself! Yeah, right (rolls eyes)!

When the author had had a few days to simmer down and deliberate on my feedback he came back to me and asked if I'd like to make the next book, intended to cover Silverlight 4, better by co-authoring it. I began to feel better about having given 'brutal, but honest' feedback. But I had to explain that I just didn't have the time. I know that technical book writing is a LOT of hard work. It pays peanuts and is really only recommended for those who want to boost their profile as a trainer or conference speaker, or help towards getting an MVP - I have no interest in either of these things! However I said that as a favour I'd be more than happy to help with technically reviewing the book, and doing some much-needed proof-reading on it.

Unfortunately the author didn't take me up on the offer.

The latest version of his book is now out, and as a simple exercise I decided to select a page at random (page 51) and critique it the way I would if I WERE a proof-reader. I think the results below speak volumes with regard to the current state of proof-reading in the technical book industry:

A page from a published book that I've just proof-read

It's probably unfair to pick on this particular book, because I've seen much, much worse (and initial impressions are that the book is a HUGE improvement on the Silverlight 2 and Silverlight 3 versions, with the author actually having a very natural writing style)! If I'd tried the same exercise on a page from the Silverlight 4 User Cookbook (from Packt Publishing) for example, the snapshot of a page chosen would have made the original text unreadable for a sea of red corrections all over it, even if I ignored the fact the contents really didn't live up to the title at all and just concentrated on the appalling English.

The point I want to make is this: I really cannot understand why publishers spend so much time and expense in printing and marketing such titles without getting a native English speaker to at least proof-read the wretched thing before going to press, even if they can't technically evaluate it. Heck, I'll even do it for free if it stops some of the over-priced, incorrect dreck I've seen getting out into bookstores where it can do a lot of harm and just rips off punters who rightly expect far better value for money than they're getting.

I said about a year ago, I was going to stop making negative posts on this blog (which is why you've seen no comment on this blog about the whole Silverlight 4 vs HTML 5 fiasco that Microsoft have stirred up), but there comes a point where you just have to ask why we as an industry put up with this crap.

Last night I started reading seven 'alpha' chapters from an Apress book dedicated exclusively to MVVM and which I had to pay £26 for to get in electronic form - and it's crap, clearly written by someone who doesn't care about his subject, doesn't have the depth of technical knowledge required, and hasn't got the writing skills necessary to produce something that educates his readers.

What I will say, to try and end on a positive note, is that I've recently read two Silverlight 4 books that, whilst still containing the sort of proof-reading errors I dislike intensely, are well worth the asking price for the technical information they contain and the obvious passion the authors have had about writing a good book that genuinely educates and even entertains. Those books are Silverlight 4 in Action by Pete Brown from Manning Publications, and Pro Business Applications with Silverlight 4 by Chris Anderson from Apress.

So far as I'm concerned, anything else with the word Silverlight in the title is pretty much an 'Avoid' and 'Don't waste your money on this' right now. No wonder illegal free pdf downloads are the first thing you see when you do a search on a Silverlight book title these days! :-(

Monday, 23 August 2010

"Silverlight 4 Fundamentals" course coming to the UK

It's always feast or famine on this blog - and it's been famine for quite a while, mainly because I've been working away from home for most of the last 4 months.

Anyway I hope to rectify all that over the coming weeks, with a series of Silverlight 4 book review blog posts, now that titles are finally starting to appear on the shelves. Expect the first review next Monday!

However, first off I wanted to highlight the fact that there's a new Silverlight 4 Fundamentals course coming to the UK next month. We've just had the Silverlight Masterclass (which I didn't attend but heard good things about) but this new course from the folks at Pluralsight is aimed more at those who are new to Silverlight. I'm often asked about the 'best' way to train up for Silverlight 4, and asked if there are any good courses or books that I'd recommend, and this looks like a great way to learn the technology.

I've been very impressed with the on-demand training I've sampled from Pluralsight (their LINQ course is the most comprehensive, and beautifully explained treatise I've seen on the subject) so I expect their new Silverlight 4 Fundamentals course being run in London on the 27th September will be a good one, especially since the instructor is Ian Griffiths. Ian always does a good job, and really knows his stuff when it comes to WPF and Silverlight. I had a quick look at the on demand online web training for Silverlight 3 that Ian produced for Pluralsight and it was good, comprehensive stuff so the portents for this new Silverlight 4 course are good.

There's a special reduced rate of £1700 (down from £2100) if you book early, so if you want professional training on 'Microsoft's premiere UI', as Ray Ozzie calls it, then now would be the time to book. More information about the course can be found on the Pluralsight web site here.

And if anyone knows of any good Expression Blend training, aside from the Channel 9 design.toolbox training (which is very good, but needs updating for Blend 4) please let me know. I'm always being asked about good Blend training, and the one book on the subject that's available is not one I would feel at all comfortable recommending.

UPDATE 10TH SEPTEMBER 2010 This course is now going to be hosted virtually (ie accessible from anywhere) and the price has therefore been reduced to £325.

Wednesday, 21 April 2010

Microsoft's Free Silverlight 4 LOB Training Course (and dealing with possible Database Issues)

I'm often asked for advice on how best to learn Silverlight, and with the release of Silverlight 4 last week folks are keener than ever to get to grips with the technology, particularly for writing line-of-business applications.

At the time of writing, the only book available for Silverlight 4 is Microsoft Silverlight 4 Business Application Development. Although the book advertises itself as a 'Beginner's Guide', and has been written and technically edited by folks boasting the usual expert 'MVP' and 'Insider' credentials, I would NOT recommend this book for beginners, despite the pedigree of the authors and the basic step-by-step and subsequent analysis structure which I like. The book went to print before Silverlight 4 had RTM'ed, and contains a number of, frankly, quite basic errors that will only confuse those new to Silverlight. These include claims (and screenshots) implying that Visual Studio 2008 can be used to build Silverlight 4 applications, that Blend 3 is a 'required tool' for Silverlight 4 development (Blend 3 does not support Silverlight 4), and a confusing set of step-by-step exercises where the authors and reviewers don't seem to have realised that when working with font sizes Blend 4 (which has to be used for Silverlight 4) works with point sizes which are different from the underlying Silverlight XAML pixel sizes), or that if you put a TargetType of UserControl on a resource style Blend isn't going to then let you use that same style on a button!

Microsoft are obviously aware of the 'learning curve' problem with Silverlight 4 and have launched a free Silverlight 4 training course. The course includes 8 modules around 'Building Silverlight 4 Business Applications' which they estimate comprises 2 days worth of training, and has been written and presented (it includes videos as well as step-by-step follow along exercises) by Ian Griffiths, who has an excellent reputation as a Silverlight and WPF trainer (his Silverlight 3 'on demand' training course for Pluralsight looks very good indeed, from what I saw of it, and apparently a Silverlight 4 version of that 'soup to nuts' material is on its way if you sign up for Pluralsight training).

Ian and Microsoft are keen to point out that the free training course that's been provided through Microsoft's Channel 9 outlet is NOT a 'soup to nuts' Silverlight training course, and that there are assumptions you've done at least some of the 'Getting Started' Silverlight tutorials available at the Microsoft site. However the course does introduce the MVVM pattern, make good use of WCF RIA Services and in its last module even introduces MEF - all stuff that typically gets missed out from basic Silverlight training. Last night I decided to give it a quick look.

Unfortunately I hit problems almost immediately because of the configuration of my local machine, and so the main purpose of this blog entry is to document how to fix these problems for those who may find themselves hitting the same issues.

I do still have one outstanding problem in that Visual Studio 2010 never seems to 'remember' the changes I've made to the database connection string, and requires me to make the same modifications every time I restart it. To me this looks like a bug (I've made the mods and happily run new builds that work - why is Visual Studio 2010 ignoring them on restart?) but if anyone knows different I'd appreciate a reply in the Comments section of this blog post.

Very early on in the first hands on lab (actually Module 2, since Module 1 comprises a simple video introduction to the course and nothing more) you are asked to add an .mdf database file to your project. When I attempted to view this database using Server Explorer a nasty, and somewhat confusing error dialog appeared, implying that the database file was too 'new' for my installed software (SQL Server 2008 with all the latest service packs and updates applied):

Error message when SQL Server 2008 Express isn't installed

It turns out that his message is the result of the database file being opened with SQL Server 2005 Express edition, when it is a SQL Server 2008 Express edition database. Although I'd updated my machine with an installation of SQL Server 2008 some time ago, and then installed Visual Studio 2010 I'd never installed SQL Server 2008 Express Edition.

The fix appeared relatively straightforward: change the connection string to use the installed version of SQL Server 2008 rather than the version of SQL Server 2005 Express Edition it seemed to have decided was the preferred option. This is achieved using the 'Modify Connection' context menu option in the server explorer:
The 'Modify Connection' context menu option

The resulting dialog box has an Advanced properties tab which you display by clicking on the Advanced button:
Dialog giving access to the Advanced properties

From here it's a simple matter of selecting the appropriate SQL Server instance from the drop-down list box. The dropdown list box initially shows the SQL Server 2005 Express instance it has decided to use:
SQL Server instance has been set to SQL Server 2005 Express

It's a simple matter to change it to the SQL Server 2008 instance:
SQL Server instance reset to SQL Server 2008

However this then introduces a new error when 'OK' or 'Test Connection' is selected, as shown below:
User authentication flag error when using full version of SQL Server 2008

It seems there are some ASP.NET user authentication security precautions with the developer/full versions of SQL Server 2008 that aren't there with the SQL Server 2008 Express edition, causing this error to be displayed. The only solution to the problem appears to be to install SQL Server 2008 Express edition as well as the full edition already installed. Make sure you download the Sp1 version of the Express edition (which can be found here to avoid warnings about an out-of-date incompatible version) and be prepared for a restart before the install will fully run.

Once you've installed the Express Edition you can change the connection string, as shown previously, to point to the newly installed Express instance, and happily proceed with what looks to be a fun training course.

Setting the connection string to the newly installed SQL Server 2008 Express instance

Now when you click on the 'Test Connection' button the errors have all gone away:
Finally - a good connection (until you restart Visual Studio 2010)

As indicated earlier, the only problem is that every time you restart Visual Studio 2010 the database connection string seems to reset itself to the SQL Server 2005 Express instance, causing the initial 'version' error that kicked off this whole blog entry.

If anyone knows how to make this error go away for good I'd be happy to hear from you (and will update this blog entry accordingly).

Monday, 19 April 2010

Visual Studio 2010 Hanging On Splash Screen (Add-in problems)

Last week, in the middle of a manic week of Microsoft TechDays Visual Studio 2010 finally got released to manufacturing (RTM'ed) and being conveniently 'between contracts' with no client software dependencies needed on my main PC, it seemed a good time to install it.

I hit a problem just after I installed the Silverlight Tools for Visual Studio 2010 which went to 'Release Candidate 2' status just a few days later. Visual Studio 2010 would 'hang' on the splash screen. Task Manager showed no sign of Visual Studio on the Application tab but the Processes tab showed devenv.exe stuck at 50% CPU and nothing would happen until I killed the process.

A quick search on 'Bingle' (;-)) showed several reports of others having a similar problem - but only with earlier versions of Visual Studio, and none of the causes seemed relevant to my particular situation. I suspected that something about the Silverlight Tools installation had gone wrong.

In the event it was not the Silverlight Tools that were the source of my problems, but the combination of a couple of third party add-ins.

Three Visual Studio add-ins I use are JetBrains Resharper, Red Gate Reflector Pro and NDepend 3. All are excellent tools that worked fine in Visual Studio 2008 and which I've come to rely on when writing my code. In different ways they all help me write better quality code and whenever one of them isn't available I tend to miss it.

Removing the add-ins one by one it initially appeared that Red Gate Reflector Pro was the cause of the problem, so I removed the add-in, raised a support call and was able to work pretty much as normal.

Red Gate responded very quickly to my support call. 'Was I by any chance using NDepend?' they asked. Well yes, I was. 'Have you got the latest version? There was a point release update to NDepend 3 which fixed a co-existence problem'. A quick test, removing NDepend and then adding back Red Gate Reflector Pro proved that it was actually running the two add-ins together that was the cause of my frozen splash screen.

I hadn't updated my copy of NDepend 3 since it had first been released. There is a message box on the visual panel that indicates if you are using the latest version or not, and this was indicating that I was on the latest version. Of course it turned out that this was an early bug - one fixed in a later release, but one which I hadn't downloaded because I wasn't aware of it.

Sure enough, downloading the latest release (from 15th April) fixed all the problems and I'm now able to use all my add-ins with Visual Studio 2010 which I'm loving (apart from the very slow start-up time which seems much worse than Visual Studio 2008).

Although the experience was initially disconcerting I must say I was very impressed with the swift responses from the producers of those third party add-ins. A couple of tweets about the problems and Stephen from Red Gate and Patric from NDepend were immediately in touch. That their products are working, and working well, with the latest version of a complex, largely rewritten, IDE on the day it finally released is pretty impressive by any standard. Well done to both!

I still have one problem with Visual Studio 2010 add-ins. JetBrains Resharper 5 flags false errors in even the most basic XAML. This is a step backwards from the 4.5 release in my view, but the portents for the problems being fixed are good - the company contacted me on a Sunday after I tweeted about how the new release seemed to be a step backwards for Silverlight developers, and Support officially contacted me first thing Monday morning. I'm optimistic they'll fix the issues I've reported (they've already fixed a problem with their web site which I reported at the same time) on a timely basis.

If only vendors in walks of life other than Visual Studio add-in tools were so speedy and pro-active when it came to offering their customers support. The world would be a much more stress-free place!

Friday, 12 March 2010

Some Notes for Those on their Way to MIX10

Irascian at Mix, 12th March 2010

It's around 8am local time here in Las Vegas, and I'm about to head off for a day's shopping/being a tourist. But with so many folks about to head out to MIX10 from the UK thought I'd post a few quick points in answers to various tweets I've received.

The weather in Vegas at the moment is clear blue skies and sunny, but quite cool in the evenings. It's definitely long sleeve shirt, pullover or jacket weather in the evenings, and when I arrived at the airport last night around 5pm a lot of the arrivals in t-shirts were complaining at how cold it was (:-O) Apparently the last week has been untypical weather (I'm told it rained on Wednesday) with grey cloudy skies all week. Not so today with a warm sun and clear blue skies. The forecast throughout MIX is good. I'm probably going to venture out today in shorts and sandals :-)

The Mandalay Hotel (at least on arrival last night) has a very different vibe from The Venetian, home of previous MIX conferences. The hotel looks the same internally (except that scantily clad go-go dancers near the poker tables, presumably to distract those playing, now seem de rigeur in the gambling halls) but the Mandalay seems to attract a much younger crowd (I'm told the pool area aka "the meat market" is the main reason!) If my arrival last night was typical, expect to bump into a lot of loud, drunken (but happy!) youths in late teens/early twenties throughout the hotel which is something I never experienced at The Venetian. Some of the elevators even seemed to be hosting their own frat-house style parties! Try and wangle yourself an invite if you can ;-). The rooms themselves are big, clean and modern by UK standards, but definitely nowhere near the 'over the top' luxury status of The Venetian (at least if my experience is typical).

The wireless internet in the hotel is USD15 for 24 hours, but is excellent - the best I've ever experienced and I'm in a room at one extreme end of the hotel (as far away as possible from the noise and the elevators).

If you're flying Virgin Atlantic from Gatwick beware the £30 'more leg room' offer you may be given at Baggage Check-in. These seats are around rows 49 to 51 (9 each side) which unfortunately is next to the dispensing area for the 'free booze' dished out during the flight until it runs out (which thankfully it finally did around 5 hours into the flight). If my trip yesterday is typical you'll have a bunch of stag party crowds on board who treat this area much like the kitchen area at a very busy, rowdy, drunken party. Great if you're getting drunk and want to freeload, a nightmare if you want to arrive sober, snooze or try and get work done! Personally I don't understand why Virgin Atlantic encourage the sort of behavior that means they inevitably create a problem for themselves (well, duh! Drunken passengers assaulting female cabin crew - who saw that coming?!). If the airline charged for the booze it would make the flights much cheaper for the rest of us, and avoid the nightmare of their staff having to deal with drunken passengers.

Anyway, to everyone on their way out here: Have a great flight, a great MIX and hope to meet you in person (DM me on Twitter id @irascian if you need my room contact number or US mobile phone number).

View from my hotel room, taken at 7am, Friday 12th March 2010
View from my hotel room at 7am this morning

Updated to add link to my Flickr Stream of Photo's from the Hotel Pool area

Thursday, 11 March 2010

Heading for Microsoft's MIX10 Conference

Irascian at MIX10 - 11th March 2010

Today, I'm finally heading off to Microsoft's MIX10 conference in Las Vegas, where developers and designers get to "mix" it up. The pre-conference buzz this year has been even higher than usual, and not just because people have been getting carried away drinking the Microsoft Kool-Aid.

Early leaks about Windows Phone 7 Series (FINALLY, something to compete with the Apple iPhone), Silverlight 4, Internet Explorer 9 and a whole host of announcements around the upcoming Visual Studio 2010/.NET 4 release mean that anticipation is high, especially amongst those of us who earn our daily crust from Silverlight Development. It looks like our early gamble that this was a technology that was going to prove to be crucial to writing state-of-the-art applications is now finally starting to pay off.

And then there's the Microsoft Courier device, which makes the forthcoming Apple iPad look extremely sub-standard, ASSUMING IT'S REAL! Hopefully we'll find out how real the device is over the next few days, even if the rumours suggest it isn't planned for launch until 2011.

I'm still undecided as to which sessions I'll be attending - every time I think I've narrowed my choices down, new sessions get announced. Talks on Real World MVVM, Silverlight Testing, a new Microsoft Silverlight Analytics Framework, MEF, WCF RIA Services and, of course, Windows Phone 7 Series are all at the top of my wish lists, but frequently clash. With video of each session being made available online within 24 hours of being delivered, final decisions aren't that important and will likely come down to which rooms have seats left in them, and other logistical issues.

What I can state with certainty is that I'll be attending the Silverlight 4 bootcamp and ASP.NET MVC Bootcamp pre-conference workshops on Sunday, 14th March.

However the sessions and workshops are not the reasons for my attending MIX10 (I still think you get a better experience of these by being a 'virtual' attendee, and with The Channel 9 Live From MIX Show streaming continuously every day of the conference I think that's even more true. What I'm most looking forward to, and the real reason I'm flying over 5000 miles to attend, is meeting many of the Silverlight developers I've 'spoken to' via Twitter, as well as those I already know from having attended MIX in previous years, or through the London community scene.

Party-wise, I know I'll be attending the EMC Consulting Oasis and MIX Tweetup on the Sunday night, as well as the Brits Booze-up and Main MIX Party on the Tuesday night. I hope to meet some of you there!

I will have the loan of a mobile phone during my stay, so if you want to make a specific arrangement to meet up send me a message on Twitter (@irascian) and I'll be happy to send you my number.

I'm hoping to blog each day from the conference (and pre-conference, although pre-conference blog entries are more likely to be appearing on my personal blog rather than this work-related one).

All the early indications are that this is going to be one of the best, if not THE best, MIX conferences held to date. I can hardly wait!

Monday, 15 February 2010

Scott Guthrie Web Chat/Q&A (Transcript)

Every 3 months Scott Guthrie (VP of .NET Developer Division that covers IIS, ASP.NET, Silverlight, WPF etc) gives an online audio webchat/Q&A on LinkedIn which invariably contains all sorts of information that just hasn't been publicised elsewhere. These chats are pretty unmissable.

The most recent chat took part last Thursday, but since I was on a train at the time I only caught up with the downloadable version this evening. You can get it (as a zipped wmv file) here. I have been going through it to spot 'hidden' announcements, and if you're as time-pressed as I am, you may find the following transcript more useful than the one hour+ audio file.

I have re-ordered the rough transcript to fall into the topic areas I'm personally interested in. Alas, in places the answers don't quite tie up with the questions asked (so I've given them headings instead). I was particularly interested to find out what the Silverlight 3/WCF RIA Services story was, but the answer given really related only to Visual Studio 2010. My reading of that answer is that there will be no new release of WCF RIA Services that works with Silverlight 3 - the PDC 'beta' release we got in November is all we get. This means that Microsoft will not add it to the official support cycle, that there will be no security patches and no bug fixes which is bad news for the client project I'm currently working on (where there is resistance to any sort of auto-upgrade of Silverlight to Silverlight 4).


"Silverlight 4 is the first version I’d say we have a powerful end-to-end story for the tools for building line-of-business applications."

"Silverlight 4 beta is not currently supported with the Visual Studio 2010 Release Candidate release, but it is supported with the Visual Studio 2010 Beta 2 release. The main reason it is not supported is that we have a new version coming out: The Silverlight 4 Release Candidate. The tooling for the Visual Studio 2010 Release Candidate targets the Silverlight 4 Release Candidate which hasn’t shipped yet. We didn’t want to back-target the old Silverlight 4 beta release that we shipped in October. It’s a matter of timing and focus and it definitely does not mean what some folks have said: ‘You don’t like Silverlight’! It’s just a question of scheduling. When Silverlight 4 RC does come out the tooling will obviously come with that as well. When it’s happening isn't too far away. If you are working on a large Silverlight 4 project today you can contact me and we’ll try and get you early access to those bits but in the meantime the Visual Studio 2010 RC does support Silverlight 3"


"When can you expect a ‘Go live’ license for Silverlight 4? We’re not going to have a separate ‘Go live’ license for Silverlight 4 since it’s a web runtime license. But you will find that the release of Silverlight 4 is not too far away. Once that ships we’ll basically support ‘Go Live’ with that."


"There are definitely lots of changes coming, mostly in the order of nice small features people asked for, as well as some tooling improvements. [in answer to specific question about serializer classes:] I’m not sure if we’re adding new classes on the serializer front."


"Timeframe for Silverlight dev environment for mobile? You’ll hear about that very soon. I would recommend you come to MIX. We’re streaming it all live and we’ll be revealing more about our plans then (next month). The timeframe is not too far off."

"We don’t have all the details to share right now. Keep an eye out over the next month.You’ll see a lot more detail coming out. Hopefully you’ll be pretty excited by what you see. I spend at least 50 to 60 percent of my time right now focused on mobile – a large proportion of my team has been as well the last year. Hopefully we’ll have a lot of cool stuff to show off next month at MIX that will get everyone pretty excited. I’m excited by it so...."

"None of the versions of VS2010 out there right now support development for mobile. As soon as we talk about our Mobile strategy in the weeks ahead then you’ll start to see the Mobile tools for VS2010 and I think you’ll be happy with what you see in terms of the capabilities that we come up with."


"We are making good progress. If you want to write a Silverlight app for Nokia drop me an email and we may be able to send you some bits. The bits will be available for everyone to use shortly and you’ll start to see Silverlight used on Nokia phones in the not-too-distant future."


"Plans for charting controls in WPF and Silverlight? We have charting controls now in the Silverlight Control Toolkit. We don’t have all the features that ASP.NET and WinForms controls have but we’re working hard on that. They’ll be getting richer in future. You’re going to see us build a pretty rich set of reporting controls and charting controls that anybody can take advantage of. It’s definitely something that we’re focusing on, and planning to enable."


"With .NET 4 are WPF and Silverlight 4 data binding pretty much in sync? Pretty much, yes. What we’ve been trying to do with Silverlight is pretty much that whatever we put into Silverlight is compatible in terms of skills re-use. The last couple of releases we focused on code re-use and building up Silverlight 4 features so they had parity with some of the things in WPF 4. In Silverlight 3 we added a lot of things to make data binding richer. With Silverlight 4 we’re adding the next set of things. Some of the new things are INotifyPropertyChanged support is in there (?), handling null is in there, string format is in there and a bunch of other capabilities have been added. CollectionViews and sorting and paging and things like that which were in WPF are there in Silverlight 4. All the major constructs that were in WPF are there in Silverlight 4. There’s a few more advanced features that are still in WPF on the data binding side but I think all the basics now are there and should enable some good code-sharing across WPF 4 and Silverlight 4."


"It’s a question that I’m asked a lot. I know we’re looking hard at supporting something like that in the future. I was actually talking to Anders Heljsbergyesterday about that. He’s starting to think about the next release of C# and there were one or two features I put in his ear. One was that one. That’s top of line for him to look at and think about.


"The application has been released. It was a different team from mine that wrote the application and I’m currently negotiating with them to release the source code as well."


"I think you might be able to on PCs with COM support when you’re running in full trust mode. I don’t think Macs have serial ports but in Windows you can take advantage of the COM support."


(new programmer question wanting to know what to start learning) "First, you’re going to have to stick with WebForms – they’re not going away. That’s important to say upfront. Try and spend some portion of your time – not more than a few percentage points – of understanding what’s coming out and the roles. That doesn’t mean you need to know the APIs. Understand what is Silverlight? What is WPF? What is MVC? To the point where you understand what it is, but not to the point you can write code with it or to the point where you have to buy a book about it. Know what its role is. And then be pragmatic about what you decide to invest your time in. If there’s a project where you want to do something with video, or a very rich forms app inside the browser or you want to do something with graphics ... something like Silverlight makes total sense. Likewise, if you want to incorporate unit testing more into your app or you’re frustrated with the data control model in web forms then starting to use MVC makes sense. Don’t feel you have to keep learning and mastering new things – it’s a good way to avoid feeling overwhelmed and you can adapt the skills you have pretty easily so long as you don’t let yourself get overwhelmed by it."


"WPF 4 now uses new DirectWrite text system. You should see much improved rendering in WPF 4. Silverlight 4 does not use DirectWrite yet, but it’s something we’re looking at for the future. It does include a bunch of font rendering and text improvements as well."


"Silverlight 4 supports this model we call 'Elevated apps' when you’re running outside the browser and on the desktop. The user can optionally allow the app to do more than it can do in the sandbox – and that applies to Mac and Windows. Outside the browser it isn’t really a cross-browser thing it’s an “outside the browser” thing and, again, it works on Windows and the Mac. On Windows the one feature it does have that Mac doesn’t have is COM support so that you can activate and use COM objects. There isn’t COM object support on the Mac and we couldn’t add that feature. For the future we’re going to be looking at AppleScript support as there are similar things people want to do there. A ton of Enterprise application people asked for COM support. A lot of Adobe Air developers also really asked for it."


"I get asked this a lot. The main reason for that is mainly around security. People want to print without a ‘Confirmation’ dialogue. The trouble with that is on a website they could choke your printer if we didn’t ask permission. Likewise if we did full-screen mode they could display what looks like a login prompt that causes you to enter your user name and password. There were certain things we needed to do to keep your machine safe. The WebBrowser control is a tough one in that you can do a heck of a lot with it, including spoof attacks – and IE, Firefox, Chrome and Safari have all had exploits like that recently – and so we’re just being careful with Silverlight running inside the browser to make sure it’s not susceptible to those attacks which is why WebBrowser inside the browser is not available today. If we can find a way to make it 100% safe then we will do that."


"I think we support F# support for programming Silverlight today. I don’t believe we support the Parallel extensions yet, but I do believe we support multi-threading with Silverlight 4."


"Will Silverlight 3 with WCF be supported in the Visual Studio 2010 release? Silverlight 3 will definitely be included in the Visual Studio 2010 release. As soon as Silverlight 4 ships it will also be supported in the Visual Studio 2010 release. Visual Studio 2010 will also support the WCF RIA technologies that will ship as part of Silverlight 4. The WCF RIA technologies will require Silverlight 4. It uses some of the new data binding capabilities of Silverlight 4 that it requires on the proxy generation. We expect very quickly after Silverlight 4 ships we’ll turn on the auto-upgrade flag so we expect most users to be on Silverlight 4 within about 4 weeks of the point we ship. So to answer the question you will be able to use Silverlight 3 and a combination of Silverlight 4 and WCF RIA Services with Visual Studio 2010 as well."

"There are tooling improvements coming for WCF RIA Services"


"It will be supported in the future. It’s not currently supported but as soon as .NET 4 is there and WCF RIA ships we’ll definitely make sure that you can support it."


"Visual Studio 2010 and .NET 4 have been focussed on fit and finish rather than giving developers lots of new stuff they have to learn"


"We rebuilt the VS 2010 UI using WPF so you can customise everything with XAML. You could make the text editor a circle instead of a square if you really wanted to!"
"We don’t actually ship a dark theme out of the box. I think you’ll see with PowerTools and other downloads you’ll be able to set up a dark theme pretty easily."


"The planned launch for Visual Studio 2010 is April 12th. We are planning to have the RTM (Release-to-Manufacturing) release done by the launch event but at the end of the day we’re driven by quality. If you tell us we’re not ready, we won’t ship but we will try very heard to be ready. We are targeting a date to try to ship before then. I’m not sure if the discs will be available before then or not because once we go to RTM we actually hand off the discs to a production company. It takes about 7 days to cross the bits from our servers onto MSDN for download. I’m not sure whether it will be available before April 12th but certainly we’re trying to target so they are available ON April 12th, which is why I’m asking people if they find problems with the release candidate to email me directly."


"I’m not aware of any gotcha’s. We’ve done a lot of testing of those scenario’s. We support both running side-by-side and you can select on an application pool basis."


"It is much, much, much richer than any previous release. You can now pretty much plug in anywhere, whether it’s X-editor shell, build system. Everywhere is pretty much extensible. We have tried to maintain compatibility with the existing add-ins and packages though. We worked very closely with all the big vendors and open source projects that build add-in packages for VS, but you will find there’s a ton of new extensibility features that you can take advantage of."


"I believe the mouse wheel does do scroll-up and scroll-down – at least in Beta 2 and the Release Candidate. If you hold down the Control key it does Zoom-in and Zoom-out. I think in Beta 1 it did zoom-in and zoom-out and we changed it"


"DataAnnotation can be used with property-level validation. It also supports model-level validation. You can add an attribute at the fat (?) level and do validation of multiple properties. If you want to do validation on the state of the object or something like that you can plug-in other validation frameworks – things like Castle Validator, Entity Library validator or your own validator. All can be plugged into MVC 2 or that whole system. "


"There is a ribbon control for WPF 4. It’s a separate download on CodePlex. I’m not sure if the version updated for Release Candidate 4 is available yet."


"There is going to be a new version of Blend coming out that takes advantage of all the new WPF 4 and Silverlight 4 features. I wouldn’t call it a dramatic overhaul but you’ll find it gives you a better experience than today. Hopefully you should see that in the not-too-distant future"


"We haven’t announced Expression Studio 4 yet. It’s something we’ll announce in the future. We do plan on shipping Silverlight 4 and Visual Studio 2010 in roughly the same time frame. Silverlight 4 is a separate release that includes tooling for Visual Studio 2010 but it will ship separately."


(Question asking if Scott working with Moonlight to support Silverlight 4) "I’m afraid I don’t know. Moonlight is an open source project for running Silverlight on Linux. It’s sponsored by the Mono project and by Novell. We work very closely with them. We do deliver some bits of code eg a lot of the media code that Moonlight uses as well as the codecs that Moonlight uses. We also deliver all the test cases that we use for Silverlight ourselves. That allows Miquel and his team to use the same unit tests and test cases that we use. We are very supportive of their project."


"MVVM stands for Model-View-ViewModel that’s popular with WPF and Silverlight. It’s like a Model-View-Controller (MVC) pattern in that it’s separating out your view from what’s called a ViewModel and your controller object from your model objects. It enables richer unit testing and code composition. MVP is the Model-View-Presenter pattern is another derivation of separation of concerns that you can use which is popular with WebForms and WinForms. All these patterns are good and if they help you unit test better that’s great. If you’re doing WebForms or WinForms I would look at the MVP pattern. If you’re using Silverlight or WPF I’d encourage you more towards the MVVM pattern. In Silverlight 4 we’re introducing Commanding which integrates better with MVVM and you’ll see both our Visual Studio and Blend tools better able to support MVVM with both WPF and Silverlight."

"There’ll be a better tooling experience."

"In the short term there won’t be an official MVVM framework coming. What we’ve focussed on now is the core MVVM infrastructure for WPF and Silverlight – providing the hooks for everyone to use their own MVVM patterns on top. I think you’ll see more prescriptive advice or more of an out-of-the-box solution in the future as well."


"We have done a bunch of work around optimising script downloads in ASP.NET 4 using our new AJAX framework so definitely that is something we spent a lot of time on. Look at my .NET 4 blog posts – I did a post in October/November about our Content Delivery Network (CDN). With the ScriptManager we’re building in CDN support. The way CDN works is think of it as servers positioned all over the world that allow caching much closer to the browser that’s actually requesting the content. It’s useful for video and JavaScript files and for images. If someone in Germany is accessing us here in Seattle there is a cache server in Germany that will download images from there, which is quicker."


"We’re hoping to contribute some nice things there with the JQuery core team. It’s up to the core team what gets included. What we contribute today is the Intellisense stuff for JQuery and we distribute it. We are hoping to make some code contributions to JQuery in the near future so hopefully some good things happening there in the future."


"MVC 2 is a pretty major upgrade from MVC 1. It is completely compatible so nothing breaks. Some of the big features are around strongly typed helpers so you get Intellisense and compile-time checking and a built-in validation system. Pluggable but out-of-the-box you get an easy way to apply attributes for validation as well as client-side JavaScript for validation automatically. We have new what we call Editor4 helpers that will help with scaffolding for forums as well as individual control inputs. We have new area support so that you can segment your project and route controllers and regions together in an easier way. We have async support so you can go off and do network access and not block over threads so it’s much more efficient. We have this thing called RenderAction which allows you to define a region of a page and have it be output by a separate controller or a separate action method from the rest of the page which answers the question about making pluggable modules and a portal-like framework. With areas you can actually group your site in a more pluggable way. Then using RenderAction you can actually do things similar to UserControls today in that you can have a page with controllers that render a part of a page and then for each of the sections."


"Go to my blog and about two weeks ago I did a blog post on MVC2 validation features which should make validation really easy for most scenarios."

‘ORCHARD’ – MVC CMS Framework

"You’re also going to see us come out with this project we call Orchard in a couple of months. It provides a nice CMS blogging framework where you can assemble sites using ASP.NET MVC2. Site navigation and pluggable composition of UI are the sorts of things it will provide a nice out-of-the-box experience to use that. We are looking at richer MEF integration with MVC in the future. Until now our approach has been ‘Make sure that in MVC everything’s extensible’ so that we can work with any dependency injection framework or any extensibility or component framework but at the same time be able to provide out-of-the-box features like validation. MEF integration in the future will allow you to take advantage of services in an easy way where you don’t have to wire anything up."


"The release notes today walk you through how to migrate your application. With RTM we’ll also have an automated process where you won’t need to change any code to do that."


"Will source code ship under MS-PL? Yes it will ship with an open source license that anybody can to use to modify or change things."


We are updating it. There was a bug around empty string input which caused some unit tests to fail. We are looking to upgrade it and we’re also working with Jon Galloway for a new store-front –based tutorial for the final release of MVC2. You’ll see a lot more tutorials on that coming out as we get closer to final release."


"I did a blog post on this a couple of weeks ago because I wanted to clarify that MVC definitely does not kill WebForms. We think there’s a large number of developers out there who prefer each of those two types of models. MVC is new and there’s huge support for it and excitement around it but reality is that 80-90% of .NET web developers are ASP.NET developers who use WebForms. It’s not going away. With .NET 4 there are enhancements on the WebForms side – better markup, ability to control client ids, more ViewState management, SEO for URLs, new data controls, new validation features, new charting controls. I could go on and on. It’s definitely not going away. I see big improvements to both MVC and WebForms in the future because a lot of people are using both and we use both ourselves."


"Yes, you can use MVC2 with the Express editions of VS2010, just as you can use MVC1 and MVC2 with the Express editions of VS2008."


"Is there a better way to create MVC views eg easier way to avoid spaghetti code? That’s really two questions. Are there better ways to create MVC views that we’re coming out with? Yes – we’re looking at features like strongly typed helpers and how to create forms in a cleaner and more componentised way. We’re also adding support with the final MVC release so that when you add a View you can optionally add T4 templates to use the Spark view engine as a syntax option. We’re also looking for an upgrade for MVC 3 – an alternative view engine that we might also support to provide a nice clean syntax for generating View markup. What we find is different groups of people have different opinions as to what the best way is to do view generation so you’re going to see us support all of them in the future."


"I’m doing the big keynote for most of day 1 and it’s looking like I’ll be doing part of the keynote on day 2 as well. MIX keynotes will be streamed live. All the breakout sessions will get posted as video on the web."

"I’ve got about 2 hours of content to deliver in the keynote."


(Question asking if new stuff should be written in F# rather than C# or VB): "If you’re new to programming or Silverlight I’d recommend you start with C# and VB which are our two primary languages. You’ll find most samples written in those languages and the tooling support’s great. F# is a new language coming in 2010. It’s a functional language, optimised around a couple of scenarios: where you want to parallelise your operations – you want to run things across multiple cores or multiple servers. The functional aspects of the language make it very good for that sort of execution. It’s also very good for scientific and engineering things and financial analysis or quantitive statistics and analysis. We have great support coming with VS2010. It’s not something we expect most people to use – it’s more for specific workloads. The nice thing is it is a .NET -basedlanguage so you can use any .NET API with it."


"There’s a bunch of features coming with EF4 which is part of .NET 4, but not from my team. In general you’ll find a lot of the pain points that people have complained about in the past have been addressed. In particular POCO (Plain Old C# Objects) is supported. Lazy loading is supported now by default. I believe self-tracking identities is supported so if you want to do entities that cross different WCF boundaries between client and server there’s much richer support for that now. Automatic pluralisation and singularisation of tables from the database eg Categories table becomes a Category object. Better support for exposing foreign keys which is useful for stateless web scenario’s. The ability to do ‘code only’ so that you can define your mapping metadata with a Fluent API as opposed to having to have a mapping file. I’ll try to blog about it in future but search on it and you’ll find a bunch of articles out there."

.NET 4 and AZURE

"We’re working on that right now. I don’t have an exact date. It’s definitely something we’re working hard to make sure it’s available soon."


"There’s rich support in VS2010. You can now open projects, edit projects in Sharepoint, code, get Intellisense, debug, deploy, add new controls, databind to lists and services. The feedback we heard from Sharepoint developes is phenomenal so we have a great story for Sharepoint developers with VS2010."

"Sharepoint tools for VS2010 only work with Sharepoint 2010 that’s about to come out."


"There is a VS2010 Starter Kit that came out in the last day or two which has WCF content."


"With VS2010 we have made installation of Team Foundation Server a lot easier. We had feedback it took too long with too many steps in VS2008. We have ‘Basic Setup’ mode where you can get source control, work item tracking, automated builds up and running on a completely clean machine in less than 20 minutes. I did that without having ever installed TFS in my life on a recent conference trip. You can now install it on servers and client operating systems. So you can install it on a local Windows 7 box if you want to."


"With TFS we’re shipping it as a free component of all MSDN subscriptions. If you’re an MSDN Professional or Premium or Enterprise subscription you will get a free version of TFS both at the server level and at the CAL level. We don’t plan to have a free version of TFS for non-MSDN subscribers, but we will have a version of TFS that’s very inexpensive to buy. The price point will be about the same as Visual SourceSafe."


"We don’t support it today but I think you’ll see a lot more stuff around that and mobile development in the next few weeks."


"There’s a project type we have called the Web Deployment Project that we supported with VS2005 and VS2008. We had separate project types that let you automate deployment to servers so you could change connection strings, run custom tasks as part of the project. What we did with VS2010 we built this deployment into the Web Project itself so that instead of having a separate project you could in VS2010 do deployment directly. In VS2010 you can right-click the project and say “Deploy”. There is a Deploy tab on Project Properties that allows you to customise that. Generally I would recommend that you lean towards that model for deploying your web applications. It’s a lot richer – there are a lot more options. We are looking at trying to provide guidance for people who already have deployment projectsin the next two to three weeks – on how to migrate projects and also looking at do we another revision of the web deployment type so that it will just work with VS 2010."


"No. Silverlight is cross-platform. You can however host WinForms controls within WPF (which is Windows-specific)."


"Search the web for MonoTouch – a tool built by Novell. What’s nice is you can use C# and standard .NET UIs and they have an API for building iPhone UI. There’s a lot of people raving about it."


"We’d like that too. Obviously we’re looking into what we can do. We have done work so that you can stream Silverlight content to the iPhone. Enabling Silverlight to run inside Safari on those devices is something we’re interested to do but it’s something that Apple controls. We’re talking to them but ultimately it’s their decision not ours."


"We will definitely be supporting updates to PRISM in the future. Expect to see announcements there."

IIS7 FEATURE SUPPORT IN CASSINI FOR VS2010 (Debugging like with Cassini for IIS 7)

"You won’t see this in the initial release of VS2010 but you’re going to see more details coming out in the not-too distant feature. It’s definitely something we want to enable."


"Is there going to be an IIS Smooth Streaming Service with Azure? It is something we’re thinking about. There is now a EC2 role that you can use for Media Services with EC2 that you can take advantage of. But we are looking at this for the future."

Tuesday, 9 February 2010

Silverlight UK User Group Video: Bing Maps Control for Silverlight

The EMC Blogs still seem to be down so click on the image below to go straight to ExposureRoom to view the latest video from last Wednesday's meeting of the Silverlight UK User Group

SIlverlight UK User Group - Johannes Kebeck on Bing Maps Silverlight Control (Feb 2010)

As usual, if you have the bandwidth the HD version (or the iPhone version) can be viewed by pointing your browser at

If you find the video is buffering/stuttering you may prefer to just download the original file (which will be higher quality than the transcode you normally see) which can be done by clicking on the Download Original link on the ExposureRoom site. You need to be a registered member (which is free) and logged in when you click on the above image to see this link.

Sorry this is a bit rushed - I'm on my lunch break!

Saturday, 6 February 2010

Silverlight UK User Group Talk on "MEF for Silveright 4" by Mike Taulty

At Wednesday's Silverlight UK User Group we had two excellent talks. One from Mike Taulty on A Guided Tour of Microsoft Extensibility Framework (MEF) in Silverlight 4, and a second from Johannes Beck on Working with The Bing Maps Control for Silverlight.

Ordinarily the video for the talks would be posted on the blog of one of the organisers - Mark Mann or Michelle Flynn at EMC Consulting, but unfortunately the blogs were hacked a few days ago and at the time of writing were still unavailable.

Video of the second talk won't be available until early next week (it's still being compressed)

The "standard resolution" can be viewed over on The ExposureRoom web site.

Silverlight UK User Group Video - Mike Taulty on MEF in Silverlight 4 (Feb 2010)

As usual, if you want to see the video in HD or on an iPhone you need to point your browser at

As soon as the EMC blogs are back up I'll update the link above and post the main EMC URL which will also have copies of the slides and Mark's notes about the meeting.

Thursday, 4 February 2010

2 Years of User Group Videos

It's rather scary to realise that next month will mark the two year anniversary of when I first started doing video for London-based 'Microsoft developer'-oriented user groups. It seems like only yesterday I lugged my gear across town to record my first user group session and then wrestle with everything that post-production involves.

User Groups I support

My regular 'gigs', when work doesn't get in the way of me attending, are: The Silverlight UK User Group, The Edge User Group (formerly Vista Squad) and The UK Azure User Group. But occasionally I've also got to video other events usually because they're very occasional, or because there's a 'rock star' speaker planned and people have recommended me. Examples include The London .NET User Group when Microsoft VP of .NET Scott Guthrie came over, or The ALT.NET Conference which is only held once a year.

In April and May this year it looks like I'll also be recording some talks outside London for the first time. This will be for the NxtGen User Group in Oxford, specifically to capture a highly-recommended Silverlight talk, and also to record a 'relative'ly well known speaker from abroad.

Pro's and Con's of the job

Demand for 'community' video seems to be rising and last month I actually had to turn away a couple of requests because there are only so many free weekends in a month to deal with post-production.

Fortunately I get to video many more interesting talks than bad ones, and I can recall only one occasion where a talk was so bad that the user group organisers themselves suggested it might be best to 'forget' publication (I was only too happy to oblige!) This weekend I'll be finishing off work on a couple of talks I recorded last night for the Silverlight UK User Group. When the talks are as strong as these were I feel somewhat blessed in having the opportunity to go back and re-view them, enabling the content to better 'sink in' while most of it is still fresh.

Why does it take so long?

I'm often asked how long it will be before a user group talk I've recorded will be available. I aim to get a video published within a week of a talk being given, but in a busy week this can stretch to a fortnight or even three weeks. When I explain to people what's involved or how long the video publishing process takes I tend to get one of two rather extreme reactions: shocked incredulity that something so seemingly straightforward could take so long, or a head-shake as someone pats me on the back while giving me a sympathetic smile.

The first reaction is the most common, and the second is invariably from someone who's done some video publishing on the web themselves, and knows first-hand what 'editing', 'rendering', 'compressing', 'transcoding' and 'publishing' really means in terms of lost wall-clock time. A talk of just over an hour on HD video will equate to many hours of your computer being locked up and unusable doing intense mathematical calculations to create a file which will then typically take at least a day to upload, even on a fast broadband line, only to then fail with some obscure and unclear error when being transcoded to Flash.

And that's before all the 'manual' work you have to do yourself is taken into account.

But things really have improved quite dramatically over the last couple of years. I'm still using the same (maxed-out) laptop I was using when I first bought my camera in January 2008, but the whole process is far more robust and reliable than it used to be.

User Group Video - What's the Point?

All of which begs the question 'Are user group video's worth doing?' Originally I didn't think so. I helped out more to 'get practice' with my video gear while the project they'd been purchased for stalled, than for any altruistic or 'there's a need' reasons. But given that the typical audience for a user group video is 3-4 times that able to attend the original event I have changed my mind. Video tutorial or marketing sites may talk in terms of video needing thousands of hits to be deemed a 'success' but I think the sort of 3 to 4 -fold increase in audience size we're seeing for user group events can only be perceived as a 'win' for the speakers and the user group.

Just occasionally a user group video will totally 'jump the shark' and become almost viral. I'm still trying to work out precisely why it is that Serial Seb's talk on MVC Best Practices (mistakenly published twice) has hit close to 7000 views (and rising) at the time of writing, where the more typical audience figure for a user group video is around 200. It's a great talk, but such a large variance doesn't make sense.

My workflow - and a call to action!

My video workflow is pretty basic, and has remained relatively unchanged over the last couple of years. Most of MY time (as opposed to the computer's) is spent editing the titles and converting the Powerpoint slides that were used to the right format. This last job is a tedious chore, and a largely manual process. It involves taking a 4:3 format Powerpoint presentation and converting it to a set of 16:9 'widescreen' format bitmaps that can then be injected and animated in the video. Speakers would make my workflow so much easier if they produced their slides to the widescreen format. Powerpoint, which is what everyone uses, has had a Widescreen template for years now - it's just nobody seems to realise it's there! Since the user group venues typically feature wide-screen plasmas (which incorrectly 'stretch' the speaker's 'square-ish' slides) and projectors, most laptops and the A4 paper in printers tend to be widescreen format it seems crazy we all still produce those square 4:3 format slides for our talks! If you're a speaker, regardless of whether you're being video'ed or not, do me a favour and switch to widescreen today - it makes sense all round!

The manual 'slide conversion' process involves using TechSmith's excellent SnagIt product to snap a full-screen copy of the slide presentation running on a PC at HD resolution, and then tweaking it in Photoshop so that the black borders automatically rendered by PowerPoint are more in tune with the colours used on the actual slides. One side-effect of this 'manual' slide editing process is that I have grown to detest speaker slides that feature fussy backgrounds or graduated fills, where before I positively encouraged them!

When I started doing video I used Sony Vegas Pro 8 to produce a compressed render that would get video file sizes down from a typical uncompressed 20GB in HD format to under 1GB for the web. For a 70 minute video Vegas would take anywhere between 11 and 15 hours to produce a render, typically having to deal with about twelve 'tracks' once all the titles, transitions, slide effects, intro music etc had been placed on the timeline during the edit.

One day I'll be able to afford that 8-core processor beast with a huge RAID array that will reduce this render time, but in the meantime my trusty 'maxed-out' Dell D820 laptop with external USB-2 drives will have to do. Given the cost and the time available I think it does a great job.

Sony Vegas Pro is an under-rated video editing package that's powerful, but very easy to use and can even be programmed against in .NET. But in its version 8 incarnation running under Windows Vista it tended to crash. A lot! I also own a copy of Adobe Premier Pro CS4, but I find it just as unreliable, and it loses serious points for usability, intuitiveness and too many years of baggage!

My camera, the Sony PMW-EX1 records video to two hot-swappable PCI Express RAM cards which can then be used directly in the laptop. With two 16GB cards and two 8GB cards and a laptop with a cheap "Passport" external hard drive I've been able to shoot HD video footage at an all day conference (i-Design08 and i-Design09) and I could never go back to recording on tape! On the down-side my camera only shoots High Definition (despite the fact most people won't care and will be happy with 'standard' definition sized video) which is what requires all the horsepower when it comes to editing, rendering and compressing the recorded results. Why bother with HD? Most speakers run laptops at HD resolution and code demo's can be hard (impossible) to make out unless viewed in HD! Interestingly, my camera is the only piece of technology to have significantly gone up in price since I bought it just over two years ago. But it is probably not the best tool for producing SPEEDY video for the web. Sony just announced a newer version of the camera which will also record SD, but ironically I think this is at a time when everyone's insisting on HD.

When I first started producing video for user groups I would re-compress the video for the web using standalone compression software Sorenson Squeeze 5 but this would add ANOTHER 12 hours to the rendering process, and often produced files that were just as large as the original render, but worse looking (for obvious reasons as compression loses data each time it is used). It was all a bit of a nightmare and I'd lose whole weekends failing to get video published: If Vegas Pro didn't crash on Windows Vista (usually 10 hours 50 minutes into an 11 hour render!) then you could pretty much guarantee that the video uploading service's file uploader would repeatedly die on attempting to transfer the file. And if the upload finally worked OK on the fourth or fifth attempt then the server-side software would choke on trying to transcode the uploaded file to the Flash format. When this happens there's typically no support or help available because these video hosting services are providing what limited resources they have for free and already swamped with issues from 'new to video' users who have no idea what 'editing' or 'compression' or 'transcoding' actually means.

Recent Changes that make Video Much Easier to Produce

Thankfully, several things have happened over the last 2 years which have made life a whole lot easier.

Firstly I discovered there is life beyond Vimeo! Vimeo tends to be the first recommendation for video hosting to anybody who hasn't got megabucks to spend on video for the web, but who has reached the limits of YouTube's paltry 10 minute running time limitation. They have a free service, or for those wanting to post HD video without waiting an eternity for transcoding, a reasonably priced alternative that costs about £60/year. The trouble is they're too popular, their software is buggy (and they keep changing it) and their support is .... well, about what you'd expect when there's no income available to support it!

Luckily I discovered an alternative service. Exposure Room is a video hosting community that's second to none. When I had a problem that Vimeo had been ignoring for weeks, ExposureRoom diagnosed it within hours. Admittedly it was an obscure problem: Sorenson Squeeze had a nasty bug which rounded 1280 pixel wide video down to 1278 pixel wide video and Adobe Flash transcoding couldn't cope with a pixel count that wasn't a multiple of 4! When I've had other problems Exposure Room have quickly provided workarounds. For example, when my router seemed incapable of using their browser upload program without stalling before completion, they offered a reliable direct FTP service instead. Now that's what I call service! Other benefits: Their turnaround time is incredibly fast AND they allow you to embed HD versions of your video in your own pages, rather than insisting you direct users to their site. They allow anybody registered on their site to download the originally uploaded file before it was transcoded to the Flash format. They have recently added iPhone support that streams the best looking video I've ever seen on that device. And they've already announced support for the iPad! They are the best, and I still have to keep pinching myself to be sure that I'm not dreaming the fact they're not charging me anything for their services.

New releases of software (Sony Vegas Pro 9 and Sorenson Squeeze 6), both running on the vastly improved Windows 7 operating system mean that the 'run for a long time and then crash' problems of old are now long gone. I render out at 'full fidelity' (35Mbps 720p HD 25 frames per second) in Sony Vegas 9 which now takes about 2-3 hours for a 1 hour video with multiple tracks. Then I use Sorenson Squeeze to render out a compressed 3Mb 'HD' Mp4 version for the web, which takes about 14 hours to run. The most important improvement is that my PC is totally usable whilst this rendering/compression is going on, whereas under the old software on Windows Vista I was 'locked out' of my PC for whole weekends as responsiveness was close to zero and would typically cause a 'blue screen of death' if I even thought about using the keyboard. Uploading the compressed MP4 file, even using direct FTP on a line that BT insist is 8MB broadband, then adds on another 12 hours, and transcoding/publication by the video hosting service on top of that adds a few more.

But this is acceptable when the time can be accurately predicted, the way it can now. It means I can usually have a video available worldwide on the Monday morning after a user group talk has been given, here in London.

One of my new year's resolutions was to be a bit more 'professional' about the way I do user group video. This year I've started publishing all user group video in three different formats. The 'standard size' (640x320) is usually embedded on the user group site or blog that 'owns' the meetings. The HD and iPhone versions are then embedded on a single web page which I host myself at because it enables me to host the Exposure Room supplied script that's needed to auto-detect the iPhone and switch between the two formats appropriately. I've introduced speaker 'permission to publish on the web' forms to keep the legal folks happy. I'm starting to produce a DVD or Blu-Ray copy of the talk for the speakers who want them. I'm promoting those 'sponsors' who give the events I video free stuff for the meetings, as well as those organisations who let us use their buildings or provide free pizza and/or drinks at the event. I've started making regular backup copies of all the video assets (as well as the raw footage, full definition edited masters, and published web versions). I also intend to start remembering to update this blog as new video's gets published!

New Videos This Week

With that last point in mind, this last week saw two video's from the January meeting of The Edge user group being published.. Check out An Overview of Sharepoint 2010 by Dave McMahon or
SOLID Design by Ian Cooper, if the title sounds relevant.