Tim Murphy's .NET Software Architecture Blog

November 2011 Entries

TweetMeme Button or Template Plug-In for WLW

In my search for a way to allow readers to tweet post that I put on GWB I have come across the TweetMeme plug-in for Windows Live Writer.  It automatically puts a twitter button at either the top or bottom of your post depending on how you configure it. 


It comes with a warning that it does not work with blog servers that strip out script from posts which I made me afraid it was going to make it incompatible with GWB.  This turned out to be the case so I figured we would need either an upgrade to the GWB platform or writing my own WLW plug-in. 

In comes the Template plug-in.  This allows you to have standardized content that you can insert with a couple of clicks via the interface below.


This solved the problem (sort of).  It required that I remove the standard javascript that is defined by Twitter’s button page.  In the end I am hoping for an update to our Subtext implementation to incorporate features like Facebook, Twitter, Reddit and G+, but this should help us until that comes along.


It looks like this was all useless since it seems that the buttons are in GWB.  I didn’t think I saw them before.  Either it is recent or I am blind.

Adding Tweet Button To GWB Post

I have wanted to have a Tweet button on my individual posts for a short while.  So here is a test to see if the Twitter code for their button con work on Geeks With Blogs site via Windows Live Writer.

del.icio.us Tags: ,

New Windows Phone 7 Stencil For Cacoo

I have created a stencil for wire framing Windows Phone 7 application in Cacoo.  This is definitely a work in progress, but until it is complete I would suggest combining this stencil with the Android stencil that is available by default in Cacoo.  Below are a couple of screen shots of the stencil so far.

First here is what the stencil window looks like currently.


Taking a closer look the main device frame is illustrated below


Lastly is the button pallet which contains the icons from the Windows Phone toolkit.


Check back and see more as other general controls are added to speed mocking your applications.  You can find the stencil here.

Review: ComponentOne Studio for Entity Framework

While I have always been a fan of libraries that improve coding efficiency and reduce code redundancy I have mostly been using ones that were in the public domain.  As part of the Geeks With Blogs Influencers program a got my hands on ComponentOne’s Studio for Entity Framework.  Below are my thought after working with the product for several weeks.

My coding preference has always been maintainable code that is reusable across an enterprises protfolio.  Because of this my focus in reviewing this product is less on the RAD components and more on its benefits for layered applications using code first Entity Framework.

Before we get into the pros and cons here is a summary of the main feature listed for SEF.

  • Unified Data Context
  • Virtual Data Access
  • More Powerful Data Binding


The first thing that I found to my liking is the C1DataSource. It basically manages a cache for your Entity Model context.  Under RAD conditions this is setup automatically when you drop the object on a your design surface.  If you are like me and want to abstract you data management into a library it takes a little more work, but it is still acceptable and gains the same benefits.

The second feature that I found beneficial is the definition of views with improved sorting and filtering.  Again the ease of use of these features is greater on the RAD side but no capabilities are missing when manipulating object in code.

Linq has become my friend over the last couple of years and it was great to see that ComponentOne had ensured that it remained a first class citizen in their design.  When you look into this product yourself I would suggest taking a dive into LiveLinq which allow the joining of different data source types.

As I went through discovering the features of this framework I appreciated the number of examples that they supplied for different uses.  Besides showing how to use SEF with WinForms, WPF and Silverlight they also showed how to accomplish tasks both RAD, code only and MVVM approaches.


The only area that I would really like to see improvement is in there level of detail in their documentation.  Specifically I would like to have seen some of the supporting code explained, such as what some supporting object did, in the examples instead of having to go to the programmer’s reference.

I did find some times where currently existing projects had some trouble determining scope that the RAD controls were allowed, but I expect this is something that is in part end user related.


Overall I found the Studio for Entity Framework capable and well thought out.  If you are already using the Entity Framework this product will fit into your environment with little effort in return for greater flexibility and greater robustness in your solutions.

Whether the $895 list price for a standard version works for you will depend on your return on investment. Smaller companies with only a small number of projects may not be able to stomach it, you get a full featured product that is supported by a well established company.  The more projects and the more code you have the greater your return on investment will be.

Personally I intend to apply this product to some production systems and will probably have some tips and tricks in the future.

SkyDrive and Consumer Cloud Services

Paul Thurrrott recently posted an article on the future of SkyDrive and I was asked what I thought about its future by @UserCommunity.  So let’s take a look.

The breakdown from Microsoft that Paul described I believe is an accurate representation of users and usages. While I can’t say that I leverage SkyDrive to the extent that it was meant to be I do enjoy having OneNote hosted their and being able to consult and edit it from the desktop, web and Windows Phone.

Taking that one step further is the Midwest Geeks group which started as the community of Microsoft related user groups in our region uses SkyDrive groups and shares calendars and documents.  This collaboration aspect isn’t new in itself, but having it connected with the rest of your cloud assets makes life easier.

Another recent usage of this type of cloud service is storing your personal music files in order to get that same universal access.  This is a scenario that has some arguments for and against.  On the one hand own once and listen anywhere is great, but the on the other hand the bandwidth cost becomes a giant downside.  This is especially the case since most carriers are now doing away with unlimited data packages.

Ultimately I see this type of resource growing an evolving at a phenomenal rate over the next few years as we continue to become more mobile.  Having multiple players such as SkyDrive and iCloud will only help to give us more options.  Only time will tell where we end up next.

Wire Framing WP7 Apps With Cacoo

While looking for a free alternative to Sketchflow I landed on the Cacoo web site.  Any developer who decides to use the free Visual Studio tools may find themselves doing the same search.  The base functionality of Cacoo is free although there are certain features that have fees attached to them such as extended stencils and templates.

Cacoo doesn’t seem to have a template for WP7.  It does have templates for iOS and Android development so I started with the Android template and started modidfying it for WP7.  Funny thing is since Android has the same hardware vendors as Windows Phone the basic frame looks just right (I would swear I was looking at my Samsung Focus).

Below is the start of a new mockup for the user group that I help run.


I found that while Cacoo doesn’t have all the icons I need I am able to insert them from the Windows Phone Toolkit folder.  If I put them off to the side as you can see above.  I can simply copy and paste them into the appropriate place as needed. 

Beyond that I have customized the main frame frame so I can have my base to work from.  In the future I intend to create this as a stencil and if it looks good enough I would consider making it public.

My use of this product is still in it’s early phase, but it seems like a great way to start.  Maybe if you use this to get going you can earn enough from your resulting apps to pay for something with more bells and whistles in the future.

Discovering Your Project

The discovery phase of any project is both exciting and critical to the project’s success.  There are several key points that you need to keep in mind as you navigate this process.

The first thing you need to understand is who the players in the project are and what their motivations are for the project.  Leaving out a key stakeholder in the resulting product is one of the easiest ways to doom your project to fail.  The better the quality of the input you have at this early phase the better chance you will have of creating a well accepted deliverable.

The next task you should tackle is to gather the goals for the project.  Specifically, what does the company expect to get for the money they are about to layout.  This seems like a common sense task, but you would be surprised how many teams to straight to building the system.  Even if you are following an agile methodology I believe that this is critical.

Inventorying the resources that already exists gives you an idea what you are going to have to build and what you can leverage at lower risk.  This list should include documentation, servers, code repositories, databases, languages, security systems and supporting teams.  All of these are “resources” that can effect the cost and delivery schedule of your project.

Finally, you need to verify what you have found and documented with the stakeholders and subject matter experts.  Documentation that has not been reviewed is actually a list of assumptions and we all know that assumptions are the mother of all screw ups.

If you give the discovery phase of your project the attention that it deserves your project has a much better chance of success.

I would love to hear what other people find important for this phase.  Please leave comments on this post so we can share the knowledge.

Leveraging Microsoft Patterns and Practices

I want to bring the Patterns and Practices group to the attention of those who have not already been exposed.  I have been a fan of the P&P team since they came out with the original Application Blocks which eventually turned into the Enterprise Library.  Their main purpose is to assemble guidance and tools that make it easier for all of us to build amazing solutions. 

I would simply suggest you spend some time exploring the information and code libraries that they have produced.  Free resources are always a great find and I have used a number of the P&P solutions over the years with success.  If nothing else you may find some new ideas.  Enjoy.















Why We Need UX Designers

Ok, so maybe this is really why I need UX designers.  While I have always had an interest in photography and can appreciate a well designed user interface putting one together is an entirely different endeavor.  Being color blind doesn’t help, but coming up with ideas is probably the biggest portion of the issue.  I can spot things that just don’t look like they work right, but what will?

UX designers is an area that most companies do not spend much if any resources.  As they say, you only get one chance to make a first impression and and a poorly designed site or application is a bad first impression.  Given that they you would think that companies would invest more in appearance and usability.

One of two things need to be done to rectify this issue.  Either we need to start educating our developers on user experience and design or we need to start finding ways to subsidize putting full time designers on our project teams.  Maybe it should be a time share type of situation, but something needs to be done.  As architects we need to impress on our project stakeholders the importance of User Experience and why it should be part of the budget.  If they hear it often enough eventually they may present it to you as their own idea.

SharePoint Thoughts

I was listening to .NET Rocks episode #713 and it got me thinking about a number of SharePoint related topics.

I have been working with SharePoint since the 2001 product came out and have watched it evolve over the years.  Today SharePoint is one of the most powerful and flexible products in the market.  Of course that doesn’t mean there isn’t room for improvement (a lot of improvement in fact) and with much power comes much responsibility.

My main gripe these days is that you have to develop on a server instance.  This adds a real barrier to entry for developers.  You either have to run VMWare or Hyper-V on your developer machine or actually develop on your dev server for most tasks.  Yes, there is a way to setup a Windows 7 machine with the SharePoint components but it is very hackish.

Beyond that the tools in VS2010 are a great leap forward from past generations.  Not requiring a separate package creation tool is not the least of the improvements.  Better workflow and web part development have also eased the burden of many developers.

The other thing the show brought up in my thoughts was more around usage.  Users want to be able to self server everything without regard to what affect that has on leveraging their data from a corporate perspective.  My coworkers who work on Lotus Notes ask why the user can’t just do what ever they want? Part of the reason is that those features have not been built, but the other part is that giving them those features is often like giving an infant a loaded hand gun.  You can do it but it doesn’t make it the smart thing to do.

As with any tool that is going to be used in the enterprise it should be subject to governance.  If controls are not in place as they said in the episode of DNR the document libraries and I believe SharePoint in general starts to look as disarrayed and unusable as a shared drive.  Consider these factors before giving into every whim of the users.  You should be able to explain to them the tradeoffs of giving them full control versus being able to leverage the information they collect to the benefit of the organization.

These are just a couple of the thoughts that were triggered by the show.  I’m sure there are more discussions that can be had.  Feel free to leave your comments about the pros and cons of SharePoint.

Styling Windows Phone Silverlight Applications

If you have not developed with styles in Silverlight/XAML then it can be challenging and resources can be sparse depending on how deep you get.  One thing that you need to understand is what level you can apply styles and how much they can cascade.  What I am finding is that this doesn’t go to the level that we are used to in HTML and CSS.

While styles can be defined at a page level if you want to share styles throughout your application they should be defined in the App.xaml file.  This is of course analogous to placing a style in your HTML file versus an external CSS file.  This is the type of style I will concentrate on in this post.

The first thing to look it how styles associate to elements.  TargetType defines the object type that your style will apply to.  In the example below the style is targeting the TextBlock object type.

<Style x:Key="TextBlockSmallGray" TargetType="TextBlock">

Next we use a Setter which allows you to apply values for specific attributes of the target object type.  The setters can be a simple value or complex.  The first example here is simply applying a color to the background property of the target.

<Setter Property="Background" Value="White"/>

The second setter example here is for the same property, but we are applying a the definition of a LinearGradientBrush.

<Setter Property="Background">
<GradientStop Offset="0" Color="Black"/>
<GradientStop Offset="1" Color="White"/>

The last thing I want to cover here is that you can leverage the system styles and then override or extend them.  The BasedOn attribute of the Style tag allows this sort of inheritance.  In the example below I am going to start with the PhoneTextTitleStyle and then override properties as needed.

<Style x:Key="TextBlockTitle" BasedOn="{StaticResource PhoneTextTitle1Style}" TargetType="TextBlock">

So now that we have our styles defined applying it is fairly straight forward.  Add the style name as a static resource to the style property of the element in your page and off you go.

<Grid x:Name="LayoutRoot" Style="{StaticResource PageGridStyle}">

So this is one step in creating consistency in your application’s look.  In future posts I will dig a little deeper.

Change Control Processes

The evolution of an IT department is always something interesting to observe.  The is especially the case when they move from small departmental IT groups to corporate level oversight.  It is usually painful for the people involved to give-up their ability to modify servers on the fly and conform to rigorous testing and documentation.  Having the keys to your environments taken away can really feel like getting stabbed in the back especially when the new deployment team is still working out there processes.  Unfortunately these are the evils of ensuring a stable system.

So what is really needed for a change control process?  This is meant to be an overview rather than a deep dive, but here we go.

A change control process needs to ensure the security and stability of your environments and data as well as compliance with regulations.  The main keys are limiting access, an approval process, separation of duties and keeping a history of changes.

Limiting access and the separation of duties go hand-in-hand.  Limiting access to your QA and production environments ensures that only approved individuals update software that could cause outage or effect data that may be sensitive or cause losses.

Approval and documentation are related to each other as well. You approval process will vary depending on the size of your company and the number of regulatory bodies that have oversight.  At the very least these process all affected system owners and stakeholders need to be aware that changes are going in to production. 

Exception processes also have to be put into place for emergencies.  These maintain the oversight, but allow changes to happen more quickly and off the normal schedules.  The last thing you want to have is a system down scenario and trying to figure out how to stay in compliance at the same time.

In the end the pain usually only lasts while the teams get accustomed to the processes.  Make sure that you document the process well and educate every new team member so that there are no misunderstandings and it will eventually become part of your culture.

GWB Influencer

I was pleasantly surprised to find out this week that I am now part of the Geeks With Blogs Influencers program.  It is hard to believe that it has been 5 1/2 years since I started blogging here.  It has always been a great community and it is great to be able to show off how much I appreciate having this soapbox here to share ideas.  I look forward to being here a lot longer.  Finally, thanks to Jeff and the crew for keeping the lights on and continued improvements.
del.icio.us Tags: ,,