Saturday, 30 January 2010

DDD8 at the Microsoft Campus, Reading

Another year, another community day at the Microsoft campus in Reading: DDD8 (Developer! Developer! Developer! - Event no. 8!).


Featuring talks from those working with Microsoft technologies, but specifically excluding Microsoft staff themselves, the DDD event has been a success from the day it first launched in Reading, with similar events now also organised annually in Scotland, Ireland and 'the South West'.


Over the years that it has been running, the succesful formula has stayed pretty much the same, with a few tweaks here and there as new lessons are learnt. If the event has a problem, it's only that demand far exceeds the capacity that Microsoft's meeting rooms can cope with. At the first event, as I recall, it took several weeks to 'fill up' after bookings first opened, even though there is no charge to attend. This year, with its reputation firmly established, all the available places went within 12 minutes of being announced, and the waiting list had built up to a couple of hundred within just a few hours!


As I've mentioned in reviews of previous events, your overall perception of the training value of the event very much depends on making the right choices about which sessions to attend. Four parallel tracks are run, with the sessions available in those parallel tracks selected from a much larger number of submissions from would-be speakers. The final selection of what's offered is based on votes from those expecting to be able to attend. Session abstracts, which sometimes can deviate quite significantly from what is actually delivered, or previous experience of a particular speaker are the only real guide here.


One of the things DDD has always prided itself on, is the way it tries to balance talks from 'experienced' or 'rock star' speakers with others from 'first timers' who get a unique chance to present to a sizeable audience at a fairly high profile event. Of course there is a risk that untried speakers will fail badly, but overall it's a policy that seems to have worked very well in giving people the encouragement to step forward, gain confidence, and go on to become 'rock stars' in their own right.


This year's event had its own hashtag of #ddd8 - a tag which came 3rd in the Twitter table rankings for most popular UK hashtags for the day, indicating how popular this event - and talking about it - has become. Looking at that Twitter stream as the event kicked off I saw a few tweets commenting that some of the initial slot talks had been at much more of a 'beginner' level than expected.


It's always going to be hard to pitch the right level of talk across the wide cross-section of developers who attend DDD, but it was good to see that the organisers responded almost immediately to the suggestion that at future events the 'level' of the talk should be very clearly identified in the session abstract. This will help all of us make the right decisions when it comes to making best use of the offerings that are available.


Session 1: TDD


I fell slight victim to this 'beginner level' problem with my first talk, Test Driven Development to Save Your Time. Money and Sanity, given by Richard Hopton. When the talk started Richard was very upfront about this being a 'for Beginners' talk, having only used MSTest (for 3 months) out of the frameworks he mentioned by name in an overview slide, and I'm sure there's an audience for this talk - but alas I wasn't it. A more accurate session description (or consistency between the title on the opening slide and the title on the session description) would have made that clearer to me before I attended.


On the positive side, Richard was a 'natural' at presenting, and his enthusiasm carried him through some rather sticky patches in the demo, which would have caused weaker speakers to crumble and fall.


Session 2: Hello Document Databases


I broke my own rules this time around, by trying out a 'new' speaker and a 'new' subject, rather than going with someone I know who always delivers a great session, even if the subject under discussion isn't particularly one I feel I need to learn about.


So common sense says I should have chosen Liam Westley's Commercial Software Development - Writing Software Is Easy, Not Going Bust is The Hard Bit, and in some ways I am sorry I missed it, particularly given that the reviews from those who did attend were universally ecstatic.


But I did feel I also got lucky in choosing Neil Robbins' Hello Document Databases session. Neil was a very natural presenter, and he gave a very nice overview of 'NoSQL (Not only SQL) databases', focussing on CouchDB (so easy you can operate it from the couch - a product with a tag line of 'Relax', which was often repeated, sometimes jokily from audience members when demo's went a bit skewy because of case sensitivity issues).


I didn't come away totally convinced this was the future for document-based systems, or that it was any more than an impressive technology for a hobbyist to play with rather than an 'Enterprise solution', but that may be my 'not familiar with Ubuntu' bias showing through.


My reservations aside, the talk certainly gave pause for thought, and it was nice to get a basic overview of this area of the business. I came away feeling I'd learnt something new, which is all I really look for in a talk. Overall, a good talk, well presented and I'll be watching out for future user group talks from Neil as a result of this one.


Session 3: C# 4.0


The busiest session of the day, by a long way, was Jon Skeet's C# 4 - interest was such that it was the only session that took up the two biggest session rooms, reducing the choice for this slot from four sessions to three. Despite the expanded audience space the session STILL got full to capacity.


Jon is a software engineerat Google, and is something of a hero on the London developer scene. His book C# in Depth (Manning Publications) is rightly praised for being one of the best books written on the C# language, and his presence answering difficult questions on the Stack overflow Developer forum site is legendary. So expectations were very high, and I wasn't disappointed. Jon has a knack for explaining very difficult topics in terms that even the average developer (that'll be me then ;-)) can understand. This was an excellent talk.


Grok Talks


Over lunch, shorter 'grok talks' were given in a much more informal setting than the main sessions. I only heard two, but felt that something had been lost compared to previous events, in that they ran for much longer than I remember. At previous events I've managed to hear four or five quick talks and still have time to socialise a bit. This time round I only got to hear 2 before I needed to take a quick break before the main sessions restarted, and I felt both suffered from being too long.


Session 4: Microsoft Surface


The fourth slot of the day was the most difficult for me to choose from.


There were four great sessions scheduled, covering C# on the iPhone with Monotouch from Chris Hardy, Not Everything is an Object from Gary Short, Microsoft Surface from Kris Athi, and Entity Framework - How to Stop Your DBA from Having a Heart Attack from Simon Sabin - this last session being so popular people were leaking out the doors!


I chose (pretty much at random) the Microsoft Surface talk, and wasn't disappointed. This talk was, like Richard's, very much at the beginner level, and probably didn't have enough material for the scheduled running time, but I came out feeling it had been well worth attending.


It was a bit of a surprise to discover that the official Surface SDK isn't officially supported on anything other than Windows Vista with Service Pack 1 (although Kris mentioned that if you were running Windows 7, there was an unsupported hack that could be made to the msi to fool the SDK into thinking it was running on Vista).


To be honest, I came away with the impression that Surface was an even more niche product than I'd thought it was, and not likely to become anything other than even more niche (or possibly 'let go') in the near future. Questions around using the Surface API on a smaller Slate or iPad-like device gave answers that indicated Windows 7 new Multi-Touch features were very much an 'improved' version of the lessons learnt from Surface, which gave me the impression Surface was now stuck in a bit of a dead-end.


That being said, this was important stuff to hear about and I enjoyed the session, and particularly the demo code sections which contrasted the Surface controls with similar WPF ones, and included using two mice with the SDK to simulate the two fingers that would be used on a real Surface table hardware device.


Session 5: A Developer's Guide to Encryption


My final session of the day was Barry Dorrans' A Developer's Guide to Encryption, which turned out to be a fun way to end the day.


Barry bravely tried to fight his way through his session, which taught the basics of encryption and the various algorithms and terminology, but was frequently interrupted - not just by the audience pointing out several spelling mistakes on his slides and in his code (I counted five!) but by 'evil' video's that had been inserted into his presentation by other organisers of the event at strategic points.


This was Barry's last DDD, as he's off to the States to get the Microsoft chip implant at the end of the week, and the talk turned into a long ribbing, the highlights of which were some spoof ads for Barry's new book, that showed its excellent use for propping up tables, trying to get even with former UK evangelist Daniel Moth, or simply helping to keep the elderly warm (by burning it) during the tough Winter spell.


It was all good fun, and appropriate revenge for tricks Barry had played earlier in the day when one of the organisers, Phil Winstanley left his PC unattended, only to find he had apparently tweeted comments like 'I am going to dye my hair from now on, so people will talk to me', 'Has anyone seem my leather basque? With the studs? On the inside?' (Phil has his leather jacket stolen while out the night before) or 'I'm going to miss Barry so much. Gary Short is not a substitute'. I wonder if Microsoft USA will know what's hit them!


Closing Thoughts


Sessions and learning opportunities aside, this really is an event for those that believe in the reality (rather than the hyperbole) of 'Community'. Microsoft employees may be forbidden from giving talks, but their evangelists and developer leaders are typically in attendance, in their own time, just to network and chat. Security staff and organisational staff turn up hours before the first attendees show, and I felt for them today when I realised that the overly plentiful bacon, sausage or egg butties provided for attendees had all gone by the time Microsoft staff got the chance to put up their feet for a minute when the first session kicked off.


As an event DDD is a great showcase for not just the volunteers who put so much time and effort into making the event happen, but also the Microsoft eco-system. It's to Microsoft's credit that it's happy to sponsor an event where the content is pretty much out of its direct control.


It only remains for me to thank all the organisers for another great event, which shows off community in the best sense of the word. Good food (thanks Microsoft), free buses from the station (thanks SQL Bits), some great talks, plentiful snacks and SWAG (thanks Developer Express, Microsoft, and others) - what more could you ask for from a developer event? Well done, and thanks to everyone involved!


Edited to add: There are some nice pictures from the event by Barry Dorrans on his Flickr stream here

Saturday, 16 January 2010

MIX10 in Las Vegas - So, why the hell are you going, Ian?

MIX10 bling!

In March I'm attending MIX10 - Microsoft's 'cool' annual designer/developer web conference held in Las Vegas for 3 days every March.


It's a sign of my age that I nearly wrote 'trendy' instead of 'cool' just then, and in truth I see these events as being essentially geared to the younger, hipper developers and designers, most of whom won't be directly footing the bill for the experience. With less experience of these events and the real world outcomes, they are more easily persuaded by the 'positive' vibe the event generates and typically return to their jobs re-enthused and excited about the possibilities. That's got to be a good thing, right?(No disagreement here!)


For cynical old curmudgeons like myself who've had (far too many) years experiencing similar 'rah! rah! rah!' Microsoft events, attendance is not so essential, and might even be said to be best avoided! Time spent listening to overly optimistic claims or vague promises presented as if they were fact, or watching simplified demo's that don't reflect any kind of real world application reality aren't worth paying for if you live, as I do, in a world where time=money and there never seems to be enough of it to go around (If you think that 'vague promises presented as fact' comment is too harsh, remember that we were shown 'Silverlight on Mobile' over 2 years ago and told it was coming 'very soon' - still waiting!) A certain amount of blind belief in shiny new toys that will invariably fail to live up to much of their hype in the real world, and quickly get replaced with other shiny new toys that are equally flawed (or even more so) a year or so later will help older farts like myself get through the experience and emerge in a less disillusioned frame of mind - at least where Microsoft, its products and its conference events are concerned.


Regular blog readers may remember that the last MIX event I attended (MIX08, two years ago) was a huge disappointment for me and I stated after the event that I thought it represented very poor value-for-money for those of us having to traipse across to Las Vegas from Europe and pay our own way.


Admittedly, my whole take on MIX, as opposed to other Microsoft events (which, let's be honest, aren't THAT different from MIX despite what all the hype says), is probably somewhat jaundiced by several things that happened on that first trip. At the risk of boring anyone reading this with an overlong post, let me recap:


  • I got sick for a couple of days (flu-like exhaustion and bad night sweats bang in the middle of the conference, which on top of the usual jet lag made the whole thing a bit of a nightmare)

  • I trashed a newish laptop when it fell out my backpack onto a stone marble floor

  • I had to pay excess baggage on video gear that I was then told I wasn't allowed to use at Microsoft's so-called 'most open' conference (despite having got permission from Channel 9's Jeff Sandquist beforehand - the problem wasn't down to him, but to over-zealous security and other Microsoft staff)

  • Too many of the sessions I attended were really, really dull or failed to match their descriptions, often given by people clearly not used to presenting. Given that sessions are all made available offline to non-attendees in video form anyway (and with video, at least you can fast forward if the talk's a disaster!) sessions are probably the LAST reason you should use to justify attendance, even if the sessons form the main thrust of the sales pitch for the event.

  • The conference was way too short, given the travel time, cost and distance involved, with too many 'after hour' events clashing with each other, and distanced too far apart, making it hard to hook up with all the folks I wanted to hook up with

  • I was 'between contracts' so paying expensive Las Vegas hotel rates for ridiculously lavish living areas in the conference hotel was a bit of a double-whammy on the cost front.

  • Unlike previous years there was no real SWAG to speak of, not even a concession stand. And I read all the announcements/downloaded the new software, just as non-attendees could, in my hotel room some hours before they were 'exclusively announced' at the conference keynotes.


On the plus side:

  • I made some great contacts

  • Despite being sick in bed at the height of the conference I had some fun times hanging out with contacts old and new on a couple of evenings and across sessions

  • A couple of the sessions I attended were really, really good and provided some much-needed 'lightbulb' moments

  • If I'd had an urgent, pressing question that needed answering and been prepared to be really pushy about it I'd have been able to ask it directly of the speaker/developer most likely responsible or able to give me an answer

  • I took an extra couple of days in Vegas and saw a couple of great shows

  • I got to witness, for the first time, the madness and joy that is Las Vegas (it really is 'the eighth wonder of the world' although more than a week there would drive any sensible person mad, I think!).

Overall then, not a great value-for-money event, even given the extenuating circumstances that cause the negatives to outnumber the positives. Admittedly much of the high cost (flights and hotels) is out of Microsoft's control and they came up with a generous 'early bird' discount offer this year, together with a '3 nights for the price of 2' hotel deal (which is unfortunately still MUCH higher than the neighbouring hotel is offering). I don't see Microsoft making a ton of money on the event, and they are probably taking quite a financial hit on holding it.


But it's my bottom line cost that's important, and given my MIX08 experience it's been with a somewhat jaundiced eye that I've been reading all the hype around the MIX10 event. Heck, some of the 'information' that's being pumped out about the event, and the way it's handled by 'community' is laugh-out-loud funny, or would be if there weren't so many people treating it solemnly as if it were fact!


A few days ago Scott Guthrie, VP of Microsoft's .NET division, sent out a tweet that MIX10 will be "very, very good" and the usual Microsoft shills and fan boys have all retweeted this a gazillion times, as if this were a piece of important news. Suddenly my Twitter feed is all noise, no signal! No disrespect to Scott - he's doing exactly what he should be doing, given his job, but why on earth is anybody other than a Microsoft employee whose job it is to promote this event retweeting this nonsense? The day I see a Microsoft employee tweet that this year's conference is "not going to be very good" or "won't be as good as last year's" I might start re-tweeting such marketing guff myself, but until then it has absolutely zero value, and filling up the Twitterverse with endless repeats of it is just plain idiotic and insulting to your followers who, if they are even remotely interested in .NET, will be following Scott already and not need to be re-told this amazing fact!


This time around MIX is offering a one day pre-conference workshop, available for an additional fee. If you believe the folks at Microsoft (in this video) this is going to be 'great value for money' and offer 'in-depth' training.


Errm ... no!


I attended just such a pre-conference workshop at a PDC event. USD300 may be great value for a day's hands-on TRAINING with a limited group of people but that's NOT what's being offered. If the PDC workshops are typical you're getting a day in a room with hundreds of other people, sat in passive mode while Powerpoint slides and Visual Studio demo-ware is shown to you. The one I attended at a PDC event was so bad I walked out after an hour as I could make better use of my time sat down with a laptop and some MSDN help files. What was offered was (not very good) marketing - not training, although admittedly I may have been unlucky in my selection of workshop, which ironically was given by a presenter who'd previously given one of the best 2 day 'guerilla course condensed' training events I'd ever attended.


And anybody who thinks that a half-day to cover Silverlight 4 is 'in depth' (even if the words 'boot camp' ARE tacked on the workshop description) is clearly taking crazy pills. It's an unfair claim - to both the attendees who are paying for this stuff, and the instructor who's going to have to try and live up to the hype.


My personal view is that most attendees don't care too much about this poor value-for-money stuff. They're not the ones paying after all, and it's a fun few days out of the office (in Vegas baby - woo hoo!) But for those paying their own way MIX is very expensive for what is essentially a Microsoft Marketing event.


So why the hell am I going?


Because Silverlight, since April last year, is now my full-time job, and MIX is traditionally a LOT (some folks say 'all') about Silverlight! That attracts all the Silverlight experts - and there aren't a lot of them around!


Good 'real world' Silverlight information is hard to come by because of the paucity of developers with real world experience around. Yes, we have a very strong user group in the UK, but the majority of attendees that I've spoken to are really 'playing' with the technology, or just starting to explore it to see if it might have some interest in the future, rather than using it in Enterprise Line of Business applications day-to-day. This is surprising, given that Ray Ozzie described it at PDC as 'Microsoft's premier UI' but when even a Silverlight MVP tells you that he's "only really done demo's with it - I'm not using it in my day job" it's clear that real world expertise is limited. MIX10 is a chance to talk to folks who've been writing real applications for some time now, and a chance to trade horror stories, workarounds and resulting success stories.


It's also a chance to say a personal 'thanks' to those in the Silverlight community who've given help and support in their own free time. Easily the best thing about Silverlight is not the technology, but the people - inside and outside Microsoft - who've freely given of their own time and knowledge in the form of crucial blog entries, tweets and email responses. I've a feeling I'm going to be buying quite a few folks beers!


And finally, I need a break from the daily grind. Downtime 'between contracts' doesn't really count here - especially if most of it is spent at a PC learning, working on personal projects or chasing potential clients for work. MIX10 in Las Vegas WILL be a break, and the folks running it do their best to make sure that everyone has a good time regardless of whether my own 'value for money' business assessment of the event jars with that.


So, with the need for a break and the fact that so many Silverlight folks I 'know' via Twitter and community are going, I decided I couldn't afford NOT to go, despite my overall negative MIX08 experience, and my cynicism over the 'passionate' hype that is used to over-sell events like this.


Earlier today, Microsoft evangelist Mike Taulty joked, whilst talking about an upcoming Silverlight User Group meeting that I'm really looking forward to, that I was setting my 'expectations too high'. That won't be true for MIX10. There is no shiny new release of Silverlight to announce - that was done early, just five months after the last version shipped - at Microsoft's PDC conference last November.


We've been told that there will be a lot about Mobile at MIX10, and many of us had expected Windows Mobile 7, based on some sort of Silverlight engine, to be announced. But rumours from last week's CES suggest that the hardware manufacturers are gossiping that nothing will be available for the public until February 2011. (There is an excellent analysis of the Windows Mobile 7 rumours and lack of any real information from Microsoft here).


So I've damped down my expectations, am in fact going in with very low expectations, and will hopefully have a good time as a result. If you're wise and you're going (paying your own way) I suggest you do the same and ignore all the hype nonsense. You'll then hopefully come away more than pleased with the experience.


Stay tuned, to see if my low expectations mean I have a much better experience this time round than I did last time!

Monday, 9 November 2009

When Visual Studio Insists on Starting Two Copies of Your Application

Some months back I had a nasty problem where every time I tried to run my Silverlight web application two copies of the browser would start up. The only way to stop this happening was to run the application in Release instead of Debug mode, which isn't really an acceptable solution when you're writing new code and need to step through it.


The problem started occurring just after I'd installed an extremely buggy Silverlight control suite from a 3rd party vendor (no names or I'll be accused of just wanting to 'pick a fight' or being 'uncivilised'! ;-)), so I put it down to the 'cost' of using these particular controls.


It turns out I was wrong (that'll teach me!). I didn't think any more about it since the problem finally went away when I repaved my PC with Windows 7, but a couple of days ago Microsoft's Jeff Handley hit the same problem and asked if anybody else had experienced it.


Earlier today he tweeted that it looks like the problem is caused by installing Windows Live Toolbar, and now that I come to think of it I DID install the toolbar around the same time I installed the 3rd party controls. And I didn't bother to reinstall the toolbar when I repaved my PC with Windows 7.


No doubt Jeff will be publishing some more details on his blog when he's dug a bit more into it, but I thought it worth posting about the issue here, because when I hit it Google certainly wasn't my friend. Good to get to the bottom of the issue, and hopefully there'll be a fix soon.

Saturday, 7 November 2009

3rd Party Vendor Controls (and why I've finally given up on Telerik)

Tweeting up a Storm


Those who follow me on Twitter will have seen me posting a lot of exasperated tweets about the quality of Telerik's Controls for Silverlight suite earlier this week, when the company released the latest version of their control suite (their third and final release for 2009) with lots of hooplah on their blogs, main web site and various employee Twitter feeds.


In some ways it was probably unfair to pick on Telerik, when other vendors seem to be even worse (especially when it comes to support), and an interesting Twitter debate on not just Telerik, but the whole area of vendor controls, followed. The unanimous concensus was 'Just stay away from third party vendor controls', which is a really depressing thing to have to report.


This blog entry was originally an indecently long rant about my experiences with ASP.NET controls from Infragistics and Silverlight controls from Telerik, concluding that neither had been anywhere near fit for purpose.


When a few people tweeted that they were in agreement and saying 3rd party vendor controls should be avoided, two received a response from an Infragistics employee calling them 'whiners', and saying the company had tens of thousands of satisfied customers. I resisted the temptation to ask if the employee had spoken to each and every one of them to prove they were 'satisfied' and to provide their contact information so I could check with them myself ;-)


But 'whining' doesn't achieve anything, and the original version of this post, which summarised a pile of problems with just the handful of the Telerik controls for Silverlight I'd looked at, was too detailed to be of any value to anyone other than make me feel better by venting.


It's time to move on and do what so many other developers have recommended I do. Ignore 3rd party controls (or at least the ASP.NET and Silverlight ones) and just write my own. It will result in a lot less stress, wasted time and frustration and much happier clients, even if initially it looks like too much time and effort to undertake.


In the meantime to anyone thinking 3rd party controls are fit for purpose I'd say spend just an hour looking at the demo code and the documentation the different vendors supply by looking at an evaluation version. Ideally try just a few basic customisations - you might be surprised at what you find (or don't find!) Also look at the vendor forums to see (a) how many people are actually using that vendor's controls (b) how many problems people are having. If a vendor doesn't allow access to the forums that purchasers use then you've got a pretty strong clue as to what customers are saying about the quality of what they've bought!


Peace!

Sunday, 27 September 2009

PRISM Documentation: The 'Missing' Table of Contents

For some reason (several actually!) PRISM is largely being ignored by many Silverlight developers. In my talk on PRISM (which I'm repeating at the next meeting of the Silverlight User Group this coming Tuesday - more information here) I talk about the documentation, and the fact that it seems to prejudice people against PRISM, when in fact it's an excellent resource. I talk about the fact there are two ways of looking at it.


PRISM Documentation - half full or half empty?

The 'glass half empty' crowd see how much documentation there is (assuming they can even find it - it's pretty much hidden in a totally inappropriate chm file format by default) and panics that there just isn't enough time to read and understand all this stuff when their Silverlight application needed writing yesterday, and dismiss PRISM as a result.


The 'glass half full' view usually discover the pdf version and realise they're getting a really good full-colour 300+ pdf electronic book with lots of useful advice and guidance for free. For more information on how to get the pdf version see the excellent Downloading and Building PRISM Guide from the folks at Sparkling Client.


One disappointment of the pdf version is that, unlike the traditional e-book, when printed out it doesn't contain a good table of contents. This makes treating it like a book, and finding a specific 'How to', or getting even a basic idea of what's covered in the 'book', is a bit of a nightmare.


I use the documentation a lot, so to avoid wasting time thumbing through my dog-eared copy when I want to look-up something specific, I've put together the 'missing' table of contents as a pdf, which you can download by clicking on the image below. I've taken the liberty of changing some of the "Composite Application Library' headings to instead read 'PRISM' as I think PRISM is pretty schizophrenic with regards to its identity (and think 'Composite Application Library' is too much of a meaningless mouthful). Let me know if I've missed anything!


Download PRISM Table of Contents..

Sunday, 20 September 2009

My SketchFlow Comments: Christian Schorman of the Blend Team Responds

On Friday I posted a quick report on my impressions of the Silverlight Firestarter event, which included my expressing surprise at what appeared to be a fundamental shift in the way SketchFlow was being promoted.


Christian Schormann from the Blend team sent a detailed response to those comments, which I am happy to reproduce below. Unfortunately it is not obvious from this blog that you can easily comment to a blog entry by clicking on the "0 comments" (hidden) hyperlink at the end of a given blog entry (blame Google for the UX, me for the fact I haven't customised things from the basic templates they provide!), which is why I received the email rather than a comment directly on the blog itself.


In any event I think it makes more sense to post this response as a separate blog entry, rather than as a somewhat hidden comment to the original blog entry


"Hi Ian,

I wanted to respond to a few questions regarding SketchFlow you brought up on your blog. I am part of the Expression Blend team, where I am responsible for product design and strategy.


You write:

"One thing that did alarm me somewhat, was the seeming step-back by Microsoft from the whole 'Sketch your application and then make it real - don't throw all that hard work prototyping away' story. Suddenly the story was that we should be re-using assets used in SketchFlow applications and not turning 'sketch' controls into 'real' controls as documented in the Blend 'Help' feature. Given that most of these assets are produced in Adobe Photoshop and other tools outside of Blend it kind of begged the question 'So the real advantage of SketchFlow over Balsamiq is...what exactly?'."


Let me comment on the last point first.

Balsamiq creates static mockups of UI. It does so very fast and with minimal learning effort.


SketchFlow is meant to make it more cost effective to create, explore, evolve and communicate deep dynamic prototypes. In SketchFlow, designers can model high-level flow and composition (from a product design perspective) of a user experience. They can use animation to illustrate their design intent. They can model and experiment with states and state transitions. Using sample data and behaviors, they can create compelling prototypes of serious interactivity. With the SketchFlow player and feedback tools, other stakeholders in the process can evaluate prototypes effectively. SketchFlow thus has a very different goal than Balsamiq. SketchFlow certainly can be used to simply create static mockups, but it is much more special for prototyping dynamic interactivity.


We believe that both mockups and dynamic prototypes have their place in the design process – they are complementary. They are often not created by the same people, and they are usually artifacts of different stages in the design process.


Regarding prototype re-use, I don’t think our story has ever changed. We believe that the whole point of a prototyping process is to quickly generate and explore a multitude of ideas. Often, it is a good idea to not over-invest in such explorative prototypes, and to avoid getting attached to any given prototype: the longer one stays with a given idea, the harder it is to discard it when it fails. Introducing architectural or production constraints into the prototyping process too early risks reducing the productivity and effectiveness of prototyping. Also see Bill Buxton’s book on Sketching User Experiences for more on this argument.


Our general advice therefore is that in strict idea generation / verification scenarios, it is often better to not plan on re-using a prototype as the blue pause for an application. This is not an advice based on technical criteria or limitations of tool or platform, just a recommendation from a design process perspective.


However, we also recognize that SketchFlow is used in scenarios that are more RAD-style development than prototyping. Also, there are applications where the structure of a prototype naturally is similar enough for re-use in production. Because we know that there are certainly valuable cases for re-using prototypes as part of a production-oriented scenario, we enable conversion of prototypes into navigation applications. The process is currently not automatic, but it is feasible and documented in the manual.


In summary, our message is that if you want to prototype efficiently, we recommend that you focus on the design problem at hand, rather than trying to build architecture (or even think about architectural concerns) as part of the prototyping process. However, this decision is of course entirely up to you.


Should you, at the end of the design process, decide that either the prototype as a whole or individual assets are useful in production, we enable this re-use. It is a decision in the hands of a designer, based on the goals and complexity factors of the prototyping work actually undertaken. The tool enables re-use of projects and assets, but we believe it is not always a wise choice to expect to do so.


You also comment that most assets are created in Photoshop et al. There is of course no doubt about the prominence of Photoshop et al, but in many cases these assets undergo significant pre-processing . Visuals often need to be packaged into control templates, equipped with transitions, animations and behaviors, before they can be used efficiently. And there are many assets (for example UserControls or resource dictionaries) that are even more entirely “native”. In this sense we see a lot of asset re-use that would not easily be possible with pure artwork.


Finally, you write regarding a conversion problem with the metrics of the SketchControls. I will look into this – I have not heard about this so far. In practice, we have not heard that from many users, but then again, many SketchFlow users do not spend much time getting their layout to be very precise – SketchStyles are generally meant (and used) in the first place to convey the notion that the visual design (and the exact layout, as part of it) is just a sketch, and precision of layout is somewhat antithetical to this. That said, I still agree that the metrics should match, so I will look into the issue.


Christian Schorman"

Friday, 18 September 2009

Silverlight Firestarter and a few other bits and pieces

This is going to be a very hasty blog post because it's being written in my lunch hour. Why? Because I desperately need a break from trying to convert a complex Silverlight 'storyboard' application to use a separately developed .NET RIA Services prototype application whilst also introducing the use of PRISM modules and regions usng MVVM inside the Silverlight 3 navigation framework using .NET RIA Services!


And there in that opening paragraph you perhaps have a clue as to why folks aren't rushing to jump on board the 'Silverlight in the Enterprise' bandwagon, and didn't seem to be rushing into this 'Silverlight Firestarter' event the way you'd expect given the very high profile speaker list (at least if the lack of much real activity on the pre-advertised Twitter #slfs stream was anything to go by).


Microsoft's 'silo' approach to Silverlight architectural guidance/marketing/development really doesn't help and I haven't even added MEF into the mix yet. This, and the whole Microsoft 'La! La! La! Can't hear you!' approach whenever someone mentions the 'Blend' or 'Sketchflow' words and how all this 'architectural' stuff is intended to fit together will no doubt be the subject of a future rant - sorry I mean 'blog entry' ;-)


So (see how I'm trying to embrace the whole Microsoft employee thing there!) Silverlight Firestarter was Microsoft's annual day-long event featuring all the big Silverlight rock stars (Scott Guthrie, Tim Heuer, Brad Abrams, Adam Kinney) and held at Microsoft HQ in Redmond. This year it was streamed live to us mere mortals outside Redmond between around 5pm and 1am this morning.


After an initial experience that looked like this was going to be another over-hyped seethelight.com fiasco all over again (no international users could access the live stream because someone had hard-coded an assumption that we were all running Windows in US date format mode into the Silverlight streaming application!) - things went very smoothly and the quality of the video and audio of the speakers, if not the blurry, pretty indecipherable code walkthroughs and laptop screen captures, were excellent :-) As was the support on the #slfs Twitter stream. The folks behind this event have every right to pat themselves on the back for an excellent inaugral event and I'm sure future events will be even better!


If you were wanting a whole day of 'overview' material of the various Silverlight bits and pieces including Blend and .NET RIA Services the speakers all did great jobs and the download videos, planned to be available in a week's time here are 'must see's and will be a great way of getting 'the big picture' around a lot of this new stuff.


The event was, in many ways, much like the excellent WPF Training course recently held at Heathrow: Touted as an 'introductory' course, the event was swamped (these words are all relative!) with those of us who regard ourselves as well beyond the introductory level these things are aimed at, attracted by the high-profile speakers in the hope that some as-yet-unrevealed gems will emerge from the paucity of information that's available to help us with our 'real world' problems, or at least give us an opportunity to get long-simmering issues and questions answered. As a result, if the associated Twitter stream is any indication, the event was really very much a case of 'preaching to the converted' rather than one bringing new folks on board, which is nobody's fault, but somewhat disappointing if, as some of us believe, Silverlight is going to take over the world at some point!


On the plus side, the Twitter stream was pretty lively (with comments, if not number of different people) and fun. On the downside the event itself was, for the most part, pretty much the same old canned 'not real world' demo's most of us have seen several times now, albeit slickly presented and delivered.


New information was almost non-existent, despite promises that it would be casually added in (the old 'Oh! I ran out of time!' excuse is getting so lame now :-P) and the Q&A session was, for me, a huge disappointment because instead of addressing the (admittedly more complex) issues some of us were trying to raise we got stuff like 'How do I become a Silverlight MVP?', 'How do I get to talk on the main stage at MIX?' or 'Ask the MVP lead who her favourite Silverlight MVP is'? (no! really!). Honestly I expect this sort of 'Me! Me! Me!' nonsense at mainstream fan events like Comic Con, but not at a technical developer event. We have truly entered a world where 'the cult of celebrity' is taking over everything - even our everyday developer work lives :-(


So, for the record, here are the main bullet point items I 'learnt' during the long 8 hour event:



  • Scott Guthrie (VP, .NET Development Division) claimed Microsoft are "on track to having Silverlight installed on 50% of all machines within the next couple of months". Others are already treating this remark with some cynicism and demanding to know the source of the data Microsoft keeps touting, as for me ... well everyone knows how cynical I am! I'd like to believe it's really true, but...

  • Brad Abrams promoted (and Karl Schifflet gave us an excellent overview of) New XAML PowerTools for Visual Studio 2008 with Silverlight and RIA Services support which will be made available this Sunday. Karl heads up the “Cider” (XAML Visual Designer) team.

  • The Silverlight Toolkit (containing open source Silverlight controls) now has a shiny demo site for all controls complete with "View XAML" and "View code" functionality.

  • .NET RIA Services RTM ship date is still "early next year" but Microsoft are not prepared to commit to any firmer date than that at this stage.


One thing that did alarm me somewhat, was the seeming step-back by Microsoft from the whole 'Sketch your application and then make it real - don't throw all that hard work prototyping away' story. Suddenly the story was that we should be re-using assets used in SketchFlow applications and not turning 'sketch' controls into 'real' controls as documented in the Blend 'Help' feature. Given that most of these assets are produced in Adobe Photoshop and other tools outside of Blend it kind of begged the question 'So the real advantage of SketchFlow over Balsamiq is...what exactly?'.


In truth for Enterprise apps I don't see reusing SketchFlow as an option anyway (no MVVM, PRISM, .NET RIA and all that other stuff that's really likely to be needed) but it seemed odd for Microsoft to so publicly step away from what had been the initial message, and one that is very easy to sell and promote as unique. Since I tweeted about this I've had a response to the effect that this was just a sensible bit of guidance based around concentrating on the real benefits of wireframe prototyping ("We enable conversion but caution that having reuse in mind might cause you to lose the quick & dirty mindset"), but even so...


Interestingly one of the questions asked on the Twitter stream that didn't get asked (for very obvious reasons - there goes my cynicism again!) was why the 'sketch' styles were different from 'real' styles to the extent that if you DID do the conversion of a Sketchflow application from using 'sketch' styles to 'real' ones your hard-fought work in layout would get totally screwed! Eeek! Who knew?! I suspect Microsoft aren't being totally honest with us in this rush to over-sell SketchFlow as the panacea to all designer problems (which gets them to actually use Blend instead of ruddy 'Always used it. Not budging!' DreamWeaver). I need to find time to investigate how serious a problem this reported 'change of layout' problem is!


Outside of the event itself, several other bits of interesting news occurred. Most exciting was the news that John Papa has joined Microsoft. Almost single-handedly John's blog has been trying to make sense of how the hell anybody's supposed to build a Silverlight application that uses MVVM and PRISM and works with Blend too - so his move to Microsoft will hopefully help resolve the paucity of any real official information around this whole problematic area.


And just after the event First Floor Software announced they had documentation for their 'must have' Silverlight Spy 3 tool. You can download it here and it will be automatically included in an updated release of the installation msi coming soon. To put it bluntly, if you don't have this tool then I don't think you have the right to refer to yourself as a Silverlight developer :-P


Apologies for the lack of links to people and blogs in this post: lunchtime has been slightly longer than intended and I need to get back to my PRISM/SL3 Navigation/.NET RIA Services integration exercise!