TechDays 2009: ‘Building Modular Applications using Silverlight and WPF’ Follow-up
I’ve just finished delivering the “Building Modular Applications using Silverlight and WPF” session at Microsoft Canada’s TechDays 2009 event in Toronto.
What a difference a year makes! At last year’s TechDays, my presentation was all: “Silverlight is new and awesome! Let’s lap around some awesome Silverlight features!”
But this year, as Silverlight and WPF have gained some maturity, many of us are now working on more complex projects enabled by these frameworks.
So this year’s theme, appropriately, was designing for change. It was about taming complexity in real-world Silverlight and WPF apps with patterns, conventions, examples, and a little glue code.
What we covered
After a brief primer on the MVVM pattern, the core of the presentation was a lap around Prism, a.k.a. the Composite Application Guidance for Silverlight and WPF released by Microsoft’s Patterns and Practices group.
We looked at the structure provided by Prism’s Shell and Bootstrapper, demystified Dependency Injection (over breakfast), and then explored the Region Manager, Modules, the Event Aggregator, and Commanding.
Taming Complexity and Designing for Change
Complexity in the software development lifecycle comes in many forms, including but not limited to:
- integrating multiple disparate sources of data,
- dealing with changing requirements,
- managing features delivered by distributed dev teams,
- creating complex interactive views,
- rapidly skilling up new resources on a project,
- cleanly separating concerns for different roles (like designer and developer), and…
- well, I could go on.
It seems to me like a good way to tame complexities like these is to design for change. Prism helps you do this. So does MVVM.
I’ve worked with WPF since it was called Avalon, but only recently started using Prism.
When I go back now and look at my pre-Prism code, it looks fine in parts, but organizationally, it reeks of uninformed, trainwreck stuff. If I could speak to Rob vPrevious, I would insist that he take the time to learn Prism.
Do your time in Prism
So my call to action for all serious WPF and Silverlight devs is:
- Do your time in Prism. Invest the time to get the Prism framework, software and documentation from Codeplex and read the lucid documentation on MSDN.
- Don’t be intimidated (like I was) by terms like Dependency Injection Container and Inversion of Control.
- Check out Prism’s Stock Trader Reference Implementation, and
- Even if you don’t decide to use Prism on your project, think about conventions, and patterns, and how your code will respond to change.
Finally – if you are a Silverlight or WPF developer, and are looking for a place to work on interesting projects on a scale that demands you plan for change, please contact me.
For those of you who came out today, thanks for the engaging conversations afterwards, and I hope you found the presentation a helpful primer on Prism. May it help you get up the learning curve and start using the P&P guidance in your own applications!
Please write me with your own Prism thoughts and stories.
This year, the theme was designing for change. It was about taming complexity with patterns, conventions, examples, and glue code.
it was a deeper Senior Dev / Architect level discussion that discussed the MVVM pattern and Prism, the Composite Application Guidance for Silverlight and WPF.
Four Perspectives on Delivering ‘Return on Experience’ Follow-up Notes
And now, as promised, the link-laced follow-up to this week’s “Four Perspectives on delivering ‘Return on Experience.’”
Our UX Gurus on the panel were:
- Susan Greenfield, a Senior UX Designer at Infusion
- Ernie Taylor, a Project Manager at Infusion
- Bill Baldasti, the VP of Canadian Accounts for Infusion
- Daniel Cox, an Interactive Designer at Frozen North Productions
and in addition to their insights on Wednesday night, they’ve kindly helped me compile these links.
(If you want to contact any member of the panel, they’re first-initial last-name at infusion.com, or ping me.)
The panel began by reflecting on the masochistic teapot made famous by Donald Norman on the cover of his book The Psychology of Everyday Things, to remind us that in the software industry, what we create for our clients often becomes an everyday thing.
Are we making things that are functional but masochistic like this teapot?
- You can visit Donald Norman’s site and read The Psychology of Everyday Things.
- I also enjoyed his more recent Emotional Design.
The panel then weighed in on Deborah Adler’s redesign of the Target Rx medicine bottles, which was bravely showcased by Microsoft as a UX case study from another industry during the second day keynote at Mix09.
It was a story arc that highlighted the many elements of ‘return on experience’ – everything from safety and customer satisfaction, through brand awareness and driving revenue.
- You can see the MIX09 keynote here.
- Read more about the Target Rx bottle redesign here.
- My initial thoughts on the MIX09 keynote (with more links) are here.
Then we reflected on the co-existence of the Development and Design lifecycles. There were varying opinions on where each person on the panel feels squeezed for time and resources in the cycle.
Ernie’s more thorough PM’s Gantt chart (very much not shown here) was a sobering dose of reality. We considered techniques for determining the point at which the value to the client diminishes when you add more time and resources.
I did a Sketchflow demo. We created an interactive prototype. It had the “right level of fidelity” and the panel remarked that the “sketchy” look helps manage client expectations.
At a high level – there was love. Sketchflow should change our software development lifecycle.
But some easy things were hard. We integrated sample data (and Susan quite fairly called me on it when I talked about a designer “databinding” to “sample data.” (If Blend wants databinding to be [the designer's] job then the designer says “but it’s not my job!”). We looked at editing a data template (for a Listbox full of items) and everyone agreed this experience was currently way too hard without grokking a number of Blend and XAML-specific concepts.
Especially valuable is Sketchflow’s ability to solicit feedback from clients with standalone prototypes. Ernie remarked that it was when he saw Sketchflow run “live” as a standalone prototype that he saw how valuable it could be. Integrated client feedback was a big win. We also saw how it can generate Word doc summaries, and all eyes lit up.
We remarked on its incredible potential, which it’s not quite living up to just yet. Earlier on in the presentation, we’d hit upon this theme that a good user experience should never make the user “feel stupid” – but for new users Sketchflow can unfortunately make some of its target audience feel stupid.
For a v1, though – wow – we all saw the value, and deeply, desperately want it to be awesome. Ernie said he’d go back to his team the next day and tell them to start using it.
- Download Blend3+Sketchflow trial here.
- These are the most thorough Sketchflow tutorials I’ve watched.
- If you have less time, watch Qixing’s Sketchflow mini-tutorials.
- In case you don’t know, Sketchflow channels the ideas of Bill Buxton from Microsoft Research.
- Specifically, it channels the ideas in his book, Sketching User Experiences.
After the break, we talked about roles and expectations. Given the changing tools and processes, we wondered what should be expected of different roles.
We noted how “designer” is a “suitcase word” that carries many different meanings. Susan saw all these “people” in the Venn Diagram and just wanted it to be clear that in real life, it’s often all a single, multi-faceted “person.”
- The diagram is from Robby Ingebretsen’s incredible Design Fundamentals for Developers presentation, which is highly-recommended perspective-broadening stuff.
Most of the panel are, or have been, involved in Infusion’s Surface projects, so we took a moment to talk about design and user experience as they relate to that platform.
Susan remarked that Surface development demands UX design skills “to the extreme.”
The Surface design challenges include: attracting the attention of casual users, encouraging users to overcome the novelty of simultaneous multi-user interaction, and embracing the lack of an “up” direction. It’s “hyper-real,” and there is a need to consider the affordances of design elements used on this multi-user touch-table application.
- Joe Fletcher’s MIX09 Surface Session considered the nuances of Surface UX design
- Infusion makes Surface apps.
- FalconEye is a cool Surface app and there are videos of FalconEye and other Infusion surface apps here.
We had Dan Wilcox from the games industry, so we also asked him what we can learn from the gaming world if we’re trying to build line-of-business apps instead.
Dan agreed that a significant challenge is showing users what they can interact with, and how. That “affordances” thing again. He talked about how the games industry has improved in its ability to guide people through 3D landscapes, and perhaps similar cues could influence navigation through user interfaces. He gave examples of where games are blurring the boundaries between user interface and game world.
- Frozen North Productions is working on the Wii title Flip’s Twisted World.
- Affordance Theory is per Gibson,
- and you should check out Don Norman’s book too (see above re: the teapot),
- as well as the Henry Dreyfuss classic Designing for People.
Then we talked about the future, because that’s always fun.
But the twist here was: what kind of UX considerations will come into play as we design for new kinds of interactivity?
We ran out of time because we wanted to run down the street to see the Surface app before Rogers closed, but now you have time to explore, and add your own thoughts below…
- This MIT Media Lab Augmented Reality system projects context-sensitive information, and employs gesture, image recognition and tagging.
- The Nearest Tube on the iPhone is a great augmented reality app.
- Layar is an Augmented Reality browser.
- Project Natal’s use of the whole body to interact examines scenarios focused around the living room (and Johnny Lee is on board)
- What will be the UX of E-paper – will every surface be a Surface?
- How do we design for interfaces with no touch, only nearness?
Four Perspectives on Delivering ‘Return on Experience’
I’m looking forward to the conversation at this Metro Toronto .NET Users Group meeting:
Four Perspectives on Delivering
‘Return on Experience’
We’ve heard a lot recently, from Microsoft and others, about the importance of user experience (UX) and delivering ‘return on experience’ to clients. Tools like Sketchflow for prototyping, Expression Blend for visual design, and frameworks like Silverlight and WPF, are designed to change the way we deliver software projects that incorporate rich and intuitive user experiences.
The reality, of course, is that there are many stakeholders with different perspectives on this process. This evening, let’s talk about how things really work during project delivery “in the wild.”
We’ll discuss the process of enhancing user experience from four perspectives: a designer, a developer team lead, a client, and an account manager. (not personas, but thoughts from real people who have performed or are performing these roles). Their perspectives will begin a conversation about the tools and processes, challenges and rewards of delivering ‘return on experience.’
(September 16th, Manulife at 200 Bloor East, Toronto, 6:00PM)
[Update, 17 Sept - I really enjoyed last night - and a huge thanks to all 4 members of the panel (Susan Greenfield, Ernie Taylor, Daniel Cox, Bill Baldasti) and everyone who came out. I will post slides and follow-up either later today or early tomorrow!]
Continue ReadingDesigners with Expression Blend skills are in demand

Capilano Suspension: Bridging worlds, simple elegance
I spoke with a headhunter last week who is looking for designers who have experience using Expression Blend to enhance the usability of line-of-business applications.
The demand for designers who have worked on Silverlight or WPF projects currently exceeds supply.
The adoption of those two “XAML-based” technologies has been accompanied by a growing community of developers that have adopted the new frameworks, often “wearing the designer hat” to get the job done.
But a designer who understands how to craft solid XAML markup using Blend’s visual toolset thinks differently from either a developer, or from a designer whose thinking is not informed by the basics of Silverlight and WPF.
Designers needn’t give up their existing tools, but to optimally contribute to a Silverlight or WPF project, their thought process should be informed by these technology frameworks, both when working with their existing tools and with Blend.
Yes, we’ve all heard of these highly coveted “dev-igners,” who bridge the dev and design worlds with the simple elegance of the Capilano Suspension Bridge, but these are unicorn-esque in rarity.
So the good news is – if you’re a designer who does know Expression Blend, I know people who are looking for your skills!
[p.s. shameless plug - Empowering designers to wield Blend like a paintbrush (in ways that I can't) has become one of the greatest joys of my work. If you're a designer (or know a designer) interested in mastering Blend, and learning the basics of Silverlight/WPF in the process, send me mail through the blog. Maybe you'd be interested in a crash course.]
Continue Reading









