# Monday, July 26, 2010

My current client is looking to combine a series of line of business Access (YIKES) and Win Forms apps into a composite WPF MVVM solution.  I was also brought in to architect one of the heavy hitter apps that will be a part of the new composite application.  In the initial discussion concerning creating a composite application, one of the client’s developers presented a proof of concept composite application using Microsoft’s Prism. I voiced my concern about the amount of code said solution would be required to handle and recommended going with a multi-solution composite rather than a multi-project composite.

I started researching multi-solution composite applications on the inter-webs and found very little, virtually no, useful material…and this worried me.  I couldn’t be the first guy to think the multi-solution approach would be preferred for a composite application that will, when all is said and done, contain hundreds of thousands of lines of code.  Not wanting to lead my client in the direction of the proverbial unicorn I decided to put together a little proof of concept of my own.

This code is a Proof Of Concept and was developed as such.  The overall functionality of the application is trivial.  It is UI centric and does not contain a true data access layer and it does not contain any unit tests.  I know this is horrible but please understand. :)

The typical WPF composite application is broken down into three major sections.

  1. Infrastructure (VS Project)
    • Commands
    • Events
    • Domain Entities
    • Interfaces
  2. Shell (VS Project)
    • WPF Window that will act as the *shell* of your composite application
    • Bootstrapper (we will discuss this later)
  3. Modules (1 or more VS Projects)
    • WPF user controls that make up the functionality of your application
    • Modules should be as self contained as possible with minimal references to Infrastructure
    • Each module will contain
      • View
      • View Model
      • Controller (optional)

The structure for a multi-solution composite application is similar but is broken out into solutions instead of projects, surprise!


The code is really straightforward.  There a couple of requirements though:

  1. Prism
  2. Unity

I included some UI enhancements, including implementing the Avalon Dock controls for docking windows.

Download Here!!!!!!

posted on Monday, July 26, 2010 10:49:00 PM (Central Daylight Time, UTC-05:00)  #    Comments [6]
# Saturday, July 24, 2010

On the way home from a weekend in Chicago for Midwest Give Camp a fellow developer and I got on the subject of what I like to call the “9 – 5 Developer.”  If Wikipedia had an entry for “9 –5 Developer” it would read:

  • A 9 – 5 Developer is a developer, typically found in the corporate arena, that is content with doing his daily development responsibilities using the least amount of effort possible.  While away from work they do nothing to better themselves in the development arena.  They are often found using technologies and techniques 2 –5 years behind what is current, and are content in doing so.  They are usually opposed to new things in fear that they would be required to learn.  Phrases often spoken by them include;
    • “If they think I am staying a minute after 5…they are crazy!”
    • “Why would I need to learn that when what I am doing works?”
    • “I would attend [insert free developer event] if the company paid me for my time.”
    • “[Boss] has something against me!  I am always being passed up for promotions.”

Don’t worry…if you are reading this…you are not a “9 – 5 Developer"! 

Being that I am a consultant I have ran in to more than my share.  If I had to estimate I would say, from my experience, 85% of all developers fall in this group.  I find that very disturbing.  I just can’t imagine being content going through life this way.

That’s my rant!  Thanks for stopping by!

posted on Saturday, July 24, 2010 10:01:00 PM (Central Daylight Time, UTC-05:00)  #    Comments [5]
# Wednesday, May 26, 2010

I am currently reading Agile Web Development with Rails by Sam Ruby, Dave Thomas, and David Heinemeier Hansson and I came across something very helpful early on in the book. As with most documentation these the complete Rails api documentation is available online which you can only access when you have an internet connection. As this is becoming less and less of a problem it is still a problem. So here are the steps for pulling down the documentation and always having it available when offline!

  1. > Open up Ruby command prompt
  2. > rails apidocs_app
  3. > cd apidocs_app
  4. > rake rails:freeze:gems
  5. > rake doc:rails
That's it. Now you can open up the index.html file created under apidocs/doc/api and have complete access to Rails api documentation whenever you need it!

posted on Wednesday, May 26, 2010 6:17:43 PM (Central Daylight Time, UTC-05:00)  #    Comments [13]

There are so many things that I want to dive into and I was whining about it on Twitter and a friend of mine brought to my attention that I should blog about it. So here we go;

  • Ruby On Rails (Have a good start on this)
  • F#
  • Power Shell
  • iPhone Development (Started)
  • Android Development (Started)
  • nServiceBus
  • Advanced Silverlight/WPF

posted on Wednesday, May 26, 2010 5:58:04 PM (Central Daylight Time, UTC-05:00)  #    Comments [12]
# Saturday, July 18, 2009

I have been so busy lately and I am disappointed that blogging is one of the things I have been neglecting.  In hopes of getting back in the groove I wanted to get a quick hitter out.  This is a ReSharper Live Template for creating a unit test stub that provides an easy way for you to create a unit test name and comments that help in describing the true intentions of the test and stick to best practices.

The template itself is very simple…

   1: /// <summary>
   2: /// A unit test for $MethodBeingTested$
   3: /// </summary>
   4: [TestMethod]
   5: public void $MethodBeingTested$$WhatIsBeingTested$() {
   6:     //Arrange
   7:     $END$
   8:     //Act
   9:     //Assert
  10: }

If you aren’t familiar with ReSharper Live Templates…think CodeSnippets on Steriods.  If you are doing TDD or some hybrid of such, you should be using a template such as this.

posted on Saturday, July 18, 2009 5:46:10 PM (Central Daylight Time, UTC-05:00)  #    Comments [40]