<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Reliable Systems</title>
	
	<link>http://reliable.esymmetrix.com</link>
	<description>People, Processes, Hardware and Software that deliver results every time, every where.</description>
	<lastBuildDate>Sun, 10 Oct 2010 19:33:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ReliableSystems" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="reliablesystems" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">ReliableSystems</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Philly Code Camp Presentations</title>
		<link>http://reliable.esymmetrix.com/speaking/philly-code-camp-presentations</link>
		<comments>http://reliable.esymmetrix.com/speaking/philly-code-camp-presentations#comments</comments>
		<pubDate>Sun, 10 Oct 2010 19:33:16 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Speaking]]></category>
		<category><![CDATA[API Design]]></category>
		<category><![CDATA[ISV]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Software Development Process]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=283</guid>
		<description><![CDATA[Slides from the presentations I did at the Philly Code Camp on commercial API design and running an Independent Software Vendor (ISV).]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone for coming to my sessions and the organizers for making the event run so well.  The facility was great and it&#8217;s really quite remarkable that the community can have such a strong one day training event without having to charge participants.  Microsoft was there to help out, but it was clearly a training event for the community not a Microsoft press event, exactly as it should be.</p>
<p>We had fun talking with the other vendors at the show, most notably Component One and the folks from CapTech.  This is the first time we&#8217;ve had a vendor booth at an event like this, so in many ways it was a dry run to get the hang of what it&#8217;s like.  We gave away a full copy of <a href="http://www.GibraltarSoftware.com">Gibraltar Analyst </a>as well as a year&#8217;s subscription to Hub at the conference, and got to talk with a lot of people about both Gibraltar and VistaDB.  We got some great real world examples of where <a href="http://www.VistaDB.NET">VistaDB </a>fits, which is  a big help as we work on the marketing for that going forward.</p>
<p>I presented two sessions -</p>
<h1>A Year in the Life of an ISV</h1>
<p>If you&#8217;re thinking about what it&#8217;d be like to ditch your corporate development job or consultant gig and strike to create &amp; market your own product (Or you&#8217;re a consultancy looking to create a product to diversify) this presentation shows what to expect on the path from shipping your first version to business success.</p>
<div id="__ss_5406765" style="width: 425px;"><strong><a title="A Year in the Life of an ISV" href="http://www.slideshare.net/gibraltarsoftware/a-year-in-the-life-of-an-isv">A Year in the Life of an ISV</a></strong><object id="__sse5406765" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=isvyearinthelife-101010134220-phpapp01&amp;stripped_title=a-year-in-the-life-of-an-isv&amp;userName=gibraltarsoftware" /><param name="name" value="__sse5406765" /><param name="allowfullscreen" value="true" /><embed id="__sse5406765" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=isvyearinthelife-101010134220-phpapp01&amp;stripped_title=a-year-in-the-life-of-an-isv&amp;userName=gibraltarsoftware" name="__sse5406765" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>This one&#8217;s always a little risky at a code camp because, well&#8230; there&#8217;s no code.  But, with the incredible diversity of tracks that were available at Philly Code Camp (13 tracks, over 60 sessions&#8230;) I think it&#8217;s also good to be able to &#8220;take a break&#8221;.  Next time I might go for the last session of the day to maximize the value of that.</p>
<h1>Designing APIs for Others</h1>
<p>I covered a range of real world lessons about commercial API development emphasizing the differences between in-house &amp; internal development and great, reusable commercial libraries.</p>
<div id="__ss_5406844" style="width: 425px;"><strong><a title="Designing APIs for Others" href="http://www.slideshare.net/gibraltarsoftware/designing-apis-for-others">Designing APIs for Others</a></strong><object id="__sse5406844" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=commercialapidesign-101010140122-phpapp02&amp;stripped_title=designing-apis-for-others&amp;userName=gibraltarsoftware" /><param name="name" value="__sse5406844" /><param name="allowfullscreen" value="true" /><embed id="__sse5406844" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=commercialapidesign-101010140122-phpapp02&amp;stripped_title=designing-apis-for-others&amp;userName=gibraltarsoftware" name="__sse5406844" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>I got some great feedback on this talk, particularly on an example that broke my own rule about samples: I tried to over-simplify it and instead created a &#8220;not best practice&#8221; sample.   I&#8217;ll fix that for next time!</p>
<p>If you saw either presentation, please be sure to <a title="Philly Code Camp Evaluation" href="http://codecamp.phillydotnet.org/2010-2/default.aspx" target="_blank">fill out the conference evaluation</a> and I&#8217;d love to hear your feedback &#8211; drop it in the comments below or send it to me directly at kendall.miller@gibraltarsoftware.com.</p>
<p>If you&#8217;d be interested in having me come talk at your code camp, .NET Users Group, or event &#8211; please reach out and let me know.   I&#8217;m always looking for new &amp; better ways to engage with the community.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=J4wwRTTLdqA:AaetOeeMdUg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=J4wwRTTLdqA:AaetOeeMdUg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=J4wwRTTLdqA:AaetOeeMdUg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=J4wwRTTLdqA:AaetOeeMdUg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=J4wwRTTLdqA:AaetOeeMdUg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/J4wwRTTLdqA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/speaking/philly-code-camp-presentations/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Rumors of Technology Death have been Greatly Exaggerated</title>
		<link>http://reliable.esymmetrix.com/development/the-rumors-of-technology-death-have-been-greatly-exaggerated</link>
		<comments>http://reliable.esymmetrix.com/development/the-rumors-of-technology-death-have-been-greatly-exaggerated#comments</comments>
		<pubDate>Sun, 03 Oct 2010 04:47:44 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Risks]]></category>
		<category><![CDATA[Technology Debt]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=259</guid>
		<description><![CDATA[Developers love to declare technologies dead when they're just hitting their stride.  We love to assume that new tech immediately replaces older options when it really is a lot more subtle.  Hold your head high when you pick an option that isn't the latest, just worry about delivering solutions.]]></description>
			<content:encoded><![CDATA[<p>One of the most popular saws in technology is the cry &#8220;That technology is dead!  Now it&#8217;s all the New Thing&#8221;.  Recently there was a <a href="http://www.riagenic.com/archives/363">big brouhaha over whether or not WPF was dead</a> &#8211; replaced with Silverlight or HTML5.  Arguments went <a href="http://www.softinsight.com/bnoyes/2010/06/01/WPFNdashIrsquomNotDeadYet.aspx">back </a>and forth through <a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/09/10/iphone-4-is-dead.aspx">blog articles</a>, twitter, whatever medium necessary all the way up to <a href="http://weblogs.asp.net/scottgu/archive/2009/10/26/wpf-4-vs-2010-and-net-4-0-series.aspx">Scott Guthrie</a> at Microsoft.  What really struck me through all of this was the improbable standard used for what constitutes a dead technology.</p>
<h2>Technology Lifecycle</h2>
<p>Portraying tech as either dead or not is too simplistic to be useful.  Instead, let&#8217;s consider a few states:</p>
<ul>
<li><strong>New</strong>:  Fresh technology still being fleshed out.  This is the leading edge of advancement.</li>
<li><strong>Mature</strong>:  Fully fleshed out and well understood.</li>
<li><strong>Deprecated</strong>:  This technology is planned on being made unsupported or removed in the next environment.</li>
<li><strong>Dead</strong>:  The technology has significant risks, is not supported and can&#8217;t be used on the latest environment.</li>
</ul>
<p>In this model there are a lot of shades of grey between Not Dead and Dead.  If you are building a big, customer critical system you probably want to be using mature technologies.  If you have one of those systems and it&#8217;s based on deprecated items you need to put together a strategy to migrate off of it before it goes dead.</p>
<h2>WPF: Still the new kid on the block</h2>
<p>Many arguments about something being dead are really focusing in on just the first two states:  Is it brand new and still a hotbed of development, or is it mature.  For example, compare WinForms and WPF in .NET.  The former is mature and the latter is still new.  Why would I classify WPF as new, three years after its initial introduction?</p>
<ul>
<li>It was significantly updated in .NET 4.0, which shipped just five months ago.</li>
<li>The ecosystem of controls and other libraries for WPF is still expanding rapidly.</li>
</ul>
<p>WPF is probably just about to transition to mature.  The ecosystem of controls is now large enough you can quickly develop most applications you might otherwise use WinForms for.  This wasn&#8217;t true at the start of 2010, but the last six months has seen an explosion of new libraries from all of the usual players.  Quite probably <strong>Microsoft won&#8217;t significantly mess with WPF going forward and that&#8217;s a good thing</strong>:  It means you&#8217;ll be able to take what you write today and move it forward to the next few versions of .NET over the next decade without significant rework.  <strong>Migration rework doesn&#8217;t add value to you or your customer</strong>.</p>
<h2>WinForms:  All grown up</h2>
<p>Now, my friends that do Silverlight or WPF development are probably howling right now that WinForms is long dead &amp; buried.  After all:  Microsoft doesn&#8217;t have a legion of developers working on it, and quite literally nothing was done in the last two releases of the .NET framework for it.  But it just doesn&#8217;t qualify as either deprecated or dead:</p>
<ul>
<li>WinForms on .NET will be supported for a long time, quite likely as long as .NET and Windows are because it&#8217;s built on GDI+ which is foundational to Windows.</li>
<li>WinForms is still being patched for security vulnerabilities and will be supported in the next major version of Windows.</li>
</ul>
<p>So even though it hasn&#8217;t been changed since .NET 2.0, it&#8217;s still a completely viable platform to develop even brand new applications on.  The fact is that a new application developed for WinForms <a href="http://support.microsoft.com/lifecycle/search/default.aspx?sort=pn&amp;alpha=.net+framework&amp;filter=filterno">will likely be officially supported by Microsoft as long as WPF</a>, certainly through several more major versions of Windows.  We&#8217;ve found that a number of our customers at Gibraltar Software and VistaDB are actively developing and starting new projects in WinForms because it&#8217;s a very productive environment.  It has a large body of third party controls, the tools &amp; techniques to develop for it are well understood, and in the end that delivers results.</p>
<h2>Visual Basic 6: Dead Man Walking</h2>
<p>If you want to look at a technology teetering on the edge of death take VB 6.  You can run it on the latest environment (Windows 2008 R2 and Windows 7 both support VB 6, no joke!) but it isn&#8217;t being supported or patched even for security problems.  That puts it hovering right between deprecated and dead.  If I had to bet money, <strong>VB 6 will still be alive and kicking on Windows 8</strong> but I would definitely not develop any new VB 6 applications and I&#8217;d be actively migrating away from them.</p>
<h2>People Love a Winner</h2>
<p>Developers are just people &#8211; and we love winners.  This is the best car, that&#8217;s the best language, this is the best database.  There is so much going on in software that it isn&#8217;t feasible for any one person to assimilate all of the options available, relate them to a problem at hand and truly sort out the one very best match between them.  Despite this, we&#8217;re asked to do that all of the time: so anything that makes our job more complicated we want to fight.  We don&#8217;t want two ways to make web applications, two ways to make client user interfaces, etc.</p>
<p>We&#8217;d prefer a nice clean line of replacement where<strong> new, cooler things replace older stodgy things</strong>.  By this logic, WPF replaced WinForms which replaced MFC or something like that.  Silverlight is a little of an odd duck, but sure &#8211; put it in the same line now that you can run out of the browser with it.</p>
<h2>Get Results the Mature Way</h2>
<p>Just because Microsoft doesn&#8217;t have an army of developers actively changing it and isn&#8217;t beating the drum about it in every press event doesn&#8217;t mean you shouldn&#8217;t use it.  In fact, look at it another way:  If Microsoft is still rapidly evolving a technology you should really think about whether you want to jump in.  Since its changing you can&#8217;t bank on a body of best practices or an ecosystem of third party libraries.  You&#8217;re most likely to run into platform defects in design &amp; implementation, and most likely to be heartbroken when the next version of .NET breaks your clever hack or makes it completely irrelevant.</p>
<p>In the end, what are you trying to do?  If you&#8217;re focused on getting results and solving real-world problems for customers, stick with mature.  If you want to hang out with the cool kids and be a pioneer have fun with the latest new thing.  Just know that it&#8217;s the pioneers that end up on the ground with arrows in their backs.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=W3H-t76bFhs:ueguyhmT9qg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=W3H-t76bFhs:ueguyhmT9qg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=W3H-t76bFhs:ueguyhmT9qg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=W3H-t76bFhs:ueguyhmT9qg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=W3H-t76bFhs:ueguyhmT9qg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/W3H-t76bFhs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/development/the-rumors-of-technology-death-have-been-greatly-exaggerated/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Customers, Clients or Captive?</title>
		<link>http://reliable.esymmetrix.com/management/customers-clients-or-captive</link>
		<comments>http://reliable.esymmetrix.com/management/customers-clients-or-captive#comments</comments>
		<pubDate>Wed, 08 Jul 2009 19:42:18 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Accountability]]></category>
		<category><![CDATA[IT Management]]></category>
		<category><![CDATA[Mindset]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://kendall.srellim.org/?p=21</guid>
		<description><![CDATA[Treating the relationship between internal departments as a Vendor/Customer has its appeal, but often leads to higher costs, strained relationships, and lost business opportunities.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s very popular to consider the internal users of IT services as customers, acting like IT is an in-house service provider that the rest of the company purchases services from. The goal behind this is usually a reaction to a real or imagined belief that IT isn&#8217;t being responsive to the needs and budget of the rest of the company. The thinking goes that by having IT think of the rest of the company like an outside organization would of its customers, you can ensure better accountability and buy-in. Typically, organizations that go down this road also adopt a charge-back model where the IT organization charges back all or nearly all of its costs directly to the other divisions within the company that are consuming those services.</p>
<p>While there are several positive aspects that can come from this approach, there are several problems that can easily be created that stem from the problem that in most cases the rest of the company really isn&#8217;t a customer in the classical sense. Why? <strong>Because they lack a true buying choice</strong>. Furthermore, it generally isn&#8217;t in a company&#8217;s overall best interest for their divisions to really be customers of their own organization.</p>
<p>The original motivation for taking these approach is usually to address several issues:</p>
<ul>
<li><strong>Division buy-in on costs and priorities: </strong>If they are directly paying the bill, they are going to pay for what they want and not ask you for things they aren&#8217;t willing to pay for.</li>
<li><strong>Clear status and communication: </strong>The project reporting and communication model is simpler for everyone to get their head around if it&#8217;s based on something we&#8217;ve very familiar with. Each player can figure out their part.</li>
</ul>
<p>If you model the relationship between the IT organization and the rest of the company as a service provider &#8211; customer relationship, it&#8217;s easy to miss the transitive qualities of this: if they are your customer, you are their <em>vendor</em>. The word <strong>Vendor</strong> casts things in a different light: If you&#8217;re a sufficiently large organization you probably have a vendor management office whose sole job is to ensure you pay the least you can for things and fosters competition between vendors. Their job is largely to keep the company from getting too cozy with any one vendor. Are you ready to be just another vendor, like the one that bids annually to supply fresh coffee or office supplies?</p>
<h2>Benefits</h2>
<p>There are several good things that this model will tend to create.</p>
<ul>
<li><strong>Defensible functional requirements:</strong> Unreasonable requirements tend to be expensive relative to their value, and the division is more ready to discard them.</li>
<li><strong>Role Clarity:</strong> The Vendor/Customer relationship is relatively easy to understand, and each party can generally determine their role quickly. When there are disputes, there&#8217;s a natural framework for resolution.</li>
</ul>
<h2>Challenge One: Buying Choice</h2>
<p>It isn&#8217;t a long road from treating your internal divisions as customers until they look at you as a vendor. Once they consider you just another vendor (like the one they selected to provide fresh coffee to the office, or office supplies) they&#8217;ll want the advantages that come along with being a customer. For example, it&#8217;ll seem clear to them that it should be <em>optional</em> to use your services. This will feel very reasonable to upper management &#8211; it&#8217;s all part of the transitive nature of IT being accountable.  If IT can&#8217;t deliver a service at the best price, why not go to another provider?</p>
<p>This will likely start with something that will be difficult to argue against &#8211; such as a large software development project, perhaps in a language that your in-house talent isn&#8217;t familiar with.  Now, what about hosting for that product?  If you are charging back true costs for your data center to each division, you are unlikely competitively priced with what a division could get from Rackspace or Peer1.  It isn&#8217;t necessarily that those companies are more efficient than you are at doing the same thing (indeed, if they are then you should broker your own contract with them) but instead that it isn&#8217;t an apples-to-apples comparison.</p>
<h2>Challenge Two: Implied Requirements</h2>
<p>Whenever an internal IT organization takes on a project, there are a number of implied requirements that affect cost and schedule. Some of these requirements are from the IT organization itself (like technology choices) and others are from the corporation (role of internal staff and contractors, project management and reporting standards, etc.). When a division looks to bid out work to an external source, these requirements are usually unstated because in many cases they aren&#8217;t requirements the <em>division </em>has on the solution.</p>
<p>Another way to look at it is that any constraint on the solution that the customer (the division in this case) doesn&#8217;t have or care about is an implied requirement and likely a competitive disadvantage when comparing internal IT costs with external costs. In broad strokes, the difference in requirements is that a division&#8217;s requirements are almost entirely about outcomes, not methods: They care about the results their users get, not how they are achieved. IT organizations often focus their requirements on how results are achieved (using this technology, in that enterprise architecture, developed with our RUP-based approved process, tracked by our PMO) and they defer to the division the functional requirements.</p>
<h2>Local Maxima and Minima</h2>
<p>When each division or cost center is free to chose what services they are willing to pay for, they will converge over time on <strong>only those services that are good for them</strong>. Establishing shared services is generally challenging because each party will want to ensure that everyone is paying their fair share. This is often tricky to define &#8211; should it be proportioned by feature usage? Capacity?  This often creates a &#8220;first mover disadvantage&#8221; scenario where no part of the company wants to be the first to get a new service such as a database server or SharePoint Portal because they&#8217;ll be hit with the entire cost of it unless someone else comes along.</p>
<p>Secondarily, upgrading services gets challenging because no drop of rain believes it is responsible for the flood: If you want to upgrade to Exchange 2007 from Exchange 2003, one division can easily say that they don&#8217;t believe it&#8217;s necessary and thus decline the costs. If you need a larger server to house SharePoint, who is going to get the bill? A game of chicken often gets created where multiple parties all want a service, but no one wants to be the first to ask and risk subsidizing everyone else.</p>
<p>With each cost center pushing to only pay for those things it perceives sufficient direct value to take on, they are making decisions only based on what gives them the best cost or maximum value. This isn&#8217;t likely to align with providing the overall lowest costs for the company. For example, three separate departments could easily decide to implement their own direct attach storage for disk because none of them feels they can justify the cost of a SAN, however together it would be less expensive to construct and maintain a central SAN environment with SAN backup.</p>
<p>There are some straightforward exceptions to this problem where shared services are generally easy to get consensus on and cost out. Typically these are raw infrastructure services such as email or file storage where there are clear units of measure that allow for proportional billing (mailboxes and gigabytes used, for example).</p>
<h2>An Alternative: Clients, not Customers</h2>
<p>If the Customer/Vendor model isn&#8217;t the overall best approach for a company, what alternative model can provide the benefits without the unintended consequences? How about a term that&#8217;s between User (which has accumulated a substantially negative connotation) and Customer &#8211; <strong>Client</strong>.  A quick trip to the dictionary shows that a client is <em>any person or group that is the party for which professional services are rendered</em>, which fits reasonably enough.</p>
<p>As your clients, they still are entitled to a great deal, just like customers would be.  As the client of the project, they:</p>
<ul>
<li><strong>Determine success &amp; failure: </strong>Your project isn&#8217;t successful just because it follows the corporate processes or works on the corporate approved IT infrastructure; those are the constraints on how you solve problems that are immaterial to your client.  Success is determined by whether you achieved the goals the client created.  That may mean you need to do some extra communication to make sure your client knows that their goals were met, even if that&#8217;s not in the standard process.</li>
<li><strong>Decide if it&#8217;s worth the price: </strong>In the end, the problem may just not be worth solving.  Many things can be done but the cost in time and distraction exceeds the value.</li>
</ul>
<p>Unlike a customer, since you&#8217;re part of the same organization you can share with the client your insight into the costs and risks of the project in a way that no vendor ever could.  In the end this creates the best partnership that delivers long lasting results.</p>
<h2>A final note</h2>
<p>If you don&#8217;t treat your users as clients, odds are very good they will eventually get themselves a buying choice.<strong> When they do, they won&#8217;t chose you</strong>. Don&#8217;t let it come to that, it isn&#8217;t ultimately in their interest, your interest, or your company&#8217;s interest.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=oQvSz-a1AMs:PPFEGsaMVEw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=oQvSz-a1AMs:PPFEGsaMVEw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=oQvSz-a1AMs:PPFEGsaMVEw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=oQvSz-a1AMs:PPFEGsaMVEw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=oQvSz-a1AMs:PPFEGsaMVEw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/oQvSz-a1AMs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/management/customers-clients-or-captive/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Walking the Walk – Gibraltar Moves You Down the Path</title>
		<link>http://reliable.esymmetrix.com/development/walking-the-walk-gibraltar-moves-you-down-the-path</link>
		<comments>http://reliable.esymmetrix.com/development/walking-the-walk-gibraltar-moves-you-down-the-path#comments</comments>
		<pubDate>Fri, 19 Jun 2009 07:29:10 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Gibraltar]]></category>
		<category><![CDATA[IT Management]]></category>
		<category><![CDATA[product feedback]]></category>
		<category><![CDATA[Software Development Process]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=229</guid>
		<description><![CDATA[f you do development for Microsoft .NET, I'd encourage you to go over and download our commercial release of Gibraltar.  You'll get great documentation, a free agent you can use like a flight recorder "black box" in every application you create, and a trial for a tool that will make you seem wise beyond your years.  ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fwalking-the-walk-gibraltar-moves-you-down-the-path"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fwalking-the-walk-gibraltar-moves-you-down-the-path&#038;bgcolor=FF9900&#038;cfgcolor=FFFFFF&#038;cbgcolor=175d92" border="0" alt="kick it on DotNetKicks.com" /></a><br />
If you&#8217;ve read more than one or two articles from Reliable Systems you probably have gotten the sense that we worry a lot about how to <strong>make things just work</strong>.   It&#8217;s that quality of anything where you get what you expect and what you need every time.  It can be in an experience (like a fun drive down a country road) or a product.  As a company if you can do this over and over you create a brand people develop a strong emotional connection to:  Apple, John Deere, Starbucks&#8230;</p>
<p>When you want to create a product that just works, you need to get all of the details right &#8211; from packaging through to maintenance and upkeep.  It&#8217;s not one thing that&#8217;s important, it&#8217;s all the things.  We are often engaged by senior management within a client when things aren&#8217;t working, and there&#8217;s conflicting opinions on why.  Usually along the path technology is being blamed: Not enough, not the latest thing, not someone&#8217;s favorite thing, <em>not working</em>.  As we dig into the situation, rarely is the technology the dominant factor:  More often, it&#8217;s how the technology is being integrated with the people and processes that all have to work together.</p>
<p>One of the first things we have to do in these engagements is to establish the real facts on the ground:  What exactly are the problems in the system, who&#8217;s doing what with it, how many times.  It comes down to establishing metrics to make sure time and attention are paid to the parts that make the biggest difference in the outcome.  Armed with these facts in a form the business can consume it&#8217;s possible to create plans of action that deliver virtually regardless of budget.</p>
<h2>So let&#8217;s make this easier</h2>
<p>The biggest trick is then getting the facts you need on an ongoing basis, easily, and in a form that the business can consume.  For over a decade we&#8217;ve been building instrumentation right into the systems we&#8217;ve worked on.  We&#8217;ve created a variety of toolkits to make this easier over the years, refining them as technology and our experience has changed.</p>
<p>About 18 months ago we decided it was time to really invest down this path.  We believe in routinely <a title="Reliable Systems: Key Infrastructure Information to Capture" href="http://reliable.esymmetrix.com/infrastructure/monitoring/key-infrastructure-information-to-capture">capturing key computer metrics</a> along with whatever logging the application can do on its own.  We won&#8217;t do a project without using a great logging system that includes a strategy for managing runtime exceptions.   Now that we&#8217;re collecting all this data, we need to have a way of managing the raw data and turning it into valuable business data.</p>
<p>The challenge is that businesses don&#8217;t get up in the morning and say &#8220;what our customers want us to do is have great internal tools&#8221;, so you&#8217;re nearly always doing this on the cheap:  Borrowing time from development projects internally to cobble together various free or cheap solutions.  Frankly, we got tired of having to create new solutions with each client out of the margins of each project.  So, we pooled our best thinking from all of the work we&#8217;ve done (including a previous product that we did license to our clients over the past decade called CLAS) and started creating Gibraltar.</p>
<h2>Rock Solid from Initial Release</h2>
<p>With Gibraltar we wanted much more than a log system.  Of course, it had to be a log system too &#8211; and a really easy to use one that could work with each of our client applications.  More than that, it had to:</p>
<ul>
<li>Automatically capture all of the performance metrics we wanted.</li>
<li>Integrate with existing logging available on the platform, including whatever a client might already be doing (like custom in-house options)</li>
<li>Be absolutely, positively, for sure safe to run in production no matter what.   That means it can&#8217;t ever use too much disk space or disk throughput or block the application.</li>
<li>Not use more than 5% of the performance of the app</li>
<li>Include all of the tools necessary to get data from where it was collected to the people that could get value out of it</li>
<li>Include the ability to look at the detailed session data up to high level analysis:  What&#8217;s the error rate?  What&#8217;s it correlate to?  Are we doing better or worse in this version?</li>
</ul>
<p>From this initial sketch into everything we wanted, we&#8217;ve spent 18 months including four beta periods (from 2-4 months each) to refine the vision with real customers and real scenarios.  It was essential to us that this not be just a tool for techies but be ready for use by people with a wide range of skills.  It had to be pretty and just do what you wanted, when you wanted it to.</p>
<p>We&#8217;ve added a lot of capabilities along the way:  It can generate print-ready reports about application reliability that can communicate with senior management, you can define all kinds of custom metrics to easily track how your application is used and by whom.  We ran a number of betas to be sure that we had hit every goal we have above.  We&#8217;re happy to report that Gibraltar is in use within large deployments of custom applications, commercial applications, and small deployments right down to our corporate web site.</p>
<p>This tool isn&#8217;t for everyone &#8211; Our clients are nearly all Windows shops, and if they do any custom development it&#8217;s almost invariably in .NET, so that&#8217;s what we&#8217;ve targeted.   But, if you&#8217;re interested in easily getting real data on not just infrastructure (how well the application is running) but whether or not it <em>just works</em>, have we got an easy path for you.  You can see a quick demo video of how it works technically at <a title="See Gibraltar .NET Logging and Metrics Integration" href="http://www.gibraltarsoftware.com/See/Default.aspx" target="_self">Gibraltar Software</a>.</p>
<p>You also don&#8217;t have to take my word for it at all, you can <a title="VistaDB:  Gibraltar opens beta to new logging and reporting tool" href="http://www.vistadb.net/blog/post/2009/04/20/Gibraltar-opens-beta-to-new-logging-and-reporting-tool.aspx" target="_self">hear what one of our beta users did with it</a>, which is really a more compelling story than what we might say.</p>
<p>I think you&#8217;ll find that our work sweating a lot of little details, from <a title="Intellisense Driven API Design" href="http://rocksolid.gibraltarsoftware.com/development/dotnet/intellisense-driven-api-design" target="_self">the exact design of the API</a> and making sure the <a title="Good Help is Hard to Find" href="http://rocksolid.gibraltarsoftware.com/development/good-help-is-hard-to-find" target="_self">documentation was complete</a> to rewriting our own licensing system to be very IT Admin friendly.  If we didn&#8217;t get a detail right, <a title="Gibraltar Software: Contact Us" href="http://www.gibraltarsoftware.com/About/Contact.aspx" target="_blank">we want to know</a>.  And the great news is that we&#8217;ve just begun:  We&#8217;re obsessed with the little things, and you can bet we&#8217;ll keep listening and watching to make it better.  Of course, this is made a lot easier because we&#8217;re using Gibraltar to monitor itself, and a select group of our users is sending that information back to us so we can make sure it j<strong>ust works in the field for real people</strong>.</p>
<h2>It&#8217;s easy to start your journey</h2>
<p>If you do development for Microsoft .NET, I&#8217;d encourage you to go over and download our commercial release of Gibraltar.  You&#8217;ll get great documentation, a free agent you can use like a flight recorder &#8220;black box&#8221; in every application you create, and a trial for a tool that will make you seem wise beyond your years.  And if you pay us the ultimate honor and purchase a permanent license, I can assure you that you won&#8217;t find anyone more committed to your satisfaction than we are.<br />
<a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fwalking-the-walk-gibraltar-moves-you-down-the-path"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fwalking-the-walk-gibraltar-moves-you-down-the-path&#038;bgcolor=FF9900&#038;cfgcolor=FFFFFF&#038;cbgcolor=175d92" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=E3ouFD9U68c:b3kLxWH9Omc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=E3ouFD9U68c:b3kLxWH9Omc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=E3ouFD9U68c:b3kLxWH9Omc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=E3ouFD9U68c:b3kLxWH9Omc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=E3ouFD9U68c:b3kLxWH9Omc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/E3ouFD9U68c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/development/walking-the-walk-gibraltar-moves-you-down-the-path/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Watch the Gazelles Turn</title>
		<link>http://reliable.esymmetrix.com/infrastructure/watch-the-gazelles-turn</link>
		<comments>http://reliable.esymmetrix.com/infrastructure/watch-the-gazelles-turn#comments</comments>
		<pubDate>Sat, 13 Jun 2009 02:31:38 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[IT Management]]></category>
		<category><![CDATA[Technology Selection]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=224</guid>
		<description><![CDATA[It is very tempting to be one of the herd of gazelles in technology.  Every time there&#8217;s  a sense of a shift in the wind, everyone starts to run in a new direction.  For the past year I&#8217;ve been reading about how it&#8217;s all going to be laptop computers from here on out.  In fact, [...]]]></description>
			<content:encoded><![CDATA[<p>It is very tempting to be one of the herd of gazelles in technology.  Every time there&#8217;s  a sense of a shift in the wind, everyone starts to run in a new direction.  For the past year I&#8217;ve been reading about how it&#8217;s all going to be laptop computers from here on out.  In fact, not even full fledged laptops, but netbooks &#8211; computers with small screens and small keyboard who&#8217;s main distinguishing characteristic is that they&#8217;re less of a computer than anything else around.</p>
<p>If all this sounds a little off kilter from reality, perhaps a few hard numbers would help:</p>
<p>Quoting<a title="Computer World:  Do business desktop PC's have a future?" href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;taxonomyName=windows_and_linux_pcs&amp;articleId=9134320&amp;taxonomyId=64&amp;intsrc=kc_top" target="_blank"> Computer World</a>, who asked &#8220;Do Business Desktop PCs have a future?&#8221;:</p>
<blockquote><p>While desktop PCs account for the bulk of personal computers sold to  enterprises, the gap in laptop sales to enterprises is closing. Of 168 million  PCs sold worldwide to professional organizations in 2008, about 95 million were  desktops and 73 million were laptops. That&#8217;s compared to 94.6 million desktops  and 47.3 million laptops that shipped in 2006.</p></blockquote>
<p>Now, as with any statistics there&#8217;s two ways to look at these numbers:</p>
<ol>
<li>Laptops have grown tremendously in their total percentage of the market, and that growth rate has them on track to take over the world.</li>
<li>The majority of the growth in computer sales is coming in the form of laptops.</li>
</ol>
<p><img class="alignright size-full wp-image-227" title="gazelle" src="http://reliable.esymmetrix.com/wp-content/uploads/gazelle.jpg" alt="gazelle" width="170" height="115" />The gazelles are taking the first road.  And why not?  <strong>People love to assume the disruptive is true</strong>, it&#8217;s a lot more interesting.  Before you charge down that road, consider what seems likely.  There are a few problems with the first conclusion:</p>
<ul>
<li><strong>Two data points don&#8217;t make a pattern: </strong> If you follow the trend back farther, the sales of PC desktops has held up consistently, but laptop sales go up and down.  This would seem to indicate that the most likely interpretations of the data are that either the overall market is expanding (for example by people having two systems) or that this is a momentary, periodic surge in laptop purchases.</li>
<li><strong>Past large growth rarely projects forward: </strong> Just because there was a large growth in one year (either in absolute or percentage turns) doesn&#8217;t mean it will repeat at all.  It&#8217;s just as likely that the next year pattern will be flat or even retreat.</li>
</ul>
<p>So before you see the first twitch and assume it signals a migration of the whole herd, step back and think through the underlying facts.  Is this really the first sign of a monumental shift?  Or just another twitch of the needle?  Then look at your own situation.</p>
<p>Now, we have a few laptops, but we have more hard core desktops &#8211; the laptops are used for on the road presentations or working at Starbucks for fun.  Of course, we&#8217;re developers so we&#8217;re in the category of users that are always excluded from the norm.  But what&#8217;s not to love about a desktop?  For the same money they will always be faster and more capable than a laptop because they don&#8217;t have the burden of being small or extra power efficient.  Even if you buy into the idea that everything will be run through the web so computers are just glorified terminals&#8230;  Something still has to compose all of those web pages and make it all come together, and web apps can burn a surprising amount of processor and RAM locally.</p>
<p>In the end, I think we&#8217;re seeing a lot of folks buying second computers or getting additional laptops for other uses that complement their primary work computer experience.  Additionally, there are folks in emerging markets that need what laptops offer (self-contained, reliable power) more than performance but this reflects an increase in the overall market, not a shift in the existing market.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=etrOkDLKSlU:zfj6CbSksp4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=etrOkDLKSlU:zfj6CbSksp4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=etrOkDLKSlU:zfj6CbSksp4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=etrOkDLKSlU:zfj6CbSksp4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=etrOkDLKSlU:zfj6CbSksp4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/etrOkDLKSlU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/infrastructure/watch-the-gazelles-turn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Wallpaper</title>
		<link>http://reliable.esymmetrix.com/development/software-wallpaper</link>
		<comments>http://reliable.esymmetrix.com/development/software-wallpaper#comments</comments>
		<pubDate>Mon, 18 May 2009 04:07:06 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Technology Debt]]></category>
		<category><![CDATA[Technology Migration]]></category>
		<category><![CDATA[Technology Selection]]></category>
		<category><![CDATA[Yak Shaving]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=207</guid>
		<description><![CDATA[When I was growing up I spent a lot of time with my father doing woodworking.  One lesson you pick up pretty quick when woodworking is that you have to keep the work clean at each step. If you take a piece of wood and don&#8217;t sand the surface smooth it won&#8217;t take a stain [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fsoftware-wallpaper"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fsoftware-wallpaper&#038;bgcolor=FF9900&#038;cfgcolor=FFFFFF&#038;cbgcolor=175d92" border="0" alt="kick it on DotNetKicks.com" /></a><br />
When I was growing up I spent a lot of time with my father doing woodworking.  One lesson you pick up pretty quick when woodworking is that you have to keep the work clean at each step.</p>
<p><img class="alignleft size-thumbnail wp-image-210" title="sanding" src="http://reliable.esymmetrix.com/wp-content/uploads/sanding-150x150.jpg" alt="sanding" width="150" height="150" /></p>
<ul>
<li>If you take a piece of wood and don&#8217;t sand the surface smooth it won&#8217;t take a stain evenly.</li>
<li>If you let glue creep out of the joint and get on the wood, the stain won&#8217;t look right in that spot.</li>
<li>A piece of dust on the surface will get magnified by each layer of varnish.</li>
</ul>
<p>Each layer depends on what&#8217;s underneath it.  Any flaw in a lower layer will tend to get magnified and distorted by layers above it.</p>
<p>Whenever I get involved in enterprise architecture I get reminded of this analogy because I often run into irrational exuberance that you can add a layer to an existing system and paint over the flaws underneath.  I was involved in a few projects like that early in my career:  It was too hard to talk directly to the mainframe from the web server so you put a layer in front of that.  There was already a C++ layer doing a DCE RPC gateway, but that was also too hard to program against for large use so we added a COM interface to the DCE RPC gateway.  We made some prototypes and validated the concepts and charged in full bore, only to run into big delays and teething problems near the end of the project trying to get everything polished up and suitable for production.</p>
<p>The problem is that at each turn you may be making the developer&#8217;s short term life easier by giving them an interface more natural to their preferred programming environment but since it just builds on the layers underneath it will end up with all of the limitations they have &#8211; and they can show up in the most surprising places.  For example, we ran into problems where certain input would cause failures which we ultimately discovered was caused by % being used as an insertion marker in a gateway library several layers underneath what we were doing &#8211; so at best it would drop the % and the following character, but at worst you&#8217;d get back a random data element if you managed to create a valid insertion name.</p>
<p>Layering issues are particularly problematic because they tend to be data sensitive and highly situational depending on how the various layers interact.  This means that it&#8217;s very difficult to design a comprehensive test plan:  The<strong> system can act as if it&#8217;s nondeterministic</strong>, making it infeasible to state with certainty that the various modes of the software have been demonstrated by a test plan.  At best, you can say that it worked for the exact test inputs it was given.  When you do have a problem in production, the multiple technologies in multiple layers can make it particularly hard to debug because it requires <strong>a lot of chairs around the table </strong>to hit all of the possible players.</p>
<h2>Are you decorating?  Or covering up the problem?</h2>
<p>Whenever you&#8217;re part of a team proposing adding a new layer over an existing system to fix its problems or adapt it to a new situation, you should be suspicious.  Is this really the right path to make the API look right?  Or are you temporarily covering over a problem?  If it&#8217;s the latter, it&#8217;ll just show through later &#8211; and now you have two problems to deal with not one.</p>
<p><img class="alignright size-full wp-image-211" title="floral-wallpaper" src="http://reliable.esymmetrix.com/wp-content/uploads/floral-wallpaper.jpg" alt="floral-wallpaper" width="112" height="309" />There are good occasions to add a new layer:</p>
<ul>
<li> <strong>To smooth technology upgrades: </strong>When you are shifting technologies, say from COM to .NET, you may want to create a custom layer as a new standardized interoperability adapter which will let you separate the upgrade problem into phases and handle them independently.</li>
<li> <strong>To support multiple technologies: </strong>Sometimes you need to support multiple types of clients &#8211; varying either by environment (say Java and .NET) or major architecture (say Client/Server and Web sites).</li>
</ul>
<p>And a few suspect ones:</p>
<ul>
<li> <strong>Mitigate architecture risk: </strong>To isolate a new subsystem architecture from the main codebase. We&#8217;ve heard this one before &#8211; you want to try out something new and iffy, like say Entity Framework.  To contain the risk, you want to introduce a layer between it and the rest of the platform so if it all goes bad you can easily swap it out.</li>
<li> <strong>Impedance Mismatch:</strong> You need to interact with something, but just don&#8217;t like the way it works. Perhaps it throws around ADO.NET recordsets and you prefer to work with strongly typed objects.</li>
</ul>
<p>If you find yourself in one of the suspect scenarios, you should seriously question whether the work you&#8217;d do to create and validate a layer is really forward progress or just<a title="Reliable Systems:  Effort Doesn't Equal Value" href="http://reliable.esymmetrix.com/development/effort-doesnt-equal-value" target="_self"> yak shaving</a>.  Before you go down the path, you should seriously estimate:</p>
<ul>
<li> <strong>Fixing the underlying problems:</strong> If the underlying layer(s) aren&#8217;t doing what you need, what would it take to get them changed (in the technology they&#8217;re currently in) so you could work without adding another layer? That puts the responsibility where it belongs, and keeps complexity under control. Do a full estimate of this approach.</li>
<li> <strong>Make a parallel layer:</strong> If you ignore the powerful aversion to creating duplicate routes to the same data, what if you created an alternate path to the underlying information. It may be that you bypass all of the layers or just some of the layers (such as down to the stored procedures that call the database). While this creates duplication, it lets each platform work in their own optimal way and allows for deterministic testing.</li>
<li> <strong>Using the existing layer as it is:</strong> It&#8217;s easy to overstate the impact of reusing a known system with issues. There&#8217;s a natural tendency to not realize that you&#8217;re comparing a well understood but flawed system with an unknown solution with unknown problems. Trading known problems for unknown problems makes everyone happy at the start of a project, but creates significant project risk downstream.</li>
</ul>
<h2>Put down the shovel and back away</h2>
<p>When you create a new layer on top of existing layers you are often digging your project into trouble, both <a title="Reliable Systems:  The best technology for you" href="http://reliable.esymmetrix.com/development/the-best-technology-for-you" target="_self">now and downstream</a>.  In addition to problems with each layer creating a leaky abstraction, deploying and supporting these highly layered systems is extraordinarily challenging.  It becomes prohibitively expensive to make changes in lower layers because of the high chance of unexpected side effects showing up as defects in dependent applications.  More often than not, each layer has to be held static with any changes accommodated by creating new queries or items at each layer to be served in parallel with the older methods.</p>
<p>Before you go ahead, be sure you look at the total lifecycle cost of that decision, including support and maintenance.   Have a good or bad experience with putting up some software wallpaper?  Let us know in the comments!<br />
<a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fsoftware-wallpaper"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2freliable.esymmetrix.com%2fdevelopment%2fsoftware-wallpaper&#038;bgcolor=FF9900&#038;cfgcolor=FFFFFF&#038;cbgcolor=175d92" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=UfmMGGFUuWU:_jue-hibEmU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=UfmMGGFUuWU:_jue-hibEmU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=UfmMGGFUuWU:_jue-hibEmU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=UfmMGGFUuWU:_jue-hibEmU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=UfmMGGFUuWU:_jue-hibEmU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/UfmMGGFUuWU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/development/software-wallpaper/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Browser Game Changeup</title>
		<link>http://reliable.esymmetrix.com/development/browser-game-changeup</link>
		<comments>http://reliable.esymmetrix.com/development/browser-game-changeup#comments</comments>
		<pubDate>Tue, 12 May 2009 06:09:40 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[IT Management]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=135</guid>
		<description><![CDATA[Hi. My name is Kendall Miller, and I&#8217;ve been an Internet Explorer user for 12 years. I know it&#8217;s very uncool to admit &#8211; IE is only available on Windows, isn&#8217;t the most standards compliant, it has a bad reputation for security and there aren&#8217;t 1000 cool addins for it. And oh yeah, it&#8217;s from [...]]]></description>
			<content:encoded><![CDATA[<p>Hi.  My name is Kendall Miller, and I&#8217;ve been an Internet Explorer user for 12 years.</p>
<p>I know it&#8217;s very uncool to admit &#8211; IE is only available on Windows, isn&#8217;t the most standards compliant, it has a bad reputation for security and there aren&#8217;t 1000 cool addins for it.  And oh yeah, it&#8217;s from Microsoft &#8211; aren&#8217;t they evil?</p>
<p>But here&#8217;s the thing:  From day one,<strong> it was the practical choice. </strong>Not because it was distributed with Windows, but because it worked.  Worked as in it was easy to keep upgraded (thank Windows Update for that) it could do anything we needed it to (and yes, that used ActiveX) and it supported integrated authentication &#8211; so users could just point their web browser at our company sites and not get any login prompts, just get access to all the resources they needed.</p>
<p>Not only that, but<strong> IE was really forgiving</strong>.  The thing that many people miss is that at the end of the day it isn&#8217;t about being standards compliant per se, it&#8217;s about the web browser just working.   Put another way, while you want to develop using something really strict, when it comes time to hand it over to your users<strong> do what I meant, not what I said is best</strong>.  Frankly, I was amazed at how tolerant IE was of HTML errors.  In the end, do you think that users would say <em>Thank you for not doing what I meant because it would have meant breaking the rule that you can&#8217;t wrap a div with an href?</em> Most users I know would just rather it displayed the page.</p>
<p>Is the pace of IE development slower than Firefox or other browsers?  Well, yes &#8211; but again, <em>so what</em>: <strong> businesses really don&#8217;t like change, change costs money</strong>.  Change means retesting applications, and for what?  It has to give them something to justify that cost.  It isn&#8217;t like IE won&#8217;t remain a viable tool for browsing the Internet for some time.  Remember, these are the same companies that are still (justifiably) writing applications in VB6, an environment that its creator has been <a title="MSDN: How to: Upgrade Visual Basic 6 to VB.NET" href="http://msdn.microsoft.com/en-us/library/ab2372k4.aspx" target="_blank">trying hard to kill for 8 years</a>.</p>
<p>So it makes a lot of sense that when it came to IE 8, Microsoft focused on what IE users really wanted.  It isn&#8217;t standards compliance for its own sake, it was:</p>
<ol>
<li>Make it as fast as possible for how people browse the web today.</li>
<li>Fix as many of the quirks in standards interpretation as feasible that make it easy to develop good sites for IE.</li>
<li>Do what you can to make it hard to have a rash of new security problems.</li>
<li>Don&#8217;t break any site that works today.</li>
</ol>
<p>If you want a good feel for just how hard this problem is, Joel Spolsky did a<a title="Joel on Software: Martian Headsets" href="http://www.joelonsoftware.com/items/2008/03/17.html" target="_blank"> great (but long) writeup</a>.</p>
<p>So I&#8217;m writing this in IE 8 &#8211; and it is just what Microsoft promised, it hits all of the points above and is certainly a solid improvement over IE 7.  Microsoft made a great call in focusing not on Javascript performance but looking at the totality of what affects the apparent browsing performance for users and addressing that.   It feels nice and fast, and I haven&#8217;t encountered anything that&#8217;s broken.</p>
<p>But it&#8217;s no longer my default browser.  While I&#8217;ve been trying to love it, I just can&#8217;t get there.  I switched over to Chrome when it went into release and haven&#8217;t looked back.  On the surface of it, this is a bit crazy:</p>
<ul>
<li><strong>Many sites don&#8217;t work quite right with Chrome.</strong> I&#8217;ve gotten halfway through a shopping cart with Chrome and had the buttons not work to go next.  Things don&#8217;t align right&#8230;  Virtually every web app we use at eSymmetrix had to be patched to work with Chrome.  Even <em>WordPress </em>seems to work better with IE than Chrome in some ways.</li>
<li><strong>Google is getting evil.</strong> They&#8217;re doing things Microsoft never could get away with.  For example, every Google thing installs its own Google Updater service.  It doesn&#8217;t ask if it can, I can&#8217;t find any way to get rid of them through uninstall.. they&#8217;re just there.  I have no idea if they&#8217;ve ever updated Chrome because they&#8217;ve never asked.  You can be sure that if Microsoft this they&#8217;d be in court faster than you can say Slashdot.</li>
<li><strong>It&#8217;s not really stable. </strong>About every other day I get the admittedly cute Aw Snap! page where Chrome just isn&#8217;t quite happy.</li>
</ul>
<p>But it doesn&#8217;t matter, I still dramatically prefer it to the other three browsers on my computer.  Why?</p>
<ul>
<li>It&#8217;s fast.</li>
<li>I love the automatic 9 recent site dashboard with preview.  I  love how it handles browsing history.</li>
<li>The document inspector is great for web development, so I use it all the time when developing web pages and style sheets.</li>
<li>It&#8217;s the future.</li>
</ul>
<p>It&#8217;s the last point that&#8217;s really got my interest. <strong> It&#8217;s the future.</strong> Why?  Because while it really doesn&#8217;t matter right now, the approach Chrome uses for Javascript is going to rewrite the face of the web.</p>
<h2>That&#8217;s just Crazy Talk</h2>
<p>Right now Chrome has around 1.5% of the total browser market share.  That&#8217;s nothing &#8211; about what Opera and Netscape have put together, much less than Safari at 8%.  On the other hand, IE 6 and IE 7 each have the market share of all the rest put together (more or less).  So statistically, Chrome is completely irrelevant &#8211; and it&#8217;s had a lot of time to get to that point in market share.  IE 8 cot to that point of market share pretty much as soon as it was released.</p>
<p>So what justifies it being the future?  Because the V8 Javascript compiler is a game changer.  Not on its own, it&#8217;s a piece of the puzzle.  Four things have to come together:</p>
<ol>
<li>Universal high bandwidth:  Enough to move say 3mb in 5 seconds reliably.</li>
<li>A compiler that converts Javascript into machine code within 50% of the performance of compiled Java or .NET.</li>
<li>A standard Javascript library that can function as a GUI Toolkit on par with .NET WinForms or Cocoa.</li>
<li>A visual Integrated Development Environment (IDE) that can bring it all together with a good debugger for browser and server.</li>
</ol>
<p>We already have the first one.  It takes about 6 mbps throughput &#8211; cable modem speed &#8211; to move 3MB of data in 5 seconds.  Chrome brings in the second one (and actually bests that by some margin).  Now we need the third and fourth.</p>
<p>Up until now the third item has been held back by the general problem that Javascript was slow enough that the overhead of having a common API (full of things you didn&#8217;t need for any single situation) was infeasible.  Writing something broadly reusable is about an order of magnitude harder than writing it to handle a specific scenario, and ends up doing a number of things you don&#8217;t need to do because someone might need it.  That overhead isn&#8217;t acceptable with the historical performance of Javascript, but if it&#8217;s compiled down to native code then it becomes a small, inconsequential optimization.</p>
<p>So now that there&#8217;s an environment that can run it, we need a general UI toolkit and the IDE to develop with so we&#8217;re putting our time and attention into creating features for our users, not how to make a menu that dynamically expands and highlights.  The IDE needs to provide an end user experience like developing for WinForms or WPF in Visual Studio &#8211; clean, easy, visual, without surprises.</p>
<p>Microsoft was right &#8211; today it isn&#8217;t about Javascript performance.  But if we&#8217;re lucky, tomorrow will be &#8211; and we&#8217;ll be able to develop much better, stronger applications for the web without resorting to Flash, Silverlight, or very expensive development and testing cycles.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=ljbR8m9d_CM:ZiariL94WFg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=ljbR8m9d_CM:ZiariL94WFg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=ljbR8m9d_CM:ZiariL94WFg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=ljbR8m9d_CM:ZiariL94WFg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=ljbR8m9d_CM:ZiariL94WFg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/ljbR8m9d_CM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/development/browser-game-changeup/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What Happens when Engineers don’t Rule</title>
		<link>http://reliable.esymmetrix.com/development/what-happens-when-engineers-dont-rule</link>
		<comments>http://reliable.esymmetrix.com/development/what-happens-when-engineers-dont-rule#comments</comments>
		<pubDate>Tue, 05 May 2009 04:42:00 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Cosmetic Defect]]></category>
		<category><![CDATA[HCI]]></category>
		<category><![CDATA[Software Development Process]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=171</guid>
		<description><![CDATA[I&#8217;m an engineer at heart. I worry about all the little details of how something works technically. When I can, I go for the overengineered solution every time. We recently needed to get a Microphone Pre-amp to USB device. Instead of getting the plastic MAudio unit that probably works just great I got the USBPre [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m an engineer at heart.  I worry about all the little details of how something works technically.  When I can, I go for the overengineered solution every time.   We recently needed to get a Microphone Pre-amp to USB device.   Instead of getting the plastic MAudio unit that probably works just great I got the USBPre at twice the price.   Why?  Just look at that case, it&#8217;s <em>awesome</em>:<br />
<img class="aligncenter size-full wp-image-180" title="usbpre_large" src="http://reliable.esymmetrix.com/wp-content/uploads/usbpre_large.jpg" alt="usbpre_large" width="345" height="162" /><br />
With a nice metal case like that, industrial strength construction &#8211; it&#8217;ll last forever!  Of course, this thing will never leave my desk, so the ability to be run over by a truck is more or less academic.</p>
<p>So with my natural preference for hard core engineering I&#8217;d like to report that the best software comes from a group of driven software engineers.   Technically, that may be true &#8211; a big group of engineers can make a very technically sophisticated product.  But, really great products?  Well, that requires a lot more than just technical excellence.</p>
<p>I think this is the backstory behind Vista&#8217;s successes and failures.   We&#8217;ve been using Vista is our corporate OS since January of 2008, not long after it was widely available.  It&#8217;s worked very well for us &#8211; even better since SP1.  But again, <em>we&#8217;re engineers</em>: half of our systems are 64 bit, and we use high end hardware so we were very good candidates.</p>
<h2>A Whole Lotta Polish</h2>
<p>Last weekend I installed Windows 7.  Now, even though I generally love new toys I haven&#8217;t been chomping at the bit to try out Windows 7 because Vista is working great for me, and we&#8217;ve had a lot of deadlines I didn&#8217;t want to risk.   But, with the release of build 7100 last week, I couldn&#8217;t resist.</p>
<p><img class="alignright size-medium wp-image-173" title="soap-and-bucket" src="http://reliable.esymmetrix.com/wp-content/uploads/soap-and-bucket-300x225.jpg" alt="soap-and-bucket" width="300" height="225" />What&#8217;s the big difference between Windows 7 and Windows Vista?  <strong>Polish.</strong> A whole lotta non-engineering polish.   I was using the media center capabilities last night and noticing all of the little things that are completely irrelevant from an engineering / functional standpoint.  These same things make all the difference in how you perceive the quality of the product and, more importantly the<strong> quality of the experience</strong> in using the product.</p>
<p>Is Build 7100 without issues?   No &#8211; there are some optimization issues that I&#8217;ve run into, but they&#8217;re likely known already within Microsoft and they have months to refine them.   The big picture is that the risky, time consuming design details are all there.  I haven&#8217;t even turned off UAC yet, and I couldn&#8217;t live with that under Vista for more than two hours.</p>
<p>Now, it may be that if you&#8217;re creating the next version of SQL Server that this fundamentally human element of intuitive adjustment and polish isn&#8217;t as necessary.  SQL Server could be all about hard core specifications, tests, and optimization.   That&#8217;s reasonable when the human to product interface is either through a standard you can&#8217;t affect (e.g. T-SQL) or is confined to highly technical specialists.</p>
<h2>Goes to Eleven</h2>
<p>When you&#8217;re creating an application, you aren&#8217;t going to find the polish by reading a functional specification.   You also aren&#8217;t going to get it just by using any particular development methodology &#8211; Agile, Waterfall, whatever.   What you have to be willing to do is go beyond the written functional and system specification and look carefully at each aspect of the human &#8211; computer interface in your product.</p>
<p>This dedication requires a few things:</p>
<ol>
<li><strong>Access to a <a title="Joe Natoli, UX Evangelist" href="http://www.uxevangelist.com/" target="_blank">User Experience (UX)</a></strong><strong> / Human Computer Interface (HCI) specialist.</strong> These folks are experts not for facts and figures or things you can read in a book but their experience and practiced eye that lets them pick out the key details that make all the difference.</li>
<li><strong>Dedication to making it better: </strong> At each turn, and in very difficult moments, you&#8217;re going to have to repeatedly look at what you have and what you&#8217;ve done and say OK, how do we make this better.  Take the case that we can leap beyond this, what would that look like?</li>
</ol>
<p><img class="alignleft size-thumbnail wp-image-175" title="goes-to-11" src="http://reliable.esymmetrix.com/wp-content/uploads/goes-to-11-150x150.jpg" alt="goes-to-11" width="150" height="150" />Done right, this experience can be <strong>tortuous </strong>to engineers because it&#8217;s about iterating through hard to quantify, experimentally determined states without objective metrics to guide your process.  You will see the results of your work &#8211; but as<strong> the sound of distant thunder</strong> as your users either rave more and more for what you&#8217;ve done or just accept meekly what you give them.  Engineers are used to tweaking a knob and seeing the needle move in a quick, quantifiable way.</p>
<p>If you want to get a sense of what happens when people think deeply about how to create software that interacts well with people, read the Microsoft document on how to <a title="MSDN:  Vista Error Messages" href="http://msdn.microsoft.com/en-us/library/aa511267.aspx" target="_blank">write an error dialog for Vista</a>.  This is 28 <em>pages</em> on how to do a good error message and why.  Warnings?  <a title="MSDN: Vista Warning Message Guidelines" href="http://msdn.microsoft.com/en-us/library/aa511263.aspx" target="_blank">another 12 pages</a>.   Even if you&#8217;re a hard core engineer, some of the <a title="MSDN:  Windows User Experience Guidelines" href="http://msdn.microsoft.com/en-us/library/aa511258.aspx" target="_blank">Vista User Experience Guidelines</a> is a great read to understand why it takes many iterations and at least equal measure of instinct and intellect.</p>
<h2>Fighting the Good Fight</h2>
<p>The challenge with pushing for breakthroughs in the user experience with your product is that it doesn&#8217;t fit well into traditional engineering problem solving techniques.  That may be why some of the most successful organizations at it have a strong command &amp; control personality (like Apple) that emphasizing an individual making an intuitive judgment to decide what&#8217;s best.  Trying to apply traditional engineering approaches will generally stifle and drive away the very talent that excels at solving these problems.  Just ask Google.  Their well respected expert on design and usability quit this year, saying:</p>
<blockquote><p>I&#8217;m thankful for the opportunity I had to work at Google. I learned more than I  thought I would&#8230;. But I won&#8217;t miss a design philosophy that lives or dies  strictly by the sword of data.</p></blockquote>
<p>The <a title="Stopdesign:  Goodbye, Google" href="http://stopdesign.com/archive/2009/03/20/goodbye-google.html" target="_blank">full text</a> is an interesting read.  Probably the most poignant example was testing what shade of blue should be used in a specific scenario.  This is a good example of <a title="Reliable Systems:  Trust your instincts, but don't explain them" href="http://reliable.esymmetrix.com/development/trust-your-instincts-but-dont-explain-them" target="_self">trusting your judgment, but don&#8217;t try to explain it</a>.  It&#8217;s a fundamentally human, intuitive leap and you might be able to rationalize it, but that doesn&#8217;t mean you can really explain it.</p>
<p>The best part is that if Microsoft is finally getting the message that it isn&#8217;t enough to just complete on business and engineering requirements but instead you have to battle for the hearts and minds of the people that use products it&#8217;s only good for everyone.  Just like Linux has pushed Microsoft to be faster at evolving Windows (and creating more low cost licensing options), this may push players that are known for great design to have to up their game as well.  I can&#8217;t wait.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=bGZ9AQFOB3k:vxg_vrXjWz0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=bGZ9AQFOB3k:vxg_vrXjWz0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=bGZ9AQFOB3k:vxg_vrXjWz0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=bGZ9AQFOB3k:vxg_vrXjWz0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=bGZ9AQFOB3k:vxg_vrXjWz0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/bGZ9AQFOB3k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/development/what-happens-when-engineers-dont-rule/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Careful with that thing – it’s running Vista!</title>
		<link>http://reliable.esymmetrix.com/infrastructure/careful-with-that-thing-its-running-vista</link>
		<comments>http://reliable.esymmetrix.com/infrastructure/careful-with-that-thing-its-running-vista#comments</comments>
		<pubDate>Wed, 29 Apr 2009 06:33:36 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[product feedback]]></category>
		<category><![CDATA[Technology Selection]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=140</guid>
		<description><![CDATA[Everyone likes to be on the winning team.  We love to root for our favorite sports team, we like the car we own and the brand behind it.  So it&#8217;s no surprise that when Apple ran their I&#8217;m a Mac ads that Windows fans were in an uproar.  Now with the Laptop Hunter series the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-142" title="apple_or_microsoft" src="http://reliable.esymmetrix.com/wp-content/uploads/apple_or_microsoft.jpg" alt="apple_or_microsoft" width="180" height="119" />Everyone likes to be on the winning team.  We love to root for our favorite sports team, we like the car we own and the brand behind it.  So it&#8217;s no surprise that when Apple ran their I&#8217;m a Mac ads that Windows fans were in an uproar.  Now with the Laptop Hunter series the shoe&#8217;s on the other foot.   Microsoft is making a big show that Apple computers are overly expensive just for the Apple brand.  Apple fans claim that  to match a Mac, a PC has to be equipped with tons of antivirus software, a full time tech support guy, and a Witchdoctor on standby to keep it working.</p>
<h2>Seriously people</h2>
<p><strong>First, Apple makes some of the finest hardware you can possibly buy.</strong>  If you compare it nose to nose with hardware that&#8217;s actually built to the same standards then it really doesn&#8217;t represent a significant price premium.  Compare a Macintosh Pro with an equivalent Dell workstation &#8211; the cost is within 5%.  It&#8217;s amazing that Apple can afford the extra engineering of an OS with that little premium.  </p>
<p><strong>Second, Vista works great. </strong>  It&#8217;s running on many more systems than Mac OS is, and with volume comes a range of new problems.  The total amount of money I&#8217;ve spent on desktop antivirus software in 10 years of administering PCs?  $0.  The total number of virus problems I&#8217;ve had? 0.  My parents managed to get into trouble with one virus and Windows XP &#8211; but installing the (free) Microsoft Defender cleared it right up never to return.</p>
<p>As with nearly all marketing, this is a battle of perception:  Apple has done a great job of defending their brand at every turn.  This is part of their corporate ethos.  Along with a few other tenants it ensures they are a much loved but niche player:</p>
<ul>
<li>Only do something you can do uniquely well.</li>
<li>Don&#8217;t extend into markets that might ask you to compromise your values.</li>
<li>Cultivate the mystique:  Don&#8217;t show what&#8217;s behind the curtains.</li>
</ul>
<p>Microsoft on the other hand has tenants that ensure they&#8217;ll be a volume player, but an unloved one:</p>
<ul>
<li>Play to win the most market share in any market you can.</li>
<li>Build your ecosystem by making it easy for others to add value to it.</li>
<li>Cultivate the engineers:  Provide overwhelming amounts of documentation and approaches.</li>
</ul>
<p>The fact is, many people don&#8217;t need a top end piece of hardware like a Mac.  On the other hand, many people want a computer that&#8217;s just a tool, not a piece of art.  To them, the nearly infinite diversity and low cost of entry are essential.</p>
<h2>I&#8217;m a People person.  I&#8217;m Good with People!</h2>
<p>The computing needs of the average corporation and the average individual are very far apart.  To companies, <strong>computers are tools</strong> &#8211; like the desk, phone, and copier.  Very important, very powerful &#8211; tools.  They aren&#8217;t there to make you feel great or enable you to create a cool video of your vacation in France.  My partner really summed it up one day when he commented that the Mac was a really <em>personal computer </em>- it worked hard to create a personal connection.  </p>
<p>Corporations on the other hand want slow paced evolution, massive support for legacy applications and hardware (these guys are still running dot matrix printers off parallel ports) and to control costs.  They also philosophically want to have all the keys to the computers &#8211; just like they do for the buildings and offices they own.  PC&#8217;s are just end points on the large mesh that is the corporate IT network.  It&#8217;s very impersonal.</p>
<p>Microsoft makes a great deal of money providing businesses with the tools they <em>need </em>to have the computers work for them, and Apple makes a great deal of money creating computers that people <em>love</em>.  Either of these goals would be compromised by trying to do both.</p>
<h2>Vista Goggles</h2>
<p>Folks that have been in the Windows ecosystem a long time probably recognize that you could take the first year of press about Vista and substitute &#8220;Windows 2000&#8243; and find the same article written 8 years earlier.  Vista is a surprisingly large and tricky step forwards on a number of fronts, whereas Windows XP was a visual redress of Windows 2000.  </p>
<p>Almost like an SAT test:</p>
<blockquote><p>Windows 7 is to Windows Vista as</p>
<p>Windows XP is to Windows 2000.  </p></blockquote>
<p>Like Windows XP, the story on Windows 7 is making virtually no architecture changes and instead just tuning for the long haul.  That&#8217;s a great thing, because there&#8217;s a lot that works very well with Vista, and now it&#8217;ll work even better with Windows 7.</p>
<p>The humorous thing is to read now about how people are thinking about moving to Vista once 7 ships because, well, they don&#8217;t want to move to an OS that was just released.  It&#8217;s as if Vista has been aging like a fine cheese on the shelf so the very same binary code that once was toxic is now just what the doctor ordered.  To a slight degree this is true:  Vista SP1 did address some issues that affected some people, and more importantly hardware now is dramatically faster than it was two years ago (as it will be two years from now&#8230;) so what once was aggressive is now commonplace.  The same was true of Windows 2000 when it shipped.  Requiring 64MB of RAM?  That&#8217;s just crazy talk!  Only certain video cards worked reasonably with it, and video drivers to a while to stabilize.  That sounds very familiar&#8230;</p>
<p><strong>In the end, it really comes back to Perception. </strong> Probably the biggest mistake Microsoft did was not push the OEM&#8217;s that make the computers to build machines that could responsibly run the new operating system, and be clear that meant hardware 3D video cards and plenty of memory.  And oh yeah, stop putting aftermarket firewalls, antivirus, Google Desktop, and all kinds of other things on them that are ill optimized.  At my last company we got in the habit of routinely wiping each new Dell that came in and reinstalling the OS from the Dell restore CD &#8211; because that got rid of all the noise.  It was surprising how much better that worked.  Is that Microsoft&#8217;s fault?  Not directly, but they certainly could have found a way to encourage the ecosystem to forgo some profit for usability.  But that&#8217;s just not in their corporate DNA.</p>
<p>With any luck, the big story for Windows 7 will be that Microsoft pushes back against their channel, even being willing to risk it by leaving Windows XP out there for folks that don&#8217;t want to play by the Windows 7 rules.  It&#8217;s hard to put up barriers when you&#8217;re a legal monopoly, so find ways to use incentives to do it right instead of punishment for doing it wrong.  And keep up the ads, because perception does matter in the long run.</p>
<p>Who knows, it may push Apple to get better too.  Just once when my iPod updates itself to enhance stability and performance I&#8217;d love to know what exactly was unstable or slow&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=HcEsPk-7u00:soTJeOGFQvc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=HcEsPk-7u00:soTJeOGFQvc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=HcEsPk-7u00:soTJeOGFQvc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=HcEsPk-7u00:soTJeOGFQvc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=HcEsPk-7u00:soTJeOGFQvc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/HcEsPk-7u00" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/infrastructure/careful-with-that-thing-its-running-vista/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I’m not Cool Enough for the Web</title>
		<link>http://reliable.esymmetrix.com/development/im-not-cool-enough-for-the-web</link>
		<comments>http://reliable.esymmetrix.com/development/im-not-cool-enough-for-the-web#comments</comments>
		<pubDate>Tue, 21 Apr 2009 16:51:40 +0000</pubDate>
		<dc:creator>Kendall Miller</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Technology Selection]]></category>

		<guid isPermaLink="false">http://reliable.esymmetrix.com/?p=114</guid>
		<description><![CDATA[Since leaving my last company and getting into the wild as a consultant, I&#8217;ve been amazed by the divergence between the conventional wisdom prevailing on the Internet and what I see actually happening on the ground with clients. The prevailing wisdom appears to be: Google is the world&#8217;s best technology company.  Anything they solve they [...]]]></description>
			<content:encoded><![CDATA[<p>Since leaving my last company and getting into the wild as a consultant, I&#8217;ve been amazed by the divergence between the conventional wisdom prevailing on the Internet and what I see actually happening on the ground with clients.</p>
<p>The prevailing wisdom appears to be:</p>
<ul>
<li><strong>Google is the world&#8217;s best technology company.  </strong>Anything they solve they are the best at, and if you aren&#8217;t doing it their way you&#8217;re a dinosaur.</li>
<li><strong>Client / Server is dead.</strong>  All new applications will be web applications, most likely delivered as a service.</li>
</ul>
<p>We visit a lot of companies, both prospects and clients.  Here&#8217;s what we&#8217;ve actually seen over the past two years:</p>
<ul>
<li><strong>Outside of search, Google doesn&#8217;t have their act together. </strong> Pretty much everything else is an academic experiment.  There&#8217;s nothing wrong with experiments, but there&#8217;s a big distance from there to running your business.</li>
<li><strong>Business are run on Client / Server. </strong> They&#8217;re still creating new apps this way &#8211; they may use newer technologies like WPF to do it, but if it is core to making the business work, it&#8217;s usually not a web app.</li>
</ul>
<h2>With a name like Google, it&#8217;s got to be good!</h2>
<p>Our own internal experience mirrors this.  We use Exchange and Outlook for email so I can&#8217;t say a lot directly about Gmail, however it&#8217;s clear from Google&#8217;s reactions to <a title="GMail outage on Venture Beat" href="http://venturebeat.com/2009/02/24/where-were-you-during-the-great-gmail-outage-of-february-2009/" target="_blank">recent outages</a> that their perspective doesn&#8217;t fit the enterprise because it doesn&#8217;t take into account the premium companies place on predictability and communication.  Predictability meaning that things are consistent &#8211; you get a consistent experience so your users can get their jobs done.  Businesses are change averse for good reason:  Users will adapt even to crazy problems and discover the patterns that work to get their jobs done.  When the patterns keep changing, they get frustrated.  On the communication front, businesses prize feedback on knowing the true scope of a problem and how long it may take to get it resolved.  </p>
<p>SalesForce learned this a few years ago and in response introduced <a title="Trust Salesforce Site" href="http://trust.salesforce.com/" target="_blank">Trust.Salesforce.Com</a>, which went a long way to getting companies what they wanted to be comfortable with an outsourced critical solution.   If you operate a SaaS, you would do well to model after this.   Now, it isn&#8217;t necessarily bad that Google doesn&#8217;t do anything like this for Gmail &#8211; it just means it isn&#8217;t a solution for a large set of businesses.  </p>
<p>The thing we use the most internally from Google is <a title="Google Analytics" href="http://www.google.com/analytics/" target="_blank">Google Analytics</a>.  It&#8217;s very pretty and easy to use, however we&#8217;ve noticed a lot of &#8220;what&#8217;s broken today?&#8221; experiences with it, enough that we can&#8217;t recommend it to anyone.  Two of the sites we monitor appear to be chronically under counted by Google Analytics, and we can&#8217;t figure out why.  And like most things Google &#8211; you&#8217;re on self support.  Now, there are paid options however unlike email we haven&#8217;t been able to find a strong paid competitor that is actively competing with Google.  It feels like most have left the field of battle, or are <a title="WebTrends" href="http://www.webtrends.com/" target="_blank">exorbitantly expensive</a> (and aimed at large enterprises).</p>
<p>After much early on talk about how <a title="Google Docs" href="http://docs.google.com" target="_blank">Google Docs </a>was going to make Office obsolete, it simply hasn&#8217;t come to pass &#8211; and Microsoft continues to sell a lot of copies of Office.  It turns out that making a great word processor and spreadsheet is a very hard problem to do through the web.  Now, you might take the perspective that Microsoft&#8217;s announcement that they are going to offer lightweight web versions of Office 14 applications as being an admission that the old model is bankrupt, but it really points to an increase in reach:  Reaching many users that wouldn&#8217;t have been purchasing the product before.  Casual home users that wouldn&#8217;t purchase a &#8220;real&#8221; copy of office may find what they want in Google Docs, and would also be happy with a lightweight feature set of Office.</p>
<p>In Google&#8217;s defense, the products are worth what you&#8217;re paying for them:  Free.  But, you have to ask yourself:  If it wasn&#8217;t for the Google brand, would you give them the time of day?  For search, absolutely.  Finding an address and getting a street view?  Bring it on.  But don&#8217;t feel bad for depending on traditional software next time you want to buy a copy of Office, Photoshop, or use Outlook for your email.</p>
<h2>It&#8217;s all SaaS These Days</h2>
<p>Make no mistake, web applications, SaaS and Cloud Computing are all here to stay.  However, that doesn&#8217;t mean that there isn&#8217;t a lot going on in Client \ Server as well.  The key question to consider is how many applications you would have made, but done in another technology are being built as a web app instead?  There certainly are some, but for the most part web applications are creating entirely new spaces and solving problems that weren&#8217;t being solved before instead of replacing entrenched problems.  </p>
<p>Take document management:  On the surface this feels like a problem that should go entirely web and not look back because the web is very good when the readers to editors ratio is very high.  That said, the big document management companies still have very robust, integrated traditional offerings as well as their web portals.  You do have people using web document management solutions (like SharePoint) that never had document management before, which is a case of expanding the size of the market not replacing an alternative option.</p>
<p>When you are running your business, you have a set of requirements that are often best suited by a traditional client application:</p>
<ul>
<li><strong>Users need advanced capabilities: </strong> Once you stray out of the basics, it is invariably harder to provide features through web technologies than traditional technologies.  Tools are improving and making it better, but the cost per feature is lower in a modern client development environment than through a browser.  This is particularly true since you can put a browser in your app to enable things that it does really well &#8211; like show HTML content &#8211; you just let it do and keep the tricky stuff &#8211; like that big set of coordinated data entry fields &#8211; in your traditional app.</li>
<li><strong>Users are doing a lot:  </strong>One thing that is easy to lose perspective on is that when you run a client/server application every computer is bringing power to the party.  You often don&#8217;t need that strong a central server because the real action is happening out on the clients, and every new client that logs in is bringing their own muscle with them.  In the web, it&#8217;s all on the server. Not only that, but you&#8217;re rendering things in a less efficient way due to the stateless nature and limited protocols available for data exchange.</li>
<li><strong>Users need access to diverse data: </strong> With web technologies it&#8217;s straightforward to manage information once you&#8217;ve brought it into the cloud, but it&#8217;s tricky to provide end users with fast casual access to a range of data in a range of formats.  In many businesses data is coming in pieces from many sources and being assembled to produce a coherent output.  This isn&#8217;t easy to do in any environment, and it&#8217;s one thing that the modern PC operating system, particularly Windows, has gotten very good at.  You can double click a file and almost always get it to open into a good viewer.  You can preview files, drag and drop from one program into another or a file into a program.  All of this is intuitive and fast for users that aren&#8217;t fitting into a pre-packaged user scenario.  </li>
</ul>
<p>There are counter balancing effects:</p>
<ul>
<li><strong>Transient user community:  </strong>The more far flung your people are, the more work it is to keep them up to date.  The more transient that user community is, the higher a barrier installation is.  This is the leading reason why you want to make something a web app:  It just isn&#8217;t worth the deployment effort to do it any other way.</li>
<li><strong>Diverse user community:  </strong>If you want to service Linux, Windows, and the Mac then web technologies are the lowest common denominator, it&#8217;s just the way it is.</li>
</ul>
<p>What we&#8217;re seeing in the field fits into this:  People are creating a lot of new, lightweight web apps to solve point problems they probably wouldn&#8217;t have solved through technology before.  But they&#8217;re also still heavily investing in traditional applications.  </p>
<p>As a development team, it&#8217;s easy to get caught up thinking that <a title="Effort != Value" href="http://reliable.esymmetrix.com/development/effort-doesnt-equal-value" target="_self">Effort is the same as Value</a> &#8211; just because something was a lot of work it must have a commensurate value.  The fact is, that there&#8217;s just no evidence that effort and value are correlated.  On the web, if you want to create a great looking and functioning generalized tool you&#8217;re signing up for a lot of effort.  And the value may be there &#8211; it could be that you&#8217;re going to reach a whole set of new users that otherwise wouldn&#8217;t use an application at all.  On the other hand, it could be that users perceive no extra value for it being in the web so all the extra work you put into creating the graphics, testing in five browsers, establishing identity, and the dozen other things you wouldn&#8217;t have needed to worry about if you were just running on the desktop netted you nothing.</p>
<p>So if you&#8217;re a business wondering how to approach that next application you need, don&#8217;t be afraid to get one that isn&#8217;t all wrapped up in Web 2.0 goodness.  In the end, it&#8217;s all about making the solution work for you and your users.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=CI8dbfhv4lU:4fFgsTnYqgc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=CI8dbfhv4lU:4fFgsTnYqgc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=CI8dbfhv4lU:4fFgsTnYqgc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ReliableSystems?a=CI8dbfhv4lU:4fFgsTnYqgc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ReliableSystems?i=CI8dbfhv4lU:4fFgsTnYqgc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ReliableSystems/~4/CI8dbfhv4lU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://reliable.esymmetrix.com/development/im-not-cool-enough-for-the-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.711 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-03-13 03:58:46 -->

