Microsoft Patterns & Practices Summit 2007 - Day 5

GeekSpeak comments edit

The topic of Day 5: Applications.

Keynote - Scott Hanselman

Yes, you’re reading that right - Hanselman keynoted two days in a row.  This time the presentation tended toward the humorous and sort of tied things in with a message to the community that was basically the end of Bill and Ted’s Excellent Adventure:  “Be excellent to each other… and party on, dudes!”  You know, in so many words.

There was a snap-on demo of some more MVC, but generally that was it.  I like Scott - he’s a friend - and I thought the presentation was hilarious, but I had a little difficulty tying it in to “patterns and practices” or to the theme of the day - “Applications.”  That said, if he posts the video of the presentation to his blog, watch it.  It’s a crack-up.

Future of Patterns and Practices - Rick Maguire

Maguire discussed the challenges that the patterns and practices team faces and talked about where things are headed.  Challenges they see are things like technology changes (so many changes so quickly), increasing complexity of software, and compliance with standards and regulatory issues.

What the future boils down to: They’ve focused previously on tools.  They’re switching focus to developer centers and documentation - helping people find which tools will help them get the job done.

Evolving Client Architecture - Billy Hollis

Hollis discussed some of the recent changes in client technology - specifically around WPF and Silverlight.  He gives the impression that WPF is the Way and the Light.  I think it’s interesting stuff, but somehow I don’t think it’s the End All Be All.  At least, not yet.

The basic idea, though, was that it’s a good thing if you’re looking at XAML.  It’s got a good programming model and will allow you to get some of the reuse that you weren’t previously able to achieve before.  (But it’ll be better when Silverlight 1.1 is done.)

Introduction to the Microsoft Client Continuum - Kathy Kam

This was almost a continuation of the talk Hollis gave, talking about the variety of clients you can target with .NET technologies.  The discussion here was more on the variation between having wide reach with your app - standard HTML via ASP.NET - and having a rich experience - using WPF in a native app.

The interesting thing here was an illustration of how you can reuse components across some of these.  For example, say you have a straight HTML app.  Not rich, but very client-accessible.  In a basic Silverlight app, you can take the same HTML app you had and add richer interactivity in select portions of the app (like replacing an image with a XAML content block).  In your native app, you can take the XAML that you used in the Silverlight/HTML app and use it in your WPF app.  Very cool.

The technologies she reviewed, on the scale of “reach” to “rich”:

  • ASP.NET 2.0
  • ASP.NET 3.5
  • Silverlight 1.0
  • Silverlight 1.1
  • WPF 3.0
  • WPF 3.5

Fresh Cracked CAB - Ward Bell

This was one of the talks that I think I can take back and immediately start using some of the ideas from.  Bell showed how he uses the Composite UI Application Block to better architect applications.  (There’s a Composite Web Application Block as part of the Web Client Software Factory… but I don’t know how applicable this was.  Still, this was an interesting thing.)

There was some explanation about how the CAB works, which was good, but it got really good when he started talking about some of the patterns used.  Of particular interest was a slight addition he made to the MVP pattern - MicroViewControllers (yeah, it’s “MVC,” but not in the sense we normally think about “MVC”).

Think about this - how many times do you basically have what amounts to generated code where you…

  • Data bind model information to controls?
  • Set error provider information?
  • Set control visibility/editability?
  • Format data in the view?
  • Localize control text?

All that just fattens up the interfaces and makes code cumbersome.  The idea of the MicroViewController is that it’s a facade over all of these things - a single object shared between the view and the presenter to handle all of that.

Think code like: cvc.AddDescriptor(ageTextBox, properties.Age).WithLabel(ageLabel).WithEditability(Editability.ReadOnly);

Very cool stuff.

Wrap-Up - Billy Hollis

A fantastic and entertaining rant from Hollis about how, frankly, there’s just too much out there to learn.  You’ll never know everything you need to know, especially with the changes coming at us fast and furious.  And it’s not just technology - it’s even IDE features.  Which just goes to show we can’t solve this problem with more features - that just adds to the complexity.

And we have no one to blame but ourselves.

The question now is - how do we fix it?  Maybe some ideas here…

The Simplicity Manifesto v1.0 (per Billy Hollis):

  • Stop adding features.
  • Make help helpful.
  • Fix the bugs.
  • CRUD for free.
  • Hide the plumbing.
  • Get better names.