Sunday, September 5, 2010

DevForce and RIA Services Compared Part 1: Getting Started

Sorry folks. I've temporarily pulled my series of articles comparing WCF RIA Services with IdeaBlade's DevForce while I reconsider the approach. It will be back in another form.


      Saturday, September 4, 2010

      Billy sez: Design, Don’t Decorate

      Billy Hollis writes about application UI design in this month’s DevProConnections and how that is not the same as hanging new draperies with WPF and Silverlight.

      Here’s what I want you to do:

      1. Go read the article
      2. Look at the associated video
      3. Go to his website
      4. Find yourself a class

      The rest of this post is commentary.

      Most of us (include me among the “us”) are stuck in a rut. We’re bringing to our Silverlight apps the same tired user interactions that we built for WinForms or the Web.

      I’ll make my point with a rant about the Editable Grid.

      I am sick of the Editable Grid. It won’t die. It pops up in one UI after another.

      It’s not that I’m bored with it. I’m not suffering from ennui. I’m not making a fashion statement.

      It’s just bad. It screams “I don’t know what the user wants, I don’t care what the user wants, I’ll just chuck every thing on the screen and let him figure it out.

      The user, poor bastard, must scroll through endless columns until he stumbles on the one he wants. Every cell of every row is in the same font size and shade; he can’t visually distinguish the critical values from the who-really-cares values. Want to tame the scrolling? let’s shrink the font and get more columns on the screen.

      It’s a nightmare to program properly with unlimited opportunities to screw up and confuse the user at the same time.

      Ah … but it’s so easy to get started, right? A line or two and you’re done. Now you can get back to wondering when the Reactive Framework will be part of the BCL.

      The 3rd party control vendors know you want this atrocity and to differentiate their grids from Microsoft’s DataGrid they trick ‘em out with ever more confusing options (filters, sorters, groupers, frozen columns, tear-aways, column-configuration-savers, etc.).

      All so you can tip-toe past the courageous, hard work of demanding to know what the user really needs. Nah … just do the cowardly thing, give him every lever and dial imaginable, and tell him to figure it out for himself. Why think, Einstein, when you can make the user do it for you … and perfume the stench by saying “I gave him choices".

      Guess what control I use in 9 out of 10 demos? Yup, the editable grid.

      I am as bad as you guys.

      Like you, I’ve been happy as a clam, pasting a grid on page after page. The guy who woke me up … was Billy Hollis.

      Billy is here to remind us it doesn’t have to be that way. Silverlight and WPF have technically removed the barriers to efficiently writing productive user experiences.

      The problem isn’t the technology. It’s us. We are the problem. We aren’t clearing the cobwebs. We’re behaving like we did at the dawn of GUI interfaces … wondering how to port keystroke menus onto a window.

      Hey … the “Outlook” standard should be dead. It would be dead … if we didn’t grant it new zombie life in WPF.

      Billy is ready to show us how to move on.

      Did you know Billy offers WPF and Silverlight design training?

      Not “Insert-Tab-A-into-Slot-B” training. I mean training your mind and your skills to get out of the rut. Sure you’ll learn WPF/Silverlight – duh. And I’m not knocking that kind of training either; it’s valuable too.

      What I really need is some help seeing UI differently and, most important, acquiring a discovery process to help me develop a UI that supports my user. Maybe … just maybe … I’ll finally learn to build a UI that is thoughtful and usable … and not waste weeks agonizing over my failures.

      It’s up to you. I recommend you hustle over to Billy’s website and see if you can find a way to take one of his classes. That’s what I’m going to do … if they ever let me out of here.

      p.s.: I’m still doing editable grids in my demos. You can lead a horse to water …

      Is Mvvm Light Right For You?

      I wrote in “DevForce Meets Mvvm Light” about how easy it is to use these products together on the same application.

      Is “Mvvm Light” the way to go?

      There is no right way to go. You have choices. There is Prism to consider. I’m a big Caliburn.Micro fan too.

      But those may be a bit daunting for folks just starting down the MVVM road and perhaps you don’t need their sophistication for your application … yet.

      I recently asked Laurent to give me the name of an Mvvm Light expert to help me build an example. That was before I downloaded the product. One look and I had a healthy laugh at myself. You don’t need no stinking expert to use this “framework”. It’s pretty darned obvious.

      It really lives up to its “Light” name. It is truly almost instantly accessible. To be honest, many of the applications our customers build would need more infrastructure than you’ll find in Mvvm Light. He made some choices that are too lightweight for these apps.

      But … and there is always a but … I sense this is a great way to get into the water and it will float you a nice distance before you decide you need something richer (and more obtuse).

      Maybe you’ll never need “more”. I’ll bet that, even if you do, you’ll be able to merge or port your Mvvm Light work straight into whatever framework you ultimately adopt.

      I’ll admit it; I’m a geeky guy with a weakness for unnecessary complexity. The angel on my shoulder says “cut your audience some slack and introduce them to Mvvm Light.”  The devil on my shoulder says “come on … they’re going to need the heavy machinery and you make your living showing off … this Mvvm Light stuff won’t burnish your reputation for arrogant sophistication!”

      Today, I’m listening to the angel. I think. Sometimes I can’t tell which is which. Whatever.

      Here’s some recent praise from other high-profile luminaries who favor Mvvm Light.

      =============================
      From: Billy Hollis
      Sent: Friday, September 03, 2010 7:40 AM
      To: 'Ward Bell'
      … 
      I prefer an approach of starting simpler and building just the complexity needed instead of starting complex and just putting up with all the complexity. I consider MVVM Light, for example, to be a better starting point for the majority of teams.

      =============================

      Jonathan Goodyear’s editorial in DevProConnections Magazine, August 2010

      We reviewed several frameworks, among them Microsoft’s Prism and Caliburn. … we felt strongly … that the framework … should have as few moving parts as possible. Our team has a couple of designers on board, so compatibility with Expression Blend (or “blendability”) was important as well.  I think that we found a near perfect match in MVVM Light.

      DevForce Meets Mvvm Light

      Model-View-ViewModel (MVVM) is THE most successful UI development paradigm ever …  measured by the number and variety of people talking about it. I don’t recall anything like this level of interest with respect to MVP or MVC. For most of UI history the majority of developers couldn’t name the pattern they were using … if they even thought they had a pattern. “MVC”, for most people, is a technology, not a design pattern.

      Today, MVVM is the jargon-du-jour. And I think that’s a good thing.

      We should retain some perspective. Not every view must be MVVM. And yet a healthy number of WPF/Silverlight screens should be done in MVVM style and I’d want to have a really good reason to depart from that standard.

      How do you write a screen in MVVM style? Do you need a framework?

      Some people think you do. There are plenty to choose from. And Laurent Bugnion’s “MVVM Light” has to be the most popular of the ulta-lightweight choices.

      One of our customers asked for an example of DevForce and Mvvm Light working together. I put such an example together and made it available on the “DevForce Resource Center” (DRC); the Mvvm Light example page is here.

      I provide code that shows three ways to start a DevForce + Mvvm Light application and one “Hello World” example.

      Blend is a critical part of the story. “Blendability” is central to the Mvvm Light philosophy … and I agree. The working example view was written entirely in Blend.

      Expect more from me soon on developing with Blend.

      Meanwhile, here’s your launch point for Mvvm Light with DevForce.

      Enjoy!