<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Clydesdale Software Blog</title>
    <description>Clydesdale software is a leader in software product lifecycle management and application lifecycle management.  Assessing product readiness is key when bringing a software product to market, making sure all pieces are in alignment to make it a success.</description>
    <link>http://www.clydesdalesoftware.com/Blog.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <item>
      <title>Looking at Umbraco 7</title>
      <description>&lt;p&gt;After much experience and frustration with previous versions of Umbraco I decided to take another look at Umbraco version 7 which is based on ASP .Net MVC.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The first thing I like about v7 is the ease of setup, just create an empty web project then install the Umbraco Nuget package which now has the MVC flag set. Next run the project and step through the wizard.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At this point you have a functional CMS website. Being a person who likes to customize things I wanted to know how easy it was to insert my own code, i.e. my own controllers and views. Creating partial views to use on pages seems easy enough by creating macros (or macropartials) then adding them via the editor though this is not very MVC. What I really wanted was to have my own controller return a view.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;One option is &lt;a href="http://our.umbraco.org/documentation/Reference/Mvc/custom-controllers"&gt;hijacking routes in Umbraco&lt;/a&gt;, though having to deal with Umbraco’s naming convention and model inheritance seemed not needed and is baggage I did not want.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The option I went with is to create my own MVC controller and view. First create a &lt;b&gt;MacroPartial&lt;/b&gt; and in it use &lt;b&gt;@Html.Action(“MyAction”, “MyController”)&lt;/b&gt; then add the macro to a page via the rich text editor. Of course out of the gate it did not work because that would be too easy. With some quick searching I found that inheriting from &lt;b&gt;SurfaceController&lt;/b&gt; is the correct way to create your own controllers in Umbraco. After that all worked fine and I was able to pass my own custom model without inheriting from anything or worry about naming conventions.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The other approach and/or addition to the above is to create a webapi controller and use ajax callbacks to bring functionality to partial views.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This latest version of Umbraco is a step forward though it still does not have a great answer to scaling horizontally or custom development process. As with many CMS systems out there Umbraco promotes development in production which I’m not a fan. My usage pattern for Umbraco has and always will be treating it as a custom website; create custom pieces in development then deploy to test before production. Simple content is different story, actually anything which goes into the database is a different story.&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/14-04-04/Looking_at_Umbraco_7.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/14-04-04/Looking_at_Umbraco_7.aspx</comments>
      <guid isPermaLink="false">29f96fbc-7c34-429f-a523-e6c847465a3d</guid>
      <pubDate>Fri, 04 Apr 2014 21:21:38 GMT</pubDate>
    </item>
    <item>
      <title>Methodology Mashup</title>
      <description>&lt;p&gt;In the &lt;a href="http://www.clydesdalesoftware.com/blog/14-01-24/Influence_Your_Way_to_Success.aspx" target="_blank"&gt;last post&lt;/a&gt; I mentioned how leaders and their influence create culture.&amp;#160; This post talks about the other side of the same coin, process methodology.&amp;#160; These two sides of the same coin, culture and process, are tightly related as certain cultures have to be present to support the process.&amp;#160; If the culture is such that everything has to be hammered out 100% before any work begins then agile processes may not work very well until the culture hurdle is addressed.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Each methodology has good and bad things. Many of the early methodologies were very prescriptive and as time went on have become less and less prescriptive mainly because one size does not fit all. Below is a list of items out of each methodology that have been found useful. This list of methodologies is also in the order of most prescriptive to least prescriptive.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The below outline is a proposed mashup built from different methodologies. The evolution of doing &lt;b&gt;&lt;i&gt;it&lt;/i&gt;&lt;/b&gt; better, depends on experimenting to find what works for different situations. Keeping this in mind the below is not a success plan but a sharing of information; it is up to you, the reader, to turn this information into knowledge and apply it to get the benefits.&lt;/p&gt;  &lt;h3&gt;Things That Make Us Go Faster&lt;/h3&gt;  &lt;h4&gt;RUP&lt;/h4&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;&lt;b&gt;Vision/Business Case&lt;/b&gt; (aka: Project Charter): In short this is a definition of the starting point. This is a 1-3 page document that describes:       &lt;ul class="inner-list"&gt;       &lt;li&gt;o The purpose/business value &lt;/li&gt;        &lt;li&gt;o Vision &lt;/li&gt;        &lt;li&gt;o Stakeholders &lt;/li&gt;        &lt;li&gt;o who are the customers/users &lt;/li&gt;        &lt;li&gt;o When &lt;/li&gt;        &lt;li&gt;o Business Sponsor &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Risk/Issue List&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Glossary&lt;/b&gt; – Vocabulary used for the project. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Scrum&lt;/h4&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;&lt;b&gt;Small focused teams&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Release planning&lt;/b&gt;&amp;#160; - We often need to know “how big”. Using team input, average cycle time, average lead time as well as relative size comparisons of other projects a breadbox size can be fairly easy to come up with.&amp;#160; It is recommended delivering a time estimate range at this stage of a release. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Retrospectives&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;User Stories&lt;/b&gt; – While not a requirement to write product backlog items as user stories it helps to remind us how humans will be using whatever it is that we are building.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Frequent Demos&lt;/b&gt; – Get the feedback, let users drive. Feedback is the lifeline of a successful project.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Daily Scrum / Standup&lt;/b&gt; – Make sure everyone on the team knows about their teammates. This is not a status meeting but a team cohesiveness activity, the information gained from it is a side effect.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Release Often (i.e. Small Releases)&lt;/b&gt; – While this may not mean production every time (though big backlogs of items not released to production is not recommended) it is advisable to release to users often.&lt;b&gt;&lt;/b&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Kanban&lt;/h4&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;&lt;b&gt;Visualize workflow&lt;/b&gt; – see it, know it, communicate it&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;State driven queues&lt;/b&gt; (e.g. backlog, ready, in progress, ready to be accepted, done) &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Pull Based&lt;/b&gt; – Pull an item to work on when a person has them time instead of having it pushed onto them.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Limit WIP&lt;/b&gt; (Work in Progress/Process) – The goal is to get things done not to see how many things can get started. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Flow driven process&lt;/b&gt; – A flow driven process is about keeping things moving not about filling up every minute of everyone’s day. You will find a lot more gets done consistently in a flow driven process than a capacity driven process and there is slack in the system for change and adaption to occur.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Prioritization Process&lt;/b&gt; – In Kanban it is not imperative to have the backlog fully prioritized because a “Ready” queue can hold a small number of items. When the “Ready” queue has an opening the project stakeholders can decide which thing is next. It can be useful to keep your top five items in the backlog at the top.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Cycle time, Lead time and Cumulative flow&lt;/b&gt; are used as trailing indicators (i.e. using history of what has been done). Using Cumulative flow and a burn up algorithm current and needed run rate to deliver can be easily extrapolated. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Queues are used as leading indicators&lt;/b&gt; – The visual representation of the items moving through the queues allows for adaption of the process.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;JIT (Just In Time) Estimation&lt;/b&gt; – This is where task breakdown can happen. When an item is ready to be worked on and is pulled by a “doer” then the task breakdown occurs and further detail may be gathered on the story/PBI.&lt;b&gt;&lt;/b&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Lean&lt;/h4&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;&lt;b&gt;Identify wasteful activities/artifacts.&lt;/b&gt; I.e. Activities that do not have a return on the investment. Identifying wasteful activities can be difficult and will require down to earth introspection with an understanding that becoming more skillful at anything requires failure and learning from those failures. When the term failure is used it can also mean not doing things as well as they could be done; while it is not classified as wrong it is a failure of not doing it better. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I did not mention &lt;strong&gt;XP (Extreme Programming)&lt;/strong&gt; in the above mainly because this is from the perspective of a project/program/portfolio manager. While XP does have guidance on planning and managing I have found it to be not as practical as the above for a most situations; not to mention not every project my involve software development. I do however agree with XP practices (for software projects) which are applied by the “doer” team and guidance from a development manager/lead.&lt;/p&gt;  &lt;h3&gt;Tooling&lt;/h3&gt;  &lt;p&gt;Out of all the above list the biggest area that can leverage tooling is the Kanban section. The rest of the bullet points can be put into any tooling solution and many of them are human driven.&lt;/p&gt;  &lt;h4&gt;LeanKit&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://leankit.com/"&gt;LeanKit&lt;/a&gt; does Kanban very well. Many thanks to &lt;a href="http://agileprogrammer.com/"&gt;Brian Button&lt;/a&gt; for pointing me to it. It supports easy manipulation of queues, WIP limit, swim lanes and policies. The ability to build hierarchies of boards is paramount for portfolio management. LeanKit’s portfolio management is interactive with drill downs to different boards, user stories/pbi’s and tasks.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Portfolio Management Overview:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://vimeo.com/user9276415/review/44129945/a253134856"&gt;http://vimeo.com/user9276415/review/44129945/a253134856&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A feature pointed out in the above video which is really use full is having a team board which may have items on it for many different projects. This happens so often on projects with supporting groups like operations.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This software package does supply &lt;a href="https://support.leankit.com/entries/21899282-Lead-Cycle-Time-Diagrams"&gt;cycle/lead time statistics&lt;/a&gt; as well as &lt;a href="https://support.leankit.com/entries/21914317-Cumulative-Flow-Diagram"&gt;cumulative flow&lt;/a&gt; which are important for management a project. LeanKit also has a &lt;a href="https://support.leankit.com/entries/21914197-Calculating-Burn-up-Trajectory"&gt;burn up&lt;/a&gt; which can be added to the Cumulative flow diagram to show the current burn rate, the rate required to complete what is in the backlog and the rate required to fill the gap between these two.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;LeanKit is considerably cheaper than other options that provide this level of project and portfolio management.&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/14-02-10/Methodology_Mashup.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/14-02-10/Methodology_Mashup.aspx</comments>
      <guid isPermaLink="false">b8c8512b-50ba-42fc-ba77-321f2500c955</guid>
      <pubDate>Mon, 10 Feb 2014 17:40:35 GMT</pubDate>
    </item>
    <item>
      <title>Influence Your Way to Success</title>
      <description>&lt;p&gt;No matter what your role, influence plays an important part. Great &lt;b&gt;leaders&lt;/b&gt; are exceptional &lt;b&gt;influencers&lt;/b&gt; and leadership creates&lt;b&gt; culture&lt;/b&gt;. Leaders are &lt;b&gt;not&lt;/b&gt; bosses just as leadership is &lt;b&gt;not&lt;/b&gt; management. If you are at a great company you probably have great leaders that have very strong personal powers.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Personal Power&lt;/b&gt; gains influence by using 'power with' someone.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Positional Power&lt;/b&gt; induces compliance by using 'power over' someone.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A couple ways to think of personal and positional power which may help others are:&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;&lt;b&gt;Positional power&lt;/b&gt; is a result of strong &lt;b&gt;personal power&lt;/b&gt;. i.e. The person that is a rock star gets promoted. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Personal power&lt;/b&gt; is a leading indicator while &lt;b&gt;positional power&lt;/b&gt; is a trailing indicator to leadership success. i.e. Being a great leader with your &lt;b&gt;personal power&lt;/b&gt; shows what is being done now, &lt;b&gt;positional power&lt;/b&gt; is a result of what you have done in the past. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Personal power will get a leader further than positional power as it is based on &lt;b&gt;trust&lt;/b&gt; and &lt;b&gt;respect&lt;/b&gt; among team members. Different types of personal power are illustrated below.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Personal Powers&lt;/b&gt;&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;&lt;strong&gt;Expert&lt;/strong&gt;: The perception that the leader has relevant education, experience and expertise &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Information&lt;/strong&gt;: The perceived access to, or possession of, useful information. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Referent&lt;/strong&gt;: The perceived attractiveness of interacting with the leader. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Positional power is using ones position to induce someone to do something. Positional power does not require a base of trust and respect and when it is not present will lead to compliance.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Positional Powers&lt;/b&gt;&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;&lt;strong&gt;Reward&lt;/strong&gt;: The perceived ability to provide things that other people would like to have. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Connection&lt;/strong&gt;: The perceived association of the leader with influential persons or organizations. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Coercive&lt;/strong&gt;: The perceived ability of a leader to provide sanctions, punishments, or consequences for not performing. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When a leader has positional power as well as a very loyal following it is because of their personal power strengths not their positional power attributes. As a leader, make sure you have established a strong foundation of &lt;strong&gt;trust&lt;/strong&gt; and &lt;strong&gt;respect&lt;/strong&gt; while using your personal powers before leveraging your positional powers. &lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/14-01-24/Influence_Your_Way_to_Success.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/14-01-24/Influence_Your_Way_to_Success.aspx</comments>
      <guid isPermaLink="false">aa91717e-85d5-44de-8dc3-42126111b455</guid>
      <pubDate>Fri, 24 Jan 2014 03:07:44 GMT</pubDate>
    </item>
    <item>
      <title>10 Steps to a Productive Retrospective</title>
      <description>&lt;p&gt;A productive retrospective is a key part to continuous improvement (aka Kaizen) for your team, process and culture. A retrospective is time to reflect back on what the team has done and how it can be changed for the better.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A retrospective is different than a “lessons learned” as they happen more frequently and during the execution of a project. Lessons learned generally happen at the end of a project and many do not prioritize the outcome so action can be taken. For this reason, and others, lesson learned meetings tend to be less beneficial to improving the overall process when compared to retrospectives.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul class="inner-list-numbered"&gt;   &lt;li&gt;Hold a retrospective every 2-4 weeks depending on the team’s speed &lt;/li&gt;    &lt;li&gt;As the facilitator start the time together making sure each person has a stack of sticky notes to write on. &lt;/li&gt;    &lt;li&gt;As the facilitator, find a blank wall and create spaces for &lt;b&gt;Start&lt;/b&gt;, &lt;b&gt;Stop&lt;/b&gt; and &lt;b&gt;Continue&lt;/b&gt;. This can be done by writing on a sticky notes and putting it on the wall. Another option is to write the titles on a white board. &lt;/li&gt;    &lt;li&gt;As the facilitator explain what &lt;b&gt;Start&lt;/b&gt;, &lt;b&gt;Stop&lt;/b&gt; and &lt;b&gt;Continue&lt;/b&gt; mean.       &lt;div style="padding-left: 50px"&gt;       &lt;p&gt;&lt;strong&gt;Start&lt;/strong&gt;: things we want to start doing. &lt;/p&gt;        &lt;p&gt;&lt;strong&gt;Stop&lt;/strong&gt;: Things we want to stop doing. &lt;/p&gt;        &lt;p&gt;&lt;strong&gt;Continue&lt;/strong&gt;: Things we want to continue doing (this could be something we have been doing but it is not yet a habit). &lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;As the facilitator explain the process of writing down something on a sticky note and putting it on the wall under Start, Stop or Continue. An example may be beneficial. &lt;/li&gt;    &lt;li&gt;Start the clock. Give the team 5-10 minutes to write their thoughts down and put them on the wall. Remind the team that retrospectives happen with frequency so this is not an all-encompassing attempt. &lt;/li&gt;    &lt;li&gt;Once all sticky notes are up review them with the room. Read each item out loud and elaborate briefly so everyone has an understanding of the item. Be sure to not let the retrospective get derailed by long discussions as this is not the place where a solution is going to be found. &lt;/li&gt;    &lt;li&gt;Give everyone 5 votes. Explain that they may distribute their votes among the items however they like. &lt;/li&gt;    &lt;li&gt;As the facilitator take the top 1 – 3 items as the vote count dictates. It is strongly recommended that only the top item be singled out as work will have to be done on it. Borrowing a core principle of branding, focus. Focus is what makes teams great which is why focusing on the most important thing is so beneficial. Taking on all the items in a retrospective will lead to it being a distraction instead of a source of continuous improvement. &lt;/li&gt;    &lt;li&gt;Explain the next steps with the top item/s and how work will be done on them. &lt;/li&gt; &lt;/ul&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/14-01-17/10_Steps_to_a_Productive_Retrospective.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/14-01-17/10_Steps_to_a_Productive_Retrospective.aspx</comments>
      <guid isPermaLink="false">40164c48-e290-433e-9614-0c113dab0f97</guid>
      <pubDate>Fri, 17 Jan 2014 04:17:32 GMT</pubDate>
    </item>
    <item>
      <title>PaaS Faceoff - Azure vs AWS</title>
      <description>&lt;p&gt;This post will cover the differences laid out as pros/cons between Azure and AWS as a PaaS, while touching just a bit on IaaS.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Why PaaS?&lt;/b&gt; Focus on software not virtual machines and networks. A PaaS should prescribe guidance on how to build for it, easily using all the building blocks available in the PaaS. For some this is not their cup of tea though I will take delivering in a fraction of the time, and start getting product feedback, any day over building the perceived perfect technical environment.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will focus on web services and websites using IIS and the .NET framework. I will also briefly touch on some of the other pieces in a PaaS.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Azure&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The main piece of Azure I will focus on is Cloud Services (aka Hosted Services). Microsoft has thought through the Cloud Services implementation as it provides guidance just by its existance. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Pros &lt;/b&gt;&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;Having the Azure Cloud Services being a separate project in Visual Studio that references the service project is really helpful as the service projects are not necessarily specific to Azure. &lt;/li&gt;    &lt;li&gt;Separation of the service configuration and the application package is really key as it allows one package to be created and apply a configuration for different environments. &lt;/li&gt;    &lt;li&gt;Configuration is at the deployment level and the Azure configuration manager makes it very easy to work with. The Azure configuration manager first checks the Azure configuration then checks the local configuration appSettings; very useful if a key/value is forgotten to be transferred to the Azure configuration if you are moving to Azure. &lt;/li&gt;    &lt;li&gt;Production and Staging slots for Cloud Services is so nice to see. Many years ago I did this with symlinks so there could be quick action taken if a deployment went wrong and any priming that needed to be done could be done. For test environments I tend to use the staging environment as the url is something that people cannot guess. &lt;/li&gt;    &lt;li&gt;Microsoft provides emulators for compute, table storage, queues and blob storage which is very handy when developing locally. &lt;/li&gt;    &lt;li&gt;Azure In-Role Caching is so easy to use and provides a fast place to put session state if needed. &lt;/li&gt;    &lt;li&gt;Really good developer experience. &lt;/li&gt;    &lt;li&gt;.NET Api’s are clean and easy to use &lt;/li&gt;    &lt;li&gt;Azure .NET SDK has transient fault handling built in for storage components (blob, queue, table) and for service bus the enterprise library transient fault handling block can be used. &lt;/li&gt;    &lt;li&gt;EF 6 now has SQL Azure transient fault handling&lt;/li&gt;    &lt;li&gt;Worker Roles for none web oriented processing (or open up a port and you can host in them if iis is not needed) &lt;/li&gt;    &lt;li&gt;Per minute pricing! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Cons&lt;/b&gt;&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;Cannot have a non-public Cloud Service which is load balanced and autoscaled. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Suggestions&lt;/b&gt;&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;I would love to see a Cloud Service which could only have other Azure Cloud Services talk to it and was still load balanced, much the same way SQL Server does with a firewall rule. Yes there are virtual networks though you lose load balancing and honestly this is a bit overkill for the intended use. All I want is to not have the public world script kiddies be able to hit the service endpoint. &lt;/li&gt;    &lt;li&gt;Bring the PaaS and IaaS together with something similar to AWS Cloud Formation. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;AWS&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The main pieces of AWS I will focus on in Elastic Beanstalk. Elastic Beanstalk is the closest component of AWS to comparison to Azure PaaS though using Cloud Formation you can assemble a template which is close.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Pros&lt;/b&gt;&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;SNS notification hooks&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;Can be used in conjunction with Cloud Formation. Yes this is a bit outside of a PaaS though IaaS and PaaS have a fairly large intersection in today’s enterprise.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;Can create Elastic Beanstalk applications inside a virtual private cloud.&lt;b&gt;&lt;/b&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Cons&lt;/b&gt;&lt;/p&gt;  &lt;ul class="inner-list"&gt;   &lt;li&gt;Configuration is part of the Web Deploy package which means you cannot have the scenario outlined above with Azure. Instead a package per environment would have to be created though some customization to the packing process would need to happen to get the correct configuration file. More can be found here - &lt;a href="http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html"&gt;http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;NOTE FOR ABOVE: Using Cloud Formation you can create different configurations for different environments though now this is outside the AWS PaaS solution to achieve something similar to what Azure can do out of the box. &lt;/li&gt;    &lt;li&gt;NOTE NOTE FOR ABOVE: OpsWorks is another widget in AWS which can do much of what the above two approaches can do though a bit differently.&amp;#160; Honestly, this looks really cool though I do not see windows as an option and I would not call it a PaaS but really cool none the less. &lt;/li&gt;    &lt;li&gt;No production and staging slots where a virtual ip could be flipped and provide a quick back out to a deployment gone wrong or to do any priming before putting into production. &lt;/li&gt;    &lt;li&gt;Api’s could be cleaner. After moving a product from AWS to Azure I was impressed how much easier the Azure .NET Api’s were to use. &lt;/li&gt;    &lt;li&gt;Pricing is per hour. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Suggestions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Pretty simple, do the stuff in the pros list of Azure.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Final Thoughts&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Both Azure and AWS are great though I have found Azure to be more purposefully built. By purposely built I mean to solve a specific problem which is what a PaaS should do. AWS feels like a bucket of widgets, which is why AWS is considered more of an IaaS.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There is of course the intersection of PaaS and IaaS. A good PaaS is a much harder nut to crack, too loose it becomes nothing more than a template on top of an IaaS, not really solving a specific problem. To tight and it becomes inflexible and does not fit the bill for use with a majority of software. AWS does a better job of handling this intersection than Azure though there is room for improvement, both in the AWS PaaS and how it works with the IaaS. I’m excited to see where Azure decides to take it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At the end of the day I prefer Azure for a PaaS as it streamlines and guides the process of delivering software better than AWS while still giving flexibility.&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/13-12-18/PaaS_Faceoff_-_Azure_vs_AWS.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/13-12-18/PaaS_Faceoff_-_Azure_vs_AWS.aspx</comments>
      <guid isPermaLink="false">323a98e4-1363-4c91-8586-3db34ed722d6</guid>
      <pubDate>Wed, 18 Dec 2013 19:37:51 GMT</pubDate>
    </item>
    <item>
      <title>Will The Cloud Raise The Need For Quality?</title>
      <description>&lt;p&gt;With the cloud enabling people and companies to deliver software to market faster than ever before will the bar for quality be raised? In many cases the cloud as removed or lessen the barrier to entry into a market.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;The software industry is growing and thus more software available. The cloud (and mobile industry) are enabling this growth in software. As more software is delivered to market via the cloud, more of this software will be lower quality.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;This has been shown already by the ease of app delivery in the mobile world. How many of those QR code reader apps actually work?&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;If there is an increasing amount of lower quality software then the software that does work becomes more valuable.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;My answer is &lt;b&gt;YES&lt;/b&gt;! The cloud will raise the bar for quality over time as there are more options for users and they are more likely to pick an option that is known to work, so make sure your software is rock solid!&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/13-10-20/Will_The_Cloud_Raise_The_Need_For_Quality.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/13-10-20/Will_The_Cloud_Raise_The_Need_For_Quality.aspx</comments>
      <guid isPermaLink="false">c8e8bdb1-836f-4daa-91f7-ec450a9a99d2</guid>
      <pubDate>Sun, 20 Oct 2013 19:05:38 GMT</pubDate>
    </item>
    <item>
      <title>Outcome vs Hourly Companies</title>
      <description>&lt;p&gt;I categorize companies into two buckets, those that count hours and those that drive towards outcomes.&lt;/p&gt; &lt;br /&gt; &lt;p&gt;Chances are we all have worked for or currently work for an hourly company.&amp;nbsp; You know the type, the ones that want to track every minute you work and only when you work in the office does your work count.&amp;nbsp; Hourly companies have a fetish with the 40 hour work week and say things like “40 hours is a minimum”.&lt;/p&gt; &lt;br /&gt; &lt;p&gt;What the hourly companies do not know is counting hour’s breeds &lt;strong&gt;compliance&lt;/strong&gt; and everything will take longer to get done.&amp;nbsp;&amp;nbsp; This type of company shows it does not trust its employees at its core and is driven by the fear that employees are stealing wages by not putting in hours regardless of how well goals are being achieved.&lt;/p&gt; &lt;br /&gt; &lt;p&gt;Outcome based companies are focused on achieving goals (i.e. outcomes).&amp;nbsp; This is not to say they are not interested in the number of hours people put in to achieve these goals though the hours are footnote, an analytic if you will.&amp;nbsp; Outcome based companies trust the people they employ and hold them accountable for &lt;strong&gt;Getting Shit Done!&lt;/strong&gt; (GSD for short) They trust they will deliver what is needed and put in the time to do it, whether it is 9-5 Monday – Friday or working late at night and a bit on the weekend with a Wednesday off.&lt;/p&gt; &lt;br /&gt; &lt;p&gt;I’m a GSD kind of guy and I prefer to work with other GSDers.&amp;nbsp; If a timesheet is more important to a company than reaching a desired outcome which will drive a strategy, then I feel that it may be challenging for that company to do anything special in this world.&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/13-10-10/Outcome_vs_Hourly_Companies.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/13-10-10/Outcome_vs_Hourly_Companies.aspx</comments>
      <guid isPermaLink="false">5ea415f7-b900-49ae-bf10-44ae5a30dec7</guid>
      <pubDate>Thu, 10 Oct 2013 02:39:10 GMT</pubDate>
    </item>
    <item>
      <title>The Logging Truth</title>
      <description>&lt;p&gt;The reality is that there are more software engineers (aka developers) in this world that do not understand logging than do.&amp;nbsp; In every modern coding language there is a logging system already in place.&amp;nbsp; For example, in .NET there is Tracing which writes out to a collection of trace listeners.&amp;nbsp; &lt;a href="http://www.unifiedlogging.com/"&gt;Unified Logging&lt;/a&gt; is simply another trace listener which sends data to another repository.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;The structure that exist in many organizations today does not help as the task of putting logging in is in the hands of developers.&lt;/p&gt; &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;So way is this the case?&amp;nbsp; Well, developers are not held accountable for knowing what is going on inside the software they build.&amp;nbsp; Many times there is an application support team that the responsibility gets thrown over the wall to.&amp;nbsp; The few developers out there that have had the responsibility of supporting an application and being proactive understand how important getting the right information AT THE RIGHT TIME IS.&lt;/p&gt; &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Logging information is half the story, in other words collecting information is one half to the solution.&amp;nbsp; The other half which is equally important is knowing when something happens that needs attention.&amp;nbsp; These are two sides of the same coin and each side has a different person held to different accountability standards.&lt;/p&gt; &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Because these two roles have different motives there needs to be a way to independently set up notifications outside of the information collection.&amp;nbsp; Whether it is &lt;a href="http://www.unifiedlogging.com/"&gt;Unified Logging&lt;/a&gt; or not this is primary objective of any software monitoring setup; let people get notified when they want to get notified, NOT when a developer says they should be notified. &lt;/p&gt; &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Then analysis comes in...&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/13-10-03/The_Logging_Truth.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/13-10-03/The_Logging_Truth.aspx</comments>
      <guid isPermaLink="false">c1fd0075-f33e-4257-9da4-67d49ebe55b2</guid>
      <pubDate>Thu, 03 Oct 2013 16:13:04 GMT</pubDate>
    </item>
    <item>
      <title>IIS Express Crashing</title>
      <description>&lt;p&gt;Recently I had an aggravating issue with IIS Express.&amp;#160; Turns out it was something very simple.&amp;#160; I added some warmup config to the web.config like below:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;applicationInitialization remapManagedRequestsTo=&amp;quot;Loading.html&amp;quot; skipManagedModules=&amp;quot;true&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add initializationPage=&amp;quot;/&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;lt;/applicationInitialization&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;For some reason this made IIS Express blow chunks; I assume that IIS Express does not support applicationInitialization.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Removed that piece of configuration as it was a nice to have and IIS Express runs as expected.&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/13-03-24/IIS_Express_Crashing.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/13-03-24/IIS_Express_Crashing.aspx</comments>
      <guid isPermaLink="false">309b3621-9896-49f1-82b0-77d999573d46</guid>
      <pubDate>Sun, 24 Mar 2013 19:45:50 GMT</pubDate>
    </item>
    <item>
      <title>Resiliency with Azure Caching</title>
      <description>&lt;p&gt;Using Azure caching can be easy when everything works though there have been many times when everything has not worked.&amp;#160; This post is applicable to dedicated caching (previously known as caching preview) and shared caching.&amp;#160; So how do you build in resiliency to your caching?&lt;/p&gt;  &lt;p&gt;First, let’s assume data is being cached from a SQL Azure database, though what is outlined in this post is applicable to other data stores as well. First off let’s outline what could go wrong.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;1)&lt;/b&gt; The cache becomes unavailable (could be because of a variety of reasons)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;2)&lt;/b&gt; The database become unavailable&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There are many reasons for number &lt;b&gt;one&lt;/b&gt; to happen and the easiest way to handle it is to fall back to retrieving from the database.&amp;#160; You can have code that looks something like the below:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;public RealyCoolCacheItem GetRealyCoolCacheItem(string key)      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var cacheItem = GetCacheItem(key);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (cacheItem == null)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var reallyCoolItem = RetrieveReallyCoolCacheItemFromDb(key);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (reallyCoolItem != null)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataCache.Put(key, reallyCoolItem, TimeSpan.FromHours(2));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return reallyCoolItem;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return (RealyCoolCacheItem)cacheItem.Value;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch (Exception ex)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Log the Error       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Would end up here if working with the cache throws      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return RetrieveReallyCoolCacheItemFromDb(key);       &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The second situation of a database going down is a bit more interesting.&amp;#160; The common direction is to have a fail over database though this is a big stick for a simple problem.&amp;#160; The cache is used to read frequently used data.&lt;/p&gt;  &lt;p&gt;The solution Unified Logging has implemented is to serialized cache data to blob storage each time it is retrieved from the database overwriting the existing blob if necessary.&amp;#160; If the retrieval from the database fails it then reads the last blob written and things keep working.&amp;#160; This is how the submission endpoints of &lt;a href="http://www.unifiedlogging.com/"&gt;Unified Logging&lt;/a&gt; keep up and running when these undesirable events occur.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;private RealyCoolCacheItem RetrieveReallyCoolCacheItemFromDb()      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Retrieve from DB HERE       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var reallyCoolDbItem = magicDb.GetReallyCoolItem();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Save the item to the secondary failover datastore      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //In this case the secondary store is blob storage       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // RetrieveReallyCoolCacheItemFromDb_Failover is a constant       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; failover.Save(RetrieveReallyCoolCacheItemFromDb_Failover, reallyCoolDbItem);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return reallyCoolDbItem;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch (Exception ex)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Log the error&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //The retrieval from the db has failed so get the item form the secondary datastore      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return failover.Retrieve&amp;lt;RealyCoolCacheItem&amp;gt;(RetrieveReallyCoolCacheItemFromDb_Failover);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;At this point you are probably saying, all well and good but what is “&lt;b&gt;failover&lt;/b&gt;”.&amp;#160; It is a simple class which implements a simple interface which has &lt;b&gt;Save&lt;/b&gt; and &lt;b&gt;Retrieve&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;public interface ICacheFailover      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; void Save&amp;lt;T&amp;gt;(string key, T serializableObject) where T : class;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; T Retrieve&amp;lt;T&amp;gt;(string key) where T : class;      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/13-03-06/Resiliency_with_Azure_Caching.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/13-03-06/Resiliency_with_Azure_Caching.aspx</comments>
      <guid isPermaLink="false">17e73ef3-3f0e-487f-bcf6-eba028a002e9</guid>
      <pubDate>Wed, 06 Mar 2013 18:55:19 GMT</pubDate>
    </item>
    <item>
      <title>Watch the JavaScript Widgets</title>
      <description>&lt;p&gt;Adding that piece of javascript to a web page is so easy to get a nice shiny widget, whether it be a like button, badge or a cool popup window but remember to keep in mind the page load times and the amount of javascript that is being downloaded to the clients browser.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pages get bloated very quickly and soon over half of what is downloaded for your page is javascript. In my experience very little of the javascript in question actually makes a better user experience.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What a lot of this javascript does is render out html and download images.&amp;#160; Let’s look at the steps, the javascript is downloaded from the vendors server, then it is run which produces html and downloads images and possibly more javascript is rendered to the browser.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;An alternative is to look at the output of the javascript is and do it yourself without the widget javascript. This means download the widget image put it on your server or cdn (and control the caching) and write the html.&amp;#160; Make a decision whether to have the cool fly over or not or if just the badge/image will suffice.&amp;#160; Easy does not always mean well preforming, sure one widget is not always bad but they add up quickly.&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/13-01-29/Watch_the_JavaScript_Widgets.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/13-01-29/Watch_the_JavaScript_Widgets.aspx</comments>
      <guid isPermaLink="false">259ffe56-b455-4a22-bb24-20a1d4566b42</guid>
      <pubDate>Tue, 29 Jan 2013 11:03:23 GMT</pubDate>
    </item>
    <item>
      <title>Unified Logging Releases WordPress plugin and PHP Connector</title>
      <description>&lt;p&gt;I’m pleased to announce that &lt;a title="Unified Logging" href="http://www.unifiedlogging.com" target="_blank"&gt;Unified Logging&lt;/a&gt; has released two new connectors, one for WordPress and one for PHP.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can find out more about these connectors from these related posts:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;- &lt;a title="Unified Logging Wordpress Plugin" href="http://blog.unifiedlogging.com/getting-started-with-unified-logging-wordpress-plugin/" target="_blank"&gt;&lt;strong&gt;Unified Logging WordPress Plugin&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt; &lt;li&gt;- &lt;a title="Unified Logging PHP Connector" href="http://blog.unifiedlogging.com/getting-started-with-php-connector/" target="_blank"&gt;&lt;strong&gt;Unified Logging PHP Connector&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;br /&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="https://portal.unifiedlogging.com/signup/" title="Unified Logging Signup"&gt;Sign Up and Get Collecting!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;br /&gt; &lt;br /&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/12-12-18/Unified_Logging_Releases_WordPress_plugin_and_PHP_Connector.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/12-12-18/Unified_Logging_Releases_WordPress_plugin_and_PHP_Connector.aspx</comments>
      <guid isPermaLink="false">24e06011-c3ff-4f1a-ae57-4cb381499526</guid>
      <pubDate>Tue, 18 Dec 2012 17:42:53 GMT</pubDate>
    </item>
    <item>
      <title>SkyDrive I want to Love You but&amp;hellip;.</title>
      <description>&lt;p&gt;Is &lt;strong&gt;SkyDrive&lt;/strong&gt; a good alternative to &lt;strong&gt;DropBox&lt;/strong&gt;?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;NO! and here is why.&amp;#160; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;1)&amp;#160; You cannot share a folder and have that folder sync to everyone's desktop thus creating a collaborative environment that also gives you notifications when something has changed.&amp;#160; I have found the notifications cut down on emails because people see when something is updated and things just seem to keep moving on.&lt;/li&gt;    &lt;li&gt;2)&amp;#160; When a folder or item is shared the person it is shared with does not have to accept the sharing invite.&amp;#160; This means I could get a list of Live Id’s and share a million items with each Live Id and it would totally clutter up their WEB BASED shared folder.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Box (formerly Box.net)&lt;/strong&gt; looks like a good alternative but the pricing is such that when you hit your 5 GB mark you have to go to the $15 dollar a month plan.&amp;#160; Given $15 a month gets you 1000GB which is a good deal if you are using it.&amp;#160; If not, this becomes a costly service.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I do think &lt;strong&gt;DropBox&lt;/strong&gt; needs to consider lowering their prices a bit and also consider a different pricing model that bridges the free to pro versions which would let someone purchase storage space.&amp;#160; I could easily justify $20 a year for 15GB of storage but it is hard for me to justify $100 for 100GB of storage because I will not use all that space.&amp;#160; Of course there are free ways of getting 15GB of storage…. &lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/12-12-15/SkyDrive_I_want_to_Love_You_but_hellip.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/12-12-15/SkyDrive_I_want_to_Love_You_but_hellip.aspx</comments>
      <guid isPermaLink="false">fb5c132d-5299-4140-b807-181eabaa1d42</guid>
      <pubDate>Sat, 15 Dec 2012 21:14:54 GMT</pubDate>
    </item>
    <item>
      <title>Windows 8 meh</title>
      <description>&lt;p&gt;I recently updated both my laptop (Mac Book Pro) and the beast of a desktop to windows 8.&amp;#160; The short of it is I feel it takes me longer to do things as compared to Windows 7.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will elaborate.&amp;#160; Every time I log in I press window+D to get to the desktop.&amp;#160; There are some hack arounds but why is the desktop suddenly a second class citizen?&amp;#160; These machines are not touch devices so looking at the metro ui is just annoying IMO.&amp;#160; I do not want to see full screen apps like live messenger on a laptop or desktop, sure on a slate/tablet which is touch enabled this makes sense.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I use the window key a lot to just start typing and find what I’m looking for.&amp;#160; Quite honestly I find the way this works in Windows 8 to be distracting and takes more time for me to find what I’m looking for.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’m hoping Microsoft will address these concerns which are shared by many more than just me and release an update which allows Windows 8 to work more like windows 7 for non touch enabled devices.&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/12-12-15/Windows_8_meh.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/12-12-15/Windows_8_meh.aspx</comments>
      <guid isPermaLink="false">404b6ec6-6591-4be9-bdc3-533de726eae7</guid>
      <pubDate>Sat, 15 Dec 2012 19:36:42 GMT</pubDate>
    </item>
    <item>
      <title>Unified Logging - Ditch the Monthly Subscription</title>
      <description>&lt;p&gt;Why pay for something you are not using or not using enough of!
&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Monthly subscriptions are a thing of the past for enabler products like &lt;a target="_blank" href="http://www.unifiedlogging.com" title="Unified Logging"&gt;Unified Logging&lt;/a&gt;.  &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;By &lt;strong&gt;enabler products&lt;/strong&gt; I mean software products that enable you to build better software products.
Unified Logging wants &lt;strong&gt;you&lt;/strong&gt; to build better software products.  This is the motivation and passion behind Unified Logging and why we have a per message pricing model which is very affordable so everyone can take advantage of it.
&amp;nbsp;
&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; &lt;a href="http://www.unifiedlogging.com/"&gt;Unified Logging&lt;/a&gt; - &lt;em&gt;Logging for All&lt;/em&gt;
&amp;nbsp;&lt;/p&gt;</description>
      <link>http://www.clydesdalesoftware.com/Blog/12-11-29/Unified_Logging_-_Ditch_the_Monthly_Subscription.aspx</link>
      <author>Clydesdale Software</author>
      <comments>http://www.clydesdalesoftware.com/Blog/12-11-29/Unified_Logging_-_Ditch_the_Monthly_Subscription.aspx</comments>
      <guid isPermaLink="false">9f4a683d-c336-4700-ad48-0a6634bd2761</guid>
      <pubDate>Thu, 29 Nov 2012 22:08:15 GMT</pubDate>
    </item>
  </channel>
</rss>