Herding Code Herding Code
Herding Code 104: Rob Eisenberg on Caliburn Micro

You remember Rob Eisenberg from Herding Code Show #57 when he talked presentation patterns along with Jeremy Miller, Ward Bell and Glenn Block. Well, in this episode of Herding Code, the conversation continues as Rob talks with the guys about Caliburn.Micro, an opinionated MVVM framework for WPF, Silverlight and WP7.

  • Kevin kicks off this week’s show asking Rob to tell us about Caliburn.Micro – his opinionated MVVM framework for WPF, Silverlight and WP7. Rob talks about how actions, support for conventions, and presentation roles are implemented in his opinionated MVVM framework.
  • Rob explains how about Caliburn – his earlier framework built for WPF – has contributed its most important features to the easier-to-use, lighter Caliburn Micro.
  • Jon brings up extensibility and inquires about how one overrides functionality in Cabiburn Micro.
  • Kevin and Rob talk about view resolution and the difference between ViewModel-First and View-First development which are both offered in Caliburn Micro.
  • Kevin asks designer integration and the “blendability” of Caliburn Micro.
  • Rob explains the convention-based approach Caliburn Micro takes toward bindings and actions and the guys speak to the importance of diagnostic mechanisms when your coding is based on magic of convention.
  • Kevin asks if that were places where the WPF/Silverlight/WP7 frameworks limited what Caliburn Micro could implement due to lack of extensibility points.
  • Rob dives into IResult and Coroutines and how one can write asynchronous calls in a synchronous a manner with Caliburn Micro. Rob then answers how coroutines compare to the implementation coming in C# 5?
  • Kevin asks about window management screen conductor and roles.
  • The guys discuss their experience working with Silverlight and WPF.
  • Jon asks about community contributions to Caliburn Micro and brings up the social aspect of open source and Mercurial projects in particular.
  • The show gets its first question from the hotline from Rick who asks, “What does Caliburn do that MVVM Light Toolkit does not do?”
  • Rob touches upon the Pub/Sub and window management features offered in Caliburn Micro and also talks about IoC friendliness.
  • The guys talk about Rob’s elegant yet unorthodox approach to the service location in Caliburn Micro.
  • Rob offers a quick preview of what’s to come next in Caliburn Micro.
  • Rob notes that he’s submitted a talk for Mix11: “Build Your Own MVVM Framework with Html and JavaScript”
  • The guys discuss Knockout JS and its influence on Caliburn Micro.
  • The show wraps with Kevin (in Scott K’s absence) asking THE question: “Is Silverlight dead?” Tune in and find out the answer to that one…

    Show Links:

    Show notes compiled by Ben Griswold. Thanks!

    Download / Listen:

    Herding Code 104: Rob Eisenberg on Caliburn Micro

    Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

    Bookmark and Share

    arrow6 Responses

    1. Michael
      44 mos, 1 wk ago

      Interesting overview but please tell your guests to hold their microphones a foot from their face and off to the side… when they speak directly into the microphone we get that annoying pop every syllable!

    2. 44 mos, 1 wk ago

      Excellent, I’ve been waiting for this episode :) We are using Caliburn.Micro at work for all of our Silerlight business applications going forward, so far it has been really awesome.

    3. 44 mos, 1 wk ago

      I’ve always been impressed with how much stuff Rob was able to pack into a library called “Micro”. Excellent work.

      There’s one significant feature that you failed to touch on. Caliburn Micro does automatic dependency tracking. If your view model property depends upon more than one data model property, it will automatically discover this and wire up the events.

      I believe that this feature completely changes the way we write view models. So much so that it is the only feature of my Update Controls library. Please look into this feature and see if it doesn’t make you think about software in a whole new way.

    4. 44 mos, 1 wk ago

      Michael, this sounds interesting but I’m not quite sure I understand. Can you explain this feature to me, or point me to an article?

    5. 44 mos, 1 wk ago


      Automatic dependency tracking means that the framework understands what your code depends upon without you having to be explicit about it. For example, consider a FullName property on the view model:

      public string FullName
      get { return _model.FirstName + ” ” + _model.LastName; }

      You don’t have to explicitly fire PropertyChanged(“FullName”) when either FirstName or LastName change. That dependency is automatically discovered.

      Consider also how a spreadsheet works. You put the formula “=A1+B1″ into C1. When you type a new number into A1, C1 is automatically updated. Excel discovers that dependency without you having to fire an event.

      I wrote about this concept with relation to Update Controls in Code Magazine:

      Here it is in Java circa 2001:

      It is also a key feature of Knockout JS:


    6. 42 mos, 1 wk ago

      No View First v. View Model First discussion?

      No discussion about the cost of buy in with the Window Manager?

      @Michael can you point to the code in caliburn micro that does that automatic dependency discovery? I’d like to study it.

    Leave A Comment