Jeremy D. Miller -- The Shade Tree Developer

Sponsors

The Lounge

Wicked Cool Jobs

Syndication

News

Advertisement

Yes, I'm going to finish "Build Your Own CAB" (sorta)

Over the past couple years I've received quite a bit of positive feedback on my "Build Your Own CAB" series on design patterns for building desktop applications. Unfortunately, a lot of the feedback is "it'd be really nice if you'd get around to finishing the series."  After all, I didn't really publish anything that actually related to building composite applications.  I am wrapping up this series plus quite a bit more (+ incorporating the work that Martin Fowler already did on these topics but didn't publish), but as part of a book for Addison Wesley tentatively entitled "Presentation Patterns."  I'll try to blog a lot more about the book next month as I shift to working on it a lot more.  I'm strictly focusing on design patterns rather than any particular technology.  At a guess, I'd say that half of the samples will be C#/WPF and the rest will be Java, WinForms, and even a couple JavaScript samples.

Here's the rough outline at the moment.  If there's something you'd particularly like to see more or less of, feel free to comment on this (please).

  1. What’s so hard about building a User Interface?
    1. Look at everything that’s going on here
    2. How do I test this?
    3. How do I connect all this together?
  2. Separated Presentation
    1. The travails of using Active View
    2. The Humble Dialog Box (narrative)
    3. Separated Presentation (narrative)
    4. GUI Architectures (pattern)
    5. Passive View  (pattern)
    6. Supervising Controller (pattern)
    7. Presentation Model (Model-View-ViewModel) (pattern)
    8. Communication between the View and Presenter (narrative)

                                                    i.     By events

                                                   ii.     Direct communication

  1.  
    1. What’s the Model? (long narrative)
    2. Model Based Validation with the Notification Pattern
  2. The Mechanics of the View
    1. Managing Screen State (narrative)
    2. Flow Synchronization (pattern)
    3. Observer Synchronization (pattern)
    4. Flattener (pattern)
    5. MicroControllers (pattern)
    6. Embedded Controller (pattern)
    7. Screen State (pattern)
  3. Complex Screens
    1. Composite Controller (pattern)
    2. Layout (pattern)
  4. The Application Shell
    1. Coordination between Screens (narrative)
    2. Screen Activation Lifecycle (narrative)
    3. Presenter First (narrative)
    4. Application Shell
    5. Application Controller
    6. Screen Collection
    7. Screen Subject
    8. Layer SuperType
  5. Event Coordination
    1. Coordination between Screens
    2. Latch (pattern)
    3. Event Aggregator (pattern)
    4. Command (pattern)
  6. Crafting a Domain Specific Language (not well defined yet, but could be a great chapter)
  7. Modularity
    1. Using an Inversion of Control Tool
    2. Bootstrapper (pattern)
    3. Registry (pattern)
    4. Presentation Chooser (pattern)
  8. Communicating with the Server
    1. Message Bus
    2. Command Executor (pattern)
  9. Automated Testing
    1. Unit testing the Presenter layer
    2. Unit testing the View
    3. Subcutaneous Testing
    4. Strategies for User Interface Testing
    5. Screen Driver (pattern)

Oh, and my take on "is M-V-VM the same thing as Presentation Model?"  I say yes.  I think it's the exact same pattern just described differently by Fowler and the Microsoft guys.  Think Leipzig and Sir Isaac Newton discovering Calculus at the same time.

 


Posted Mon, Jun 1 2009 4:29 PM by Jeremy D. Miller

[Advertisement]

Comments

José Filipe wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Mon, Jun 1 2009 5:59 PM

Hi Jeremy,

I probably can say that the "Build your own cab series" is the oldest item that I have in my favorites list.

I've seen it last year while searching for a composite framework (thus looking for Jacada, CCF, CAB, etc.), but the stakeholders decided for Java and I gave up of it (I'm kind of focused on .NET right now).

The serie, anyway, remained there because I consider it that kind of mandatory item in a "to read list".

Good to know that you're still thinking on it (and even writing about :-)). The Complex Screens sounds really interesting to me, but the book as a whole looks pretty interesting right now..

Hope to hear about it soon..

Colin Jack wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Mon, Jun 1 2009 6:03 PM

Really great, looking forward to reading this stuff.

Chris wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Mon, Jun 1 2009 6:54 PM

The other mathematician was Leibniz (who also is the documenter of our current binary system).

Nevertheless, your BYOC series is a regular read for me and I pull something new out of it every time through.

I have a feeling your Presentation Patterns book will eventually make its way on the shelf next to Pragmatic Programmer, PEI, and the blue DDD.

Ryan Riley wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Mon, Jun 1 2009 8:56 PM

I'm looking forward to the book. I think you should certainly include the DSL chapter if for no other reason than you have FubuMVC under your belt, and we would all greatly benefit from the lessons learned. I'd also be interested in which technologies seem to match up better with which patterns.

Maggie Longshore wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Mon, Jun 1 2009 9:26 PM

Looking forward to the book. I would be interested in reading about control-flow patterns and any patterns that deal with command patterns and interaction with users.

Rod Cerrada wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Mon, Jun 1 2009 11:50 PM

Thats is great! Build your own CAB is one of the best article I read.

I think you also include Cloud Computing patterns and best practices.. The .NET Services of Azure is a hybrid of SOA or MVP - Unity combo.

Yorgos Pagles wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Tue, Jun 2 2009 6:35 AM

I have found that Build your own CAB is the most hands on presentation of patterns on building desktop application and was looking forward to its completion. I am excited that it going to be a book and can't wait until it gets out.

My wish list now will only contain someone getting on this material and adds a C++ flavor (Qt ;-) )

samnang wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Tue, Jun 2 2009 6:58 AM

Great done! Hopefully, you will include sample code for each post to download. Thanks

Gagan wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Tue, Jun 2 2009 10:11 AM

It would be awesome when the BYOC series is completed, even if its in the form of a book. What is the expected release date/time-frame for the Presentation Patterns book?

Ike Casteleyn wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Tue, Jun 2 2009 3:12 PM

Looking forward to see this series continued.

I would also like more codesamples (or complete ones, perhaps as a download to explain things better).

Borek wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Wed, Jun 3 2009 6:34 AM

I am excited to hear that this series will be finished - and in the best possible form. I'm sure the book will be classic!

One suggestion though: please give Supervising Controller a proper name (it is a Presenter, not a Controller). It may be the last chance to make the correction before the term is too settled.

Looking forward to your book, I will be one of the first people who will preorder it.

Mikael wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Mon, Jun 8 2009 8:05 AM

Excellent! In the mean time, when waiting for your book, can you recommend some material for these patterns:

Flattener

Composite controller

Layout

Presentation chooser

Google didn't give any answers.

cs wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Wed, Jun 10 2009 9:22 PM

This is really needed. Can't wait!

Claudio Lassala wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Thu, Jun 11 2009 11:46 AM

I think you've got it all covered, man! Is it ready to ship yet?!  :)

Adam L. wrote re: Yes, I'm going to finish "Build Your Own CAB" (sorta)
on Wed, Jul 1 2009 3:37 PM

I can't wait.  I am really looking forward to reading your take on Application Shell.

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Devlicio.us