<?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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Lambert on Development</title>
	
	<link>http://blog.componentoriented.com</link>
	<description>My thoughts on software development</description>
	<lastBuildDate>Fri, 30 Jul 2010 12:25:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/LambertOnDevelopment" /><feedburner:info uri="lambertondevelopment" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://superfeedr.com/hubbub" /><item>
		<title>Visual Studio locked up?</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/IheSOT96HDI/</link>
		<comments>http://blog.componentoriented.com/2010/07/visual-studio-locked-up/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:12:40 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[.Net Development]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Visual Studio 2005]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[VS2005]]></category>
		<category><![CDATA[VS2008]]></category>
		<category><![CDATA[VS2010]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=1008</guid>
		<description><![CDATA[I could have kicked myself last week.  I was running Visual Studio 2010 in a VMWare VM, and it kept locking up &#8211; it was driving me batty.  The problem started out as one of those &#8220;once every four of five hours&#8221; kind of lock ups, but it eventually got to the point where I&#8217;d [...]]]></description>
			<content:encoded><![CDATA[<p>I could have kicked myself last week.  I was running <a class="zem_slink" title="Microsoft Visual Studio" rel="homepage" href="http://msdn.microsoft.com/vstudio/">Visual Studio</a> 2010 in a <a class="zem_slink" title="VMware" rel="homepage" href="http://www.vmware.com/">VMWare</a> VM, and it kept locking up &#8211; it was driving me batty.  The problem started out as one of those &#8220;once every four of five hours&#8221; kind of lock ups, but it eventually got to the point where I&#8217;d open the solution and click &#8220;X&#8221; on one file, and I&#8217;d be locked up.</p>
<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://en.wikipedia.org/wiki/File:VisualStudio2010.png"><img title="Visual Studio 2010 features a new UI developed..." src="http://upload.wikimedia.org/wikipedia/en/thumb/b/bc/VisualStudio2010.png/300px-VisualStudio2010.png" alt="Visual Studio 2010 features a new UI developed..." width="300" height="240" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://en.wikipedia.org/wiki/File:VisualStudio2010.png">Wikipedia</a></dd>
</dl>
</div>
</div>
<p>I tried everything.  I googled the problem till the cows came home &#8212; nothing.  I tried updating VMWare tools.  I tried rebuilding the VM.  I tried 64-bit and 32-bit.  I even uninstalled VMWare Server and installed VMWare Player, thinking that the lack of Direct-X support in Server might be causing the WPF-based VS2010 some issues.  No dice.  Nothing worked.</p>
<p>Just about the time I was ready to chuck the whole works out the window, a nagging memory surfaced.  Somewhere in my distant past (ok, it was three or four years ago), I remember having lock-up problems with Visual Studio 2005.  I never did figure out what was causing the lock-ups, but I had a sure-fire workaround:  just delete the .SUO file for the solution and re-launch.</p>
<p>So, having already exhausted all of my &#8220;good&#8221; ideas, I gave it a try, and just like that, I was back in business.</p>
<p>Wouldn&#8217;t you think that at this point, there&#8217;d be some way for Visual Studio to detect that something was pretty badly hosed in the .SUO file?  Me too.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.devcurry.com/2010/05/share-same-visual-studio-settings.html">Share the same Visual Studio Settings between Team Members</a> (devcurry.com)</li>
<li class="zemanta-article-ul-li"><a href="http://huddledmasses.org/visual-studio-not-responding-beeping-when-editing-aspx/">Visual Studio Not Responding (beeping) when editing ASPX</a> (huddledmasses.org)</li>
<li class="zemanta-article-ul-li"><a href="http://huddledmasses.org/fyi-visual-studio-2010-technical-readiness-training/">FYI: Visual Studio 2010 Technical Readiness Training</a> (huddledmasses.org)</li>
<li class="zemanta-article-ul-li"><a href="http://r.zemanta.com/?u=http%3A//www.infoworld.com/d/developer-world/microsoft-patches-visual-studio-error-message-565%3F_infoworld_news&amp;a=20074584&amp;rid=5d6a2d7f-1e57-4098-8d57-b005443a23ea&amp;e=9dda2bf5ff0ce2a5438010810d65554a">Microsoft patches Visual Studio error message</a> (infoworld.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=5d6a2d7f-1e57-4098-8d57-b005443a23ea" alt="Enhanced by Zemanta" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p><map name='google_ad_map_1008_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1008?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1008_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1008&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F07%2Fvisual-studio-locked-up%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Visual+Studio+locked+up%3F+http://gcacg.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Visual+Studio+locked+up%3F+http://gcacg.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/pbmbUAWu2cerqxjqieixmsX8LC0/0/da"><img src="http://feedads.g.doubleclick.net/~a/pbmbUAWu2cerqxjqieixmsX8LC0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pbmbUAWu2cerqxjqieixmsX8LC0/1/da"><img src="http://feedads.g.doubleclick.net/~a/pbmbUAWu2cerqxjqieixmsX8LC0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/IheSOT96HDI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/07/visual-studio-locked-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/07/visual-studio-locked-up/</feedburner:origLink></item>
		<item>
		<title>Thanks for the help</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/7E3i6X0big8/</link>
		<comments>http://blog.componentoriented.com/2010/07/thanks-for-the-help/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 19:11:50 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Disconnected rants]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Office]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=1001</guid>
		<description><![CDATA[If you&#8217;re hypothetically considering changing the interface of your application so completely that users can&#8217;t find the stuff they need in the places where they&#8217;re used to finding it (Office, I&#8217;m looking at you&#8230;), you might be expected to have your users need to use &#8220;help&#8221; a bit more than normal.
And if you expect your [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re hypothetically considering changing the interface of your application so completely that users can&#8217;t find the stuff they need in the places where they&#8217;re used to finding it (Office, I&#8217;m looking at you&#8230;), you might be expected to have your users need to use &#8220;help&#8221; a bit more than normal.</p>
<p>And if you expect your users to need to use your help system, and if you choose to make that help system an internet experience, and if that internet experience is going to use a browser that&#8217;s had so many restrictions placed upon it in the name of security that you can&#8217;t sneeze without seeing some sort of exception (IE, I&#8217;m looking at you&#8230;.), you should probably consider the likelihood that your users (already frustrated because they can no longer accomplish something that they used to be able to accomplish on their own) are going to encounter a help system that looks something like this:</p>
<p><a href="http://blog.componentoriented.com/wp-content/uploads/2010/07/ThanksForTheHelp.jpg"><img class="aligncenter size-full wp-image-1002" title="ThanksForTheHelp" src="http://blog.componentoriented.com/wp-content/uploads/2010/07/ThanksForTheHelp.jpg" alt="" width="437" height="588" /></a></p>
<p>Thanks a lot, <a href="http://blog.componentoriented.com/tag/microsoft/">Microsoft</a>.</p>
<p><map name='google_ad_map_1001_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1001?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1001_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1001&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F07%2Fthanks-for-the-help%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Thanks+for+the+help+http://7e5oc.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Thanks+for+the+help+http://7e5oc.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/gyIdhKoMKTmzybg_PaqZxqEtr6A/0/da"><img src="http://feedads.g.doubleclick.net/~a/gyIdhKoMKTmzybg_PaqZxqEtr6A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gyIdhKoMKTmzybg_PaqZxqEtr6A/1/da"><img src="http://feedads.g.doubleclick.net/~a/gyIdhKoMKTmzybg_PaqZxqEtr6A/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/7E3i6X0big8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/07/thanks-for-the-help/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/07/thanks-for-the-help/</feedburner:origLink></item>
		<item>
		<title>Don’t get hosed by “Someday”</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/j3-QiFeFE_E/</link>
		<comments>http://blog.componentoriented.com/2010/07/dont-get-hosed-by-someday/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 21:37:27 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=978</guid>
		<description><![CDATA[For the last couple days, I&#8217;ve been helping another project team track down a memory leak in their app.  Memory leaks always seem to show up at the most inopportune moments, of course, and this one was no exception.
This memory leak, however, was self-inflicted.  The source of the memory leak appears to be rooted [...]]]></description>
			<content:encoded><![CDATA[<p>For the last couple days, I&#8217;ve been helping another project team track down a memory leak in their app.  Memory leaks always seem to show up at the most inopportune moments, of course, and this one was no exception.</p>
<p>This memory leak, however, was self-inflicted.  The source of the memory leak appears to be rooted in an open-source project the team was using to manage detached POCO&#8217;s.  The detached POCO&#8217;s, it turns out, weren&#8217;t needed by the project when they were built into the architecture, but were built to support a yet-to-be-built offline client.  The project team met the anticipated requirement with a clever project  that met a widely-recognized need in Entity Framework 3.5.  For those  shops that absolutely needed this functionality, there weren&#8217;t too many  choices, and this one was right at the top of the list.  The extra  functionality, though, added code and complexity, and in this case, a  memory leak.</p>
<p>As a final insult, it now looks like this offline client won&#8217;t be needing the detached POCO&#8217;s, after all, and on top of everything else, the POCO support project is now essentially deprecated in favor of native support for POCO&#8217;s in EF 4.0.   The lesson is repeated every day in development shops around the world: <a href="http://www.last.fm/music/Creedence+Clearwater+Revival/_/Someday+Never+Comes">someday never comes</a> (you had no idea CCR was singing about software development, did you?).</p>
<p>Everyone who designs software has done this, but if you&#8217;re designing software, think about these points to avoid this all-too-common pitfall:</p>
<ul>
<li>Beware the temptation to build for future requirements.  I&#8217;ll be the first to admit that it&#8217;s pretty tempting to put in that hook or extra layer when you just know you&#8217;re going to need it, but consider the risk when you do this.  Requirements change all the time after they&#8217;re real, and the ones that aren&#8217;t real yet are even more tenuous.</li>
<li>If you&#8217;re using  a third-party tool or library, open-source or not, be sure to assess the present and future stability of the software.  On Scott Guthrie&#8217;s blog today, he announced a new View engine called &#8220;Razor&#8221;.  Buried in the article was a little gem of a quote:  &#8220;Razor will be one of the view engine options we ship built-into ASP.NET MVC.&#8221;  If you don&#8217;t have a quote like that for your library, you have to factor in the risk that the software you&#8217;re counting on will go away (perhaps with little notice).</li>
<li>Be especially vigilant about architecture decisions that permeate your software deeply or create extra complexity in your design.  These decisions are critical and difficult to correct later.</li>
</ul>
<p>When you build for the future and guess right, you might wind up looking like a genius, but be careful, because far more often, &#8220;someday&#8221; will bite you.</p>
<p><map name='google_ad_map_978_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/978?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_978_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=978&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F07%2Fdont-get-hosed-by-someday%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Don%E2%80%99t+get+hosed+by+%E2%80%9CSomeday%E2%80%9D+http://qeefg.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Don%E2%80%99t+get+hosed+by+%E2%80%9CSomeday%E2%80%9D+http://qeefg.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/ejG-Vlx2nXRNEE1mFx8M5gg92-k/0/da"><img src="http://feedads.g.doubleclick.net/~a/ejG-Vlx2nXRNEE1mFx8M5gg92-k/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ejG-Vlx2nXRNEE1mFx8M5gg92-k/1/da"><img src="http://feedads.g.doubleclick.net/~a/ejG-Vlx2nXRNEE1mFx8M5gg92-k/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/j3-QiFeFE_E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/07/dont-get-hosed-by-someday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/07/dont-get-hosed-by-someday/</feedburner:origLink></item>
		<item>
		<title>Automated patterns considered harmful</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/WuunDnkRE4o/</link>
		<comments>http://blog.componentoriented.com/2010/06/automated-patterns-considered-harmful/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 15:48:02 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[.Net Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[attributes]]></category>
		<category><![CDATA[designers]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[Model-driven engineering]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[reflection]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software factory]]></category>
		<category><![CDATA[T4]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=618</guid>
		<description><![CDATA[A couple years ago, if you read some of the &#8220;best practices&#8221; stuff coming out of Redmond, you&#8217;d have thought that software factories were going to transform software development.  Thankfully, this turns out not to have been the case.  I never met a software factory I didn&#8217;t detest almost immediately, and I&#8217;m glad the idea [...]]]></description>
			<content:encoded><![CDATA[<p>A couple years ago, if you read some of the &#8220;best practices&#8221; stuff coming out of Redmond, you&#8217;d have thought that software factories were going to transform software development.  Thankfully, this turns out not to have been the case.  I never met a software factory I didn&#8217;t detest almost immediately, and I&#8217;m glad the idea hasn&#8217;t really caught on any more than it did.</p>
<p>Software factories generally consist of some tools to assist software development, but a central theme of these tools is that they generate code for you.  I&#8217;ve always felt that automation in software development is a very good thing, but it&#8217;s vitally important that you understand what you&#8217;re left with when you&#8217;re done.  If automation results in code that you never have to touch or see, then you&#8217;re probably more productive as a result, but if you&#8217;re generating code that you&#8217;re going to have to maintain, there&#8217;s a very good chance that you&#8217;re taking one step forward and two steps back.</p>
<p>Most developers are familiar with <a href="http://www.artima.com/intv/dry.html">&#8220;Don&#8217;t Repeat Yourself&#8221; (DRY)</a>.  The objective of DRY, of course<a href="http://blog.componentoriented.com/wp-content/uploads/2010/06/paper.jpg"><img class="alignright size-thumbnail wp-image-971" style="margin: 5px 10px;" title="paper" src="http://blog.componentoriented.com/wp-content/uploads/2010/06/paper-150x150.jpg" alt="" width="150" height="150" /></a>, is not just reduction in code (and thus, effort) when developing new software, but a centralization of logic that pays dividends as you maintain software.  Code generation often accomplishes a deceptively attractive initial productivity for new development, but the generated code is typically littered with repetitive code.  This code is &#8220;free&#8221; when generated, but it&#8217;s an anchor around your neck every time you have to maintain the code, or even when you step through it while debugging.  It clutters your project, reduces readability, and inhibits your capacity to maintain, revise, and refactor your software.  There&#8217;s a reason why repetitive code is usually right at the top of <a href="http://www.codinghorror.com/blog/2006/05/code-smells.html">Code Smells</a> lists.</p>
<p>Given my strong preference for software craftsmanship, it shouldn&#8217;t be surprising that I consider software factories that barf out projects and classes that you&#8217;re supposed to maintain an absolute blight upon the landscape of software development, but there are any number of other automation tools available to us.  Here are some thoughts on a few of these:</p>
<ul>
<li>Designers.  These remain the best example of code generation done right, in my opinion.  Designers, when properly executed, produce wholly-standalone code files that we can largely ignore.  Classes are declared as &#8220;partial&#8221; so that if you need to modify them, you can do so without touching the generated code.  Some designers will add [DebuggerStepThrough] attributes so you don&#8217;t see this code when debugging.  All of these things help the generated code disappear unless we&#8217;re specifically looking for something, and that&#8217;s a very good thing.</li>
<li>Snippets.  I remain mixed on these little gems.  When used correctly, they can be a big help, but in practice, they&#8217;re almost always a sign that you should be doing things differently.  Whether or not you&#8217;re using a snippet to generate code, you don&#8217;t want to end up with code that violates DRY, and this means that the opportunities to use snippets effectively are few and far between.</li>
<li><img class="alignright size-thumbnail wp-image-972" style="margin: 5px 10px;" title="t4editor" src="http://blog.componentoriented.com/wp-content/uploads/2010/06/t4editor-150x150.jpg" alt="" width="150" height="150" /><a href="http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx">T4</a>.  The best usage I&#8217;ve seen of this generation tool (built into Visual Studio, by the way), is Rob Conery&#8217;s <a href="http://www.subsonicproject.com/">SubSonic</a> data access project.  T4 creates code from templates written in an ASP-like syntax, and is great for iterating over a database or other object structure to crank out code in for&#8230;each loops.  Like designers, this code is intended to be read-only (you shouldn&#8217;t modify the generated code), and it can be marked with [DebuggerStepThrough].</li>
<li>Reflection.  Yes, it&#8217;s a little bit of a stretch to call reflection an automation tool, but creative use of reflection can help you achieve some <a class="zem_slink" title="Ruby on Rails" rel="homepage" href="http://rubyonrails.org/">Ruby on Rails</a>-like productivity by adding behavior dynamically.  Reflection is commonly maligned as a performance-killer, but Rocky Lhotka has been doing great things with reflection in <a href="http://www.lhotka.net/cslanet/">CSLA </a>for years with minimal impact on performance.</li>
<li>Copy-paste coding.  If you&#8217;re not even using a tool to help you with your unnecessary code duplication, you&#8217;re definitely doing it wrong.  &#8216;Nuff said, I think.</li>
</ul>
<p>In addition to these &#8220;automation&#8221; tools, there are language features and frameworks available to us today that can serve the same productivity objectives without resulting in tons of repeated code:</p>
<ul>
<li>Attributes.  Typically used with reflection to act on classes at run-time, attributes can make your code much more expressive by declaring behavior rather than implementing it over and over.</li>
<li>MVC.  Since MVC is a framework, it doesn&#8217;t really do anything at all to enforce DRY (or any other coding practice), but it encourages a declarative style of Model development that&#8217;s very consistent with the ideas I&#8217;ve been discussing here, and most MVC examples use a very expressive, compact Model syntax.</li>
<li><a href="http://msdn.microsoft.com/en-us/data/ff394760.aspx">Model-driven development</a>.  <a href="http://blog.componentoriented.com/tag/microsoft/">Microsoft</a>&#8217;s data modeling bits (known at various times as &#8220;Oslo&#8221;) consist of tools, modeling syntax, and extensions that create a very dynamic metadata-driven application environment.  We&#8217;re still looking at the early stages of these tools, but the broad objective is to make object behavior completely declarative and dynamic.  There&#8217;s a danger that we could trade unmaintainable code for unmaintainable configuration data, but I think that as this technology matures, it&#8217;s going to move us in the right direction.</li>
</ul>
<p>In addition to the options available to us today, we&#8217;ll continue to see innovations in the future.  When you&#8217;re reviewing and evaluating these options, though, remember to always <a href="http://blog.componentoriented.com/2009/07/add-lightness/">add lightness</a>, because less code is better.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.theenterprisearchitect.eu/archive/2010/06/28/model-driven-development-code-generation-or-model-interpretation">Model Driven Development: Code Generation or Model Interpretation?</a> (theenterprisearchitect.eu)</li>
<li class="zemanta-article-ul-li"><a href="http://www.basilv.com/psd/blog/2010/why-coding-is-not-enough">Why Coding is not enough</a> (basilv.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.devx.com/enterprise/Article/44734?trk=DXRSS_LATEST">Using a Software Factory Approach for Customized Modeling</a> (devx.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=13a5937b-2175-4317-8b63-8c3434d6e90c" alt="Enhanced by Zemanta" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p><map name='google_ad_map_618_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/618?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_618_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=618&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F06%2Fautomated-patterns-considered-harmful%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Automated+patterns+considered+harmful+http://w2wg9.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Automated+patterns+considered+harmful+http://w2wg9.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/crpSNbcBMpDWTt1GlJMPFm_voYo/0/da"><img src="http://feedads.g.doubleclick.net/~a/crpSNbcBMpDWTt1GlJMPFm_voYo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/crpSNbcBMpDWTt1GlJMPFm_voYo/1/da"><img src="http://feedads.g.doubleclick.net/~a/crpSNbcBMpDWTt1GlJMPFm_voYo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/WuunDnkRE4o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/06/automated-patterns-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/06/automated-patterns-considered-harmful/</feedburner:origLink></item>
		<item>
		<title>Have we really fallen this far?</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/y39VwalBVRI/</link>
		<comments>http://blog.componentoriented.com/2010/06/have-we-really-fallen-this-far/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 11:30:55 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Disconnected rants]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[Wall Street Journal]]></category>
		<category><![CDATA[writer]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=962</guid>
		<description><![CDATA[I am a grammar zealot.
It&#8217;s entirely my Mother&#8217;s fault; she drilled proper grammar into my skull from an early age, and I now cannot help but notice the absolutely atrocious spelling, grammar, and punctuation that permeates our culture.
Have you ever watched a history documentary where they read some crusty, tattered old manuscript that some Civil [...]]]></description>
			<content:encoded><![CDATA[<p>I am a grammar zealot.</p>
<p>It&#8217;s entirely my Mother&#8217;s fault; she drilled proper grammar into my skull from an early age, and I now cannot help but notice the absolutely atrocious spelling, grammar, and punctuation that permeates our culture.</p>
<p>Have you ever watched a history documentary where they read some crusty, tattered old manuscript that some Civil War soldier left behind?  Not ol&#8217; Honest Abe, or even Grant or Sherman &#8212; just some guy who wrote to his folks or his girl.  These everyday soldiers invariably sound like Shakespeare compared to the IM-speaking crackberry addicts we meet today.</p>
<p>But surely, even if the everyday American has given up on proper grammar, our journalists are still upholding these standards.  Surely, they manage to set a positive example for all of us: showing us the error of our ways and offering their own writing as a shining sample of excellence, and surely among all of these highly-trained journalists, the writers for the Wall Street Journal would be right at the top.</p>
<p>Surely, this must be true.  Right?</p>
<p>Sadly, no.  Here&#8217;s an excerpt from an article <a href="http://online.wsj.com/article/SB10001424052748704370704575227754131412596.html?mod=WSJ_hpp_LEADNewsCollection">I saw from the WSJ</a> a while back (preserved with spelling, capitalization, etc., exactly as found in the article online):</p>
<blockquote><p>&#8220;A lot of traders are getting carried out of there seats. There are lots of liquidations including hedge funds out of riskier assets,&#8221; Michael Franzese, head of Treasury trading at Wunderlich Securities in New York. &#8220;No one was expecting this sell off in stocks and the euro and a flight to quality trade is in full effect and it not yields levels it just capital preservation.&#8221;</p></blockquote>
<p>Read it again.  Sorry &#8211; yes, I know it hurts.  This time, just try to figure out what it&#8217;s supposed to say.  I&#8217;ll bet you can&#8217;t do it.  It&#8217;s like swimming a 100 IM in a pool full of Jello.</p>
<p>People, if you&#8217;re going to commit anything to writing, please make a passing attempt to make it readable.  If you supposedly make your living as a writer, don&#8217;t ever, ever do anything like this.</p>
<p>Thanks.</p>
<p><map name='google_ad_map_962_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/962?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_962_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=962&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F06%2Fhave-we-really-fallen-this-far%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Have+we+really+fallen+this+far%3F+http://fiy4i.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Have+we+really+fallen+this+far%3F+http://fiy4i.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/UlRqL2F7J-UXPArwaL914ahxrgs/0/da"><img src="http://feedads.g.doubleclick.net/~a/UlRqL2F7J-UXPArwaL914ahxrgs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/UlRqL2F7J-UXPArwaL914ahxrgs/1/da"><img src="http://feedads.g.doubleclick.net/~a/UlRqL2F7J-UXPArwaL914ahxrgs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/y39VwalBVRI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/06/have-we-really-fallen-this-far/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/06/have-we-really-fallen-this-far/</feedburner:origLink></item>
		<item>
		<title>They finally made my hover-screen</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/LNDxkrj9vgg/</link>
		<comments>http://blog.componentoriented.com/2010/05/they-finally-made-my-hover-screen/#comments</comments>
		<pubDate>Thu, 20 May 2010 15:03:29 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Disconnected rants]]></category>
		<category><![CDATA[touchscreen]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=959</guid>
		<description><![CDATA[I did a little double-take last week as I was leafing through my RSS feeds.  Engadget had a story about a touchscreen that tracks a hovering finger:

So what?
About two and a half years ago, I wrote an article about usability where I ran into this exact problem while using a touch-screen phone.
I&#8217;m glad someone was [...]]]></description>
			<content:encoded><![CDATA[<p>I did a little double-take last week as I was leafing through my RSS feeds.  <a class="zem_slink" title="Engadget" rel="homepage" href="http://www.engadget.com">Engadget</a> had a story about <a href="http://www.engadget.com/2010/04/23/cypress-touchscreens-track-hovering-fingers-make-devices-even-m/2#c27381318">a touchscreen that tracks a hovering finger</a>:</p>
<p><object id="flashObj" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="486" height="412" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=79173949001&amp;playerID=1875385286&amp;domain=embed&amp;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://c.brightcove.com/services/viewer/federated_f9/1875385286?isVid=1" /><param name="name" value="flashObj" /><param name="flashvars" value="videoId=79173949001&amp;playerID=1875385286&amp;domain=embed&amp;dynamicStreaming=true" /><param name="allowfullscreen" value="true" /><embed id="flashObj" type="application/x-shockwave-flash" width="486" height="412" src="http://c.brightcove.com/services/viewer/federated_f9/1875385286?isVid=1" name="flashObj" allowscriptaccess="always" swliveconnect="true" allowfullscreen="true" seamlesstabbing="false" base="http://admin.brightcove.com" flashvars="videoId=79173949001&amp;playerID=1875385286&amp;domain=embed&amp;dynamicStreaming=true" bgcolor="#FFFFFF"></embed></object></p>
<p>So what?</p>
<p>About two and a half years ago, I wrote<a href="http://blog.componentoriented.com/2008/04/on_tooltips_and_affordances/"> an article about usability</a> where I ran into this exact problem while using a touch-screen phone.</p>
<p>I&#8217;m glad someone was listening!</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/e44d883e-d16b-4f7f-9525-ae40e52be854/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=e44d883e-d16b-4f7f-9525-ae40e52be854" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p><map name='google_ad_map_959_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/959?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_959_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=959&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F05%2Fthey-finally-made-my-hover-screen%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=They+finally+made+my+hover-screen+http://xc82d.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=They+finally+made+my+hover-screen+http://xc82d.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/z-Zs5y3qj1M126h_f5hpFNCOy0Y/0/da"><img src="http://feedads.g.doubleclick.net/~a/z-Zs5y3qj1M126h_f5hpFNCOy0Y/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/z-Zs5y3qj1M126h_f5hpFNCOy0Y/1/da"><img src="http://feedads.g.doubleclick.net/~a/z-Zs5y3qj1M126h_f5hpFNCOy0Y/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/LNDxkrj9vgg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/05/they-finally-made-my-hover-screen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/05/they-finally-made-my-hover-screen/</feedburner:origLink></item>
		<item>
		<title>Nothing short of world domination will do</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/KB90stOGCm0/</link>
		<comments>http://blog.componentoriented.com/2010/04/nothing-short-of-world-domination-will-do/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 16:37:46 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Disconnected rants]]></category>
		<category><![CDATA[The Business of Software]]></category>
		<category><![CDATA[Apple. Steve Jobs]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Monopoly]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=940</guid>
		<description><![CDATA[A good friend of mine sent me an email commenting on the changes in Apple&#8217;s Developer Program license for the 4.0 iPhone OS, and I decided to share my thoughts here, as my email grew to become the tome you see here.




Image via Wikipedia



Apple has, as you&#8217;ve probably heard, indicated that it will allow apps on [...]]]></description>
			<content:encoded><![CDATA[<p>A good friend of mine sent me an email commenting on the <a href="http://daringfireball.net/2010/04/why_apple_changed_section_331">changes in Apple&#8217;s Developer Program license</a> for the 4.0 iPhone OS, and I decided to share my thoughts here, as my email grew to become the tome you see here.</p>
<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://commons.wikipedia.org/wiki/Image:Steve_Jobs_WWDC07.jpg"><img title="Steve Jobs at the WWDC 07" src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Steve_Jobs_WWDC07.jpg/300px-Steve_Jobs_WWDC07.jpg" alt="Steve Jobs at the WWDC 07" width="300" height="295" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://commons.wikipedia.org/wiki/Image:Steve_Jobs_WWDC07.jpg">Wikipedia</a></dd>
</dl>
</div>
</div>
<p><a href="http://blog.componentoriented.com/tag/apple/">Apple</a> has, as you&#8217;ve probably heard, indicated that it will allow apps on the iPhone and iPad only if they&#8217;re written with <a href="http://blog.componentoriented.com/tag/apple/">Apple</a>-native languages and tools, and it&#8217;s <a href=" http://theflashblog.com/?p=1888">widely-believed that this has been done as a form of anti-Flash</a> &#8220;nuclear weapon&#8221;, as my friend commented.</p>
<p>I&#8217;m not convinced that this move is directed only at Flash, though.  Any third-party tool (<a href="http://monotouch.net/">MonoTouch</a>, for example) <a href="http://forums.monotouch.net/yaf_postst645.aspx">will be impacted by this move</a>.   Some people have even <a href=" http://www.appleinsider.com/articles/10/04/09/apples_prohibition_of_flash_built_apps_in_iphone_4_0_related_to_multitasking.html">speculated that this move is intended to help iPhone multitasking</a> (&#8220;BS&#8221;, I say &#8212; write a damned API).  While all of these things might be factors in this move, I believe that the fundamental driver here is a maniacal need for Steve Jobs to control the entire digital experience for his users; nothing short of this will be enough.</p>
<p><a href="http://blog.componentoriented.com/tag/apple/">Apple</a> isn&#8217;t perceived among consumers to be monopolistic simply because they don&#8217;t have a majority market share yet.  The thing that just kills me about <a href="http://blog.componentoriented.com/tag/apple/">Apple</a> right now, though, is that within their customer base, they&#8217;re monopolistic to an extent that would have gotten <a href="http://blog.componentoriented.com/tag/microsoft/">Microsoft</a> run out of town on a rail, even in its heyday.</p>
<div><a href="http://blog.componentoriented.com/tag/apple/">Apple</a> is a cult.  They mandate congruent behavior and thinking with an iron fist, and won&#8217;t let trivia such as fairness or consistency cloud their vision (witness the iPhone app approval process).</div>
<div>Go ahead and float up to 50,000 feet and look at the whole &#8220;app&#8221; strategy on the iPhone.  Here&#8217;s what I see:</div>
<ul>
<li>All functionality on these devices is approved by <a href="http://blog.componentoriented.com/tag/apple/">Apple</a>.</li>
<li>When rejecting an app or content, &#8220;because we said so&#8221; is sufficient reason.</li>
<li>&#8220;We changed our minds&#8221; is enough to get an app pulled after approval &#8212; including yanking it off any devices upon which it&#8217;s installed.</li>
<li>To get an app on your device, you have to go through iTunes.</li>
<li>To build an app, you have to use <a href="http://blog.componentoriented.com/tag/apple/">Apple</a> development products (for all intents and purposes).</li>
<li>To use <a href="http://blog.componentoriented.com/tag/apple/">Apple</a> development products, you have to be running a Mac.</li>
</ul>
<p>That&#8217;s a lot of kool-aide, folks, but if you think that&#8217;s bad, it&#8217;s going to get worse.<DIV style="padding: 2px;
margin: 1em 1.5em 1em 0.5em;
background: #FFEC9B none repeat scroll 0% 0%;
border: solid;
border-width: thin;
border-color: #AE9F44;
display: block; 
float: left; 
width: 20em;"><DIV style="padding: 5px; 
color: #0037A3; 
font-weight: bold; 
font-size: 9pt;">A benevolent monopoly?</DIV><DIV style="background: #FEFFF7; 
padding: 0.5em; 
color: #0062A8;"> Despite my ranting here,  I can appreciate the benefits of a technology monopoly.  The incredible growth of the PC platform was made possible mainly because of Wintel&#8217;s near-monopoly &#8212; it created a huge ecosystem for hardware companies, software companies, and consumers.  But as much as that partnership was effectively a monopoly, they still let mice scurry around and fight over table scraps, and the table scraps were enough to keep a lot of mice fed.</DIV></DIV></p>
<p>I got a new phone last week.  Although I&#8217;ve experienced some teething pains, one of the most pleasant parts of the experience was spinning up my contact list and calendar.  I pointed a new Exchange account at <a href="http://www.nuevasync.com/">Nuevasync </a>(which connects to my Google account), and sucked down all my contacts and appoinments at 3G speed.  Easily the most painless phone transition I&#8217;ve ever experienced.  This is what cloud computing looks like for the consumer.</p>
<p><a href="http://www.readwriteweb.com/cloud/2010/02/a-first-look-at-apples-massive.php">Apple is building a gigantic data center in North Carolina</a>.  Care to take a guess why?</p>
<p>Data centers this size are being built today for cloud computing, almost exclusively.  <a href="http://blog.componentoriented.com/tag/apple/">Apple</a> is going to suck your entire digital identity into their brand-new data center, and you&#8217;ll never see it alive again unless you keep paying your monthly ransom.  As long as you play along, life will be wonderful, in a fuzzy, heavily-sedated way, but if you engage in nonconformist behavior (trying to get your data back, for instance), you should expect to be punished as you&#8217;d expect to punish any troublemaker.</p>
<p>Another friend of mine asked me the other day how he could get his DRM-protected music (bought on iTunes) off an old PC and onto his new one.  This is a smart man, by the way &#8211; a successful businessman, and he&#8217;d tried to figure this out and was stumped.  If you&#8217;ve ever tried this, I&#8217;m sure you can understand.</p>
<p>Take a good whiff, folks, because <em>that&#8217;s</em> the experience we could be signing up for with <strong><em>all</em></strong> of your data.</p>
<p>I&#8217;ll pass.  How about you?</p>
<p><strong>Related articles by Zemanta</strong></p>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.cultofmac.com/adobe-to-apple-go-screw-yourself/37435">Adobe To Apple: &#8220;Go Screw Yourself&#8221;</a> (cultofmac.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.appscout.com/2010/04/iphone_os_4_developer_agreemen.php">iPhone OS 4 Developer Agreement Further Enforces Flash Ban</a> (appscout.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.businessinsider.com/henry-blodget-apple-boots-google-off-iphone-40-2010-4">Silicon Alley Insider: Apple Boots Google Off iPhone 4.0 (AAPL, GOOG)</a> (businessinsider.com)</li>
<li class="zemanta-article-ul-li"><a href="http://r.zemanta.com/?u=http%3A//www.guardian.co.uk/technology/blog/2010/apr/09/apple-adobe-flash-developer-row&amp;a=16206275&amp;rid=742d805c-ccfc-4f31-89a3-067111a9a85f&amp;e=2646f9744680977aacb39a1112d1a47b">Apple v Adobe: this time it&#8217;s executable</a> (guardian.co.uk)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/742d805c-ccfc-4f31-89a3-067111a9a85f/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=742d805c-ccfc-4f31-89a3-067111a9a85f" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p><map name='google_ad_map_940_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/940?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_940_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=940&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F04%2Fnothing-short-of-world-domination-will-do%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Nothing+short+of+world+domination+will+do+http://ztr9w.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Nothing+short+of+world+domination+will+do+http://ztr9w.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/51uzZ6YeaxSChxJaw053NcFrA0o/0/da"><img src="http://feedads.g.doubleclick.net/~a/51uzZ6YeaxSChxJaw053NcFrA0o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/51uzZ6YeaxSChxJaw053NcFrA0o/1/da"><img src="http://feedads.g.doubleclick.net/~a/51uzZ6YeaxSChxJaw053NcFrA0o/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/KB90stOGCm0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/04/nothing-short-of-world-domination-will-do/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/04/nothing-short-of-world-domination-will-do/</feedburner:origLink></item>
		<item>
		<title>Meet the new phone, same as the old phone</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/CMkcb38fav0/</link>
		<comments>http://blog.componentoriented.com/2010/03/meet-the-new-phone-same-as-the-old-phone/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 16:45:13 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Disconnected rants]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[Edge]]></category>
		<category><![CDATA[HTC HD2]]></category>
		<category><![CDATA[signal strength]]></category>
		<category><![CDATA[T-Mobile]]></category>
		<category><![CDATA[T-Mobile Wing]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=925</guid>
		<description><![CDATA[I&#8217;ve been soldiering on for a couple of years on a T-Mobile Wing.  That old phone did some pretty great things for my personal organization, but I always seemed to struggle with connection issues.
Last weekend, I finally bit the bullet and picked up a new HTC HD2.  Make no mistake, this is a spectacular piece [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been soldiering on for a couple of years on a <a class="zem_slink" title="T-Mobile" rel="homepage" href="http://www.t-mobile.com/">T-Mobile</a> <a class="zem_slink" title="HTC P4350" rel="wikipedia" href="http://en.wikipedia.org/wiki/HTC_P4350">Wing</a>.  That old phone did some pretty great things for my personal organization, but I always seemed to struggle with connection issues.</p>
<p>Last weekend, I finally bit the bullet and picked up a new <a class="zem_slink" title="HTC HD2" rel="wikipedia" href="http://en.wikipedia.org/wiki/HTC_HD2">HTC HD2</a>.  Make no mistake, this is a spectacular piece of hardware, but sadly, I still find myself chasing connection issues.  I&#8217;ll share some thoughts on the rest of the phone later if I end up keeping it, but right now, I want to detail my signal strength problems.  I&#8217;ll continue to update this post as the fun and games ensues, so if I (or T-Mobile) manage to fix the problem, this post will show the resolution, and if not, you&#8217;ll be able to see why I left.  All of the observations here, unless otherwise indicated, occured in exactly the same spot in <a title="Columbus, Ohio" rel="wikipedia" href="http://en.wikipedia.org/wiki/Columbus%2C_Ohio">Columbus, Ohio</a>, near the OSU campus (ie, not while moving around).</p>
<p>Sunday, 3/28</p>
<ul>
<li>Bought the phone, took it home, charged it, and powered on.  No data connection.  It turns out that the upgrade to <a class="zem_slink" title="3G" rel="wikipedia" href="http://en.wikipedia.org/wiki/3G">3G</a> takes a while to provision.</li>
</ul>
<p>Monday, 3/29</p>
<ul>
<li>Signal bounces around all day.  Full-strength Edge, then nothing, then 3G, then nothing, then no connection at all.  This goes on most of the day, with almost all day spent on Edge only (no 3G).</li>
<li>In the evening, I got a good 3G signal, and the phone worked great.</li>
</ul>
<p>Tuesday, 3/30</p>
<ul>
<li>Slightly better luck with 3G, but not by much.</li>
<li>I talked to a couple people who said they tried to call me several times &#8212; the phone never rang, and didn&#8217;t show any missed calls.</li>
</ul>
<p>Wednesday, 3/31</p>
<ul>
<li>Noticed the same problems.  Signal really bouncing in the morning.</li>
<li>Called T-Mobile customer care at around 11:45.  Rep advised me to power off and back on a couple minutes later, and asked if I could call from another line (I can&#8217;t).</li>
<li>Immediately upon powering up, here&#8217;s what I saw:</li>
<li>11:57 &#8211; 3G w/ 2 bars.</li>
<li>11:58 &#8211; Edge w/ 3 bars.</li>
<li>12:00 &#8211; no service (I was trying to dial voice mail).</li>
<li>12:00 &#8211; Edge w/ 4 bars (after I stopped trying to dial VM).</li>
<li>12:01 &#8211; no service (as soon as I dialed VM).</li>
<li>12:20 &#8211; 3G w/ 3 bars.</li>
<li>12:20 &#8211; Call to VM fails.</li>
<li>12:22 &#8211; 3G w/ 2 bars.</li>
<li>12:22 &#8211; Call to VM fails.</li>
<li>12:24 &#8211; Call to VM fails.  &#8221;Phone operation failed&#8221; message.  Immediately saw Edge w/ 4 bars, then no signal.</li>
<li>12:26 &#8211; Finally completed a call to VM.</li>
<li>12:27 &#8211; no service.</li>
<li>12:28 &#8211; no service &#8211; unable to place call.</li>
<li>12:30 &#8211; placed call &#8211; it worked!</li>
<li>12:39 &#8211; Edge w/ 4 bars.  As a side-effect of the connection-hunting, my battery is down to 57% &#8211; I noticed this sort of decreased battery life when my Wing was connection-hunting, too.  Done troubleshooting for now &#8211; my lunch is over.</li>
</ul>
<p>(watch below for more updates)<span id="more-925"></span></p>
<p>Wednesday, 3/31 (continued)</p>
<ul>
<li>1:27 &#8211; 3G / 2 bars.  Tried to update twitter client &#8211; &#8220;There was a connection error while attempting to download tweets.&#8221;</li>
<li>1:47 &#8211; Edge / 4 bars.  Browser fails; twitter fails.</li>
<li>1:57 &#8211; no service.</li>
<li>2:05 &#8211; no service.</li>
<li>2:06 &#8211; 4 bars, no data service indicated.</li>
<li>2:07 &#8211; no service.</li>
<li>2:10 &#8211; Edge / 4 bars.  Changed to no service as soon as I tried to update twitter.</li>
<li>2:11 &#8211; power off.</li>
<li>2:18 &#8211; power on.</li>
<li>2:23 &#8211; no service.  Tried calling voice mail &#8211; call failed.</li>
<li>2:25 &#8211; Edge / 4 bars, then right back to no service.</li>
<li>2:28 &#8211; 3G / 2 bars.  Twitter update works.</li>
<li>2:32 &#8211; 3G / 3 bars.</li>
<li>2:38 &#8211; 3G / 3 bars.</li>
<li>2:51 &#8211; 3G / 2 bars.</li>
<li>3:17 &#8211; 3G / 2 bars.</li>
<li>4:16 &#8211; 3G / 2 bars, but got email error on send-receive.  Browser worked.</li>
<li>I also found out at about this time that people had tried calling me and hadn&#8217;t been able to reach me (and didn&#8217;t leave a voice mail).  My phone never rang, and it didn&#8217;t show any missed calls.</li>
<li>I stopped into the T-Mobile store where I bought the phone and shared my experience thus far.  The guy I talked to there was very cordial &#8211; he called up customer service and they decided together to try replacing my <a class="zem_slink" title="Subscriber Identity Module" rel="wikipedia" href="http://en.wikipedia.org/wiki/Subscriber_Identity_Module">SIM card</a>.</li>
</ul>
<p>Thursday, 4/1</p>
<ul>
<li>Day 5 with the phone; day two of keeping a service log.</li>
<li>8:22 &#8211; 3G / 3 bars.</li>
<li>9:36 &#8211; 3G / 2 bars.  Twitter fails.</li>
<li>9:39 &#8211; Edge / 4 bars.  Twitter fails.</li>
<li>9:41 &#8211; No service.</li>
<li>10:00 &#8211; 3G / 2 bars.</li>
<li>10:29 &#8211; 3G / 1 bar.  Twitter ok.</li>
<li>11:11 &#8211; 3G / 1 bar.  Twitter fails; browser ok.</li>
<li>1:42 &#8211; &#8220;G&#8221; / 4 bars.  What&#8217;s &#8220;G&#8221;?  Twitter fails; browser ok.</li>
<li>4:20 &#8211; 3G / 2 bars.  Twitter fails; browser fails.</li>
<li>4:25 &#8211; &#8220;G&#8221; / 4 bars.  Browser works; twitter fails.</li>
<li>4:27 &#8211; No service.</li>
<li>4:35 &#8211; Got a voice mail notification, but my phone never rang.</li>
<li>I&#8217;m starting to appreciate how much voice service is affected &#8212; this isn&#8217;t just a data problem.  I saw intermittent data service from time to time on my old phone in this location,  but I rarely had problems with voice service.  It&#8217;s becoming clear, though that right now, my brand-new flagship HTC HD2 is performing substantially worse than a three-year-old Wing <em>after I ran the Wing over in my car</em>.</li>
</ul>
<p>Friday, 4/2</p>
<ul>
<li>10:23 &#8211; 3G / 2 bars.  Browser fails; foursquare fails; twitter fails.</li>
<li>10:26 &#8211; 3G / 1 bar.  Twitter works; foursquare fails.</li>
<li>10:27 &#8211; 3G / 1 bar.  Browser fails; foursquare fails.</li>
<li>10:31 &#8211; 3G / 1 bar.  Browser fails.</li>
<li>10:33 &#8211; 3G / 2 bars.  Call to VM fails.</li>
<li>10:34 &#8211; 3G / 2 bars.  Browser fails.</li>
<li>10:35 &#8211; 3G / 2 bars.  Call to VM fails.</li>
<li>10:43 &#8211; 3G / 2 bars.  Call to VM fails.</li>
<li>10:48 &#8211; 3G / 4 bars.  Call to VM works; browser fails.</li>
<li>10:49 &#8211; No service.</li>
<li>Somewhere around 2:30 &#8211; received VM notification.  Phone never rang, and no missed calls are shown.</li>
<li>2:51 &#8211; 3G / 1 bar.  Call to VM fails.</li>
<li>2:55 &#8211; 3G / 2 bars.  Call to VM works.</li>
<li>3:38 &#8211; 3G / 3 bars.  Call to VM fails.  Browser fails.</li>
<li>4:22 &#8211; Tried changing 3G settings to HSDPA only.  Phone off.</li>
<li>4:32 &#8211; Restart &#8211; now running HSDPA only.  Call to VM &#8211; &#8220;Phone operation failed&#8221;.</li>
<li>4:49 &#8211; No service.  VM failed.  Tried to call my number w/ Google voice &#8211; failed.</li>
<li>4:51 &#8211; Back to default 3G setting (HSDPA / HSUPA).</li>
<li>4:54 &#8211; VM fails.</li>
<li>4:55 &#8211; 3G / 2 bars.  Google voice call works.</li>
</ul>
<p>Saturday, 4/3</p>
<ul>
<li>Stopped into a T-Mobile store near my house.  The assistant manager there told me I needed to go back to the store where I bought the phone for help.</li>
<li>Back to the store where I bought the phone.  Talked to the same guy I&#8217;d spoken with on Wednesday night.  He&#8217;s going to try swapping this phone out with a new one as soon as they get a shipment in.  I expect to hear from him on Tuesday.</li>
</ul>
<p>Monday, 4/5</p>
<ul>
<li>9:16 &#8211; Incoming call test (Google voice) works.</li>
<li>9:27 &#8211; VM fails.</li>
<li>9:32 &#8211; Today, I have my backup phone with me.  This is a $20 Nokia prepaid candybar phone I picked up at Wal-Mart while my Wing was out of service.  I swapped my sim into this phone and fired it up.  I see 5 bars and I can call VM.</li>
<li>9:43 &#8211; VM works on the Nokia.</li>
<li>11:17 &#8211; Chat w/ T-Mobile customer care rep to bring them up to speed.  The rep said they were issuing a ticket to have engineering look at the problem.  They should have an update in &#8220;24 to 72 hours.&#8221;</li>
</ul>
<p>Tuesday, 4/6</p>
<ul>
<li>9:50 &#8211; VM fails.</li>
<li>10:14 &#8211; VM fails.</li>
<li>10:16 &#8211; VM fails.</li>
<li>10:17 &#8211; Power down, sim moved to $20 Wal-Mart phone.</li>
<li>10:18 &#8211; Nokia shows 4 bars, call to VM works, Google voice can call the Nokia phone just fine.  There&#8217;s a T-Mobile signal here, for sure.</li>
<li>1:52 &#8211; Sim back in HD2.  Showing no signal.  VM fails.</li>
<li>1:55 &#8211; Sim in Nokia.  Five bars.  VM works.  Considering strapping the Nokia onto the back of the HD2 with a couple of rubber bands.  Give me the HD2 with the radio on the Nokia, and I&#8217;d be a happy man.</li>
<li>4:30 &#8211; Called back in to T-Mobile customer support to check on the status of the ticket I opened yesterday.  There was no engineering update yet, but the customer service rep got a technician on the line to see if he could help.  He asked if I could use WiFi to call (no), and if I&#8217;d tried manual network selection (I hadn&#8217;t yet).  I&#8217;ll play with manual settings a bit tomorrow to see if I can see any difference.</li>
<li>During the customer service call, one of the people I talked to tried to tell me that T-Mobile wasn&#8217;t aware of any problems like this with the HD2.  I&#8217;ve started adding links at the end of this article to forum posts where other people have indicated problems.</li>
<li>I did not hear from the guy at the T-Mobile store who told me he&#8217;d be calling me today.</li>
</ul>
<p>Wednesday, 4/7</p>
<ul>
<li>9:05 &#8211; Incoming call test works (via Google Voice).</li>
<li>Checked manual network selection &#8211; only one available network listed &#8211; &#8220;T-Mobile&#8221;, so I left the selection on &#8220;manual&#8221;.</li>
<li>10:43 &#8211; Google Voice fails to reach my phone.</li>
<li>10:44 &#8211; VM works; Google Voice fails.</li>
<li>10:45 &#8211; Tried selecting  &#8221;Terminate Data Connection&#8221; on shutdown screen.</li>
<li>10:46 &#8211; Google Voice fails; VM fails.</li>
<li>10:48 &#8211; Sim card in Nokia.  Immediate VM notification from previous Google Voice connection, and VM works just fine.  Showing four bars.</li>
<li>Still no call from local T-Mobile store.</li>
</ul>
<p>Thursday, 4/8</p>
<ul>
<li>8:55 &#8211; Incoming call test works (via Google Voice).</li>
<li>9:06 &#8211; No service.</li>
<li>9:07 &#8211; Manual network selection shows three networks:  &#8221;T-Mobile&#8221;, &#8220;T-Mobile&#8221;, and &#8220;AT&amp;T&#8221;.  Chose the first &#8220;T-Mobile&#8221; network.  No service shown.</li>
<li>9:08 &#8211; Manual network selection again.  This time, searching takes a long time (over a minute) and comes up with same list.  I chose the second &#8220;T-Mobile&#8221; entry.  Signal shows four bars / no data service indicated.</li>
<li>9:12 &#8211; Tried calling VM &#8211; phone popped up the network selection screen showing No Service.  Repeated &#8220;Find Network&#8221;.  Signal shows Edge / 4 bars while searching.  Searching takes around a minute again.  Chose &#8220;AT&amp;T&#8221;, but got Network error: &#8220;Cannot register on selected network.&#8221;</li>
<li>9:15 &#8211; Find network again.  Chose first T-Mobile network.</li>
<li>9:16 &#8211; 3G / 4 bars.</li>
<li>9:17 &#8211; Before I could even test the great signal (!) above, phone shows no service again.  VM fails and pops up the network selection screen.</li>
<li>9:18 &#8211; 3G / 2 bars.  VM fails.</li>
<li>9:19 &#8211; Back to &#8220;automatic&#8221; network selection &#8211; manual isn&#8217;t doing anything to help me.</li>
<li>9:20 &#8211; 3G / 2 bars.  VM fails.  Power down &#8211; sim is going into the Nokia.</li>
<li>9:22 &#8211; Nokia shows 4 bars.  VM works just fine right off the bat.</li>
<li>10:20 &#8211; Per thread on T-Mobile forum, I tried changing my TcpWindowSize.  In the registry, HKLM/Comm/Tcpip/Parms/TcpWindowSize was set to 65536 (stock).  I changed this to 98304 and cycled power.</li>
<li>10:26 &#8211; First test call to VM was successful.</li>
<li>10:28 &#8211; VM call &#8211; &#8220;Phone operation failed.&#8221;   In the last three minutes, I saw the phone go to &#8220;No service&#8221;, then to Edge w/ 4 bars, then back to No service, then to 3G w/ 2 bars.  A call to voice mail when the phone showed 3G / 2 bars failed immediately.</li>
<li>10:32 &#8211; Back to default setting for TcpWindowSize.  Phone powering off, and sim back in Nokia.</li>
<li>11:14 &#8211; The guy on the forum who suggested changing the TcpWindowSize thought I didn&#8217;t wait long enough for the phone to &#8220;go through its cycles&#8221;, so I&#8217;m trying one more time.  TcpWindowSize changed back to 98304 and the phone is powering up.</li>
<li>11:15 &#8211; Phone is up.  No service shown.</li>
<li>11:16 &#8211; Phone shows Edge / 4 bars.  Before I could try a call, it&#8217;s back to no service.</li>
<li>11:17 &#8211; No service.</li>
<li>11:18 &#8211; No service.  Are we still &#8220;going through cycles?&#8221;</li>
<li>11:19 &#8211; No service.  Tried a call to VM anyway.  Call connected, and the phone immediately showed 4 bars, no data connection.  WTF??</li>
<li>11:20 &#8211; Edge / 4 bars.  Tried Google Voice call &#8211; it connected.</li>
<li>11:21 &#8211; No service.  Call to VM fails.</li>
<li>11:22 &#8211; Edge / 4 bars, then no service a second later.  Google Voice call fails.  VM fails.</li>
<li>11:24 &#8211; No service.  VM fails.</li>
<li>11:25 &#8211; No service, then 4 bars / no data service.  VM indication received from failed Google Voice call.</li>
<li>11:26 &#8211; VM works.</li>
<li>11:27 &#8211; Five bars / no data service.</li>
<li>11:28 &#8211; No service.  VM fails.</li>
<li>11:29 &#8211; One bar / no data service, then 3G / 1 bar.</li>
<li>11:30 &#8211; 3G / 1 bar.  VM fails.  TcpWindowSize reset, power down, sim back in Nokia.</li>
</ul>
<p>Monday, 4/19</p>
<ul>
<li>Obviously, I haven&#8217;t updated for a while, but things have been pretty much working the same as I&#8217;ve observed to this point.  I received two glimpses of hope today, though:  I got an email from HTC indicating that they&#8217;re looking into the problem (I originally contacted them back on April 9).  I also heard from the store where I bought my phone &#8212; they&#8217;ve finally gotten new stock in, and I&#8217;m cleared to go and exchange my handset to see if new hardware helps.  Maybe there&#8217;s hope, yet.</li>
</ul>
<p>So, who else is seeing problems?  As indicated earlier, T-Mobile seems not to be aware that this is a widespread issue with the HD2, so I&#8217;m going to try to do my part here to collect observations from other people.  These are links to other places where I&#8217;ve seen people complain about similar problems:</p>
<ul>
<li><a href="http://forums.t-mobile.com/t5/HTC-HD2/network-reception-PROBLEMS-with-HD2/td-p/349024">http://forums.t-mobile.com/t5/HTC-HD2/network-reception-PROBLEMS-with-HD2/td-p/349024</a></li>
<li><a href="http://forum.xda-developers.com/showthread.php?t=659863">http://forum.xda-developers.com/showthread.php?t=659863</a></li>
<li><a href="http://forum.xda-developers.com/showthread.php?t=614119">http://forum.xda-developers.com/showthread.php?t=614119</a></li>
<li><a href="http://forums.t-mobile.com/t5/HTC-HD2/Dude-at-a-Sprint-store-said/td-p/349869">http://forums.t-mobile.com/t5/HTC-HD2/Dude-at-a-Sprint-store-said/td-p/349869</a></li>
<li><a href="http://forums.t-mobile.com/t5/HTC-HD2/Anyone-in-the-Minneapolis-St-Paul-area-Please-Read/td-p/347469">http://forums.t-mobile.com/t5/HTC-HD2/Anyone-in-the-Minneapolis-St-Paul-area-Please-Read/td-p/347469</a></li>
<li><a href="http://forums.t-mobile.com/t5/HTC-HD2/3G-Is-Not-What-I-Thought-It-Was/td-p/348462">http://forums.t-mobile.com/t5/HTC-HD2/3G-Is-Not-What-I-Thought-It-Was/td-p/348462</a></li>
<li><a href="http://forums.t-mobile.com/t5/HTC-HD2/Connection-signal-problems/td-p/347659">http://forums.t-mobile.com/t5/HTC-HD2/Connection-signal-problems/td-p/347659</a> (mine).</li>
<li><a href="http://forums.t-mobile.com/t5/HTC-HD2/The-Returning-My-HD2-and-Getting-Something-Else-Thread/td-p/345765">http://forums.t-mobile.com/t5/HTC-HD2/The-Returning-My-HD2-and-Getting-Something-Else-Thread/td-p/345765</a></li>
</ul>
<p>[update - 5/20/2010]</p>
<p>It&#8217;s been a while since I&#8217;ve updated my status here, so I thought I&#8217;d add a few notes about how things are playing out.  I swapped handsets back on April 20.  This had very little effect on performance, though I saw a slight placebo effect for a couple days, I think.  Interestingly, I&#8217;d seen a couple of forum posts from people who talked about two hardware versions of the phone, where the earliest phones had red reset buttons, and later ones had yellow.  I can confirm that the first phone I had did, indeed have a red reset button, and the replacement phone (my current phone) has a yellow button.  Beyond the color of the button, I can discern no difference in the phones whatsoever, but that doesn&#8217;t mean there aren&#8217;t internal differences that I can&#8217;t see.</p>
<p>Over the course of several weeks, I&#8217;ve seen marginal improvements that appear unrelated to anything I&#8217;m doing on the phone, so I attribute these to network tuning on T-Mobile&#8217;s part.</p>
<p>The other big event has been HTC&#8217;s (followed by T-Mobile&#8217;s) release of a new firmware ROM (and radio ROM) for this phone.  I&#8217;m now running the 2.13 ROM with 2.10 radio ROM, and I&#8217;m seeing slightly better performance again.  At this point, I believe that voice connectivity is back close to the level of my old T-Mobile Wing, which is the minimum bar I wanted to see.  Data connectivity is still a little hit-and-miss, but it&#8217;s better than when I got the phone, and in a lot of locations, it&#8217;s quite good.  I still maintain that when the phone and network are working right, this is a really nice device.</p>
<p>I&#8217;ve decided to look into writing an application to log cell tower connections in a way that will let me see if I&#8217;m switching towers when I&#8217;m sitting still.  I believe this is the cause of the &#8220;signal hunting&#8221; I&#8217;ve seen, and I&#8217;d like to be able to provide some good information to HTC.  I&#8217;ve received a couple more contacts from HTC about this.  They&#8217;ve really been pretty good about following up on things, considering the fact that T-Mobile is really supposed to be taking the lead on customer care.  In any event, I think that if I can generate some reliable data for them, HTC will put it to good use.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/26fbc159-5030-4d6d-8b28-265f834f6ba8/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=26fbc159-5030-4d6d-8b28-265f834f6ba8" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p><map name='google_ad_map_925_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/925?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_925_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=925&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F03%2Fmeet-the-new-phone-same-as-the-old-phone%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Meet+the+new+phone%2C+same+as+the+old+phone+http://deokx.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Meet+the+new+phone%2C+same+as+the+old+phone+http://deokx.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/-iJgPCflzEcPgz5hmpamPwWN304/0/da"><img src="http://feedads.g.doubleclick.net/~a/-iJgPCflzEcPgz5hmpamPwWN304/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-iJgPCflzEcPgz5hmpamPwWN304/1/da"><img src="http://feedads.g.doubleclick.net/~a/-iJgPCflzEcPgz5hmpamPwWN304/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/CMkcb38fav0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/03/meet-the-new-phone-same-as-the-old-phone/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/03/meet-the-new-phone-same-as-the-old-phone/</feedburner:origLink></item>
		<item>
		<title>A feature greater than the sum of its bugs</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/kxx58SWJtJk/</link>
		<comments>http://blog.componentoriented.com/2010/03/a-feature-greater-than-the-sum-of-its-bugs/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:54:18 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Disconnected rants]]></category>
		<category><![CDATA[bug fix]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[root cause]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=759</guid>
		<description><![CDATA[Douglas Adams, muse to software developers everywhere, had this to say about bugs:
&#8220;Just as a slow series of clicks when speeded up will lose the definition of each individual click and gradually take on the quality of a sustained and rising tone, so a series of individual impressions here took on the quality of a [...]]]></description>
			<content:encoded><![CDATA[<p>Douglas Adams, muse to software developers everywhere, had this to say about bugs:</p>
<blockquote><p>&#8220;Just as a slow series of clicks when speeded up will lose the definition of each individual click and gradually take on the quality of a sustained and rising tone, so a series of individual impressions here took on the quality of a sustained emotion[.]&#8220;</p></blockquote>
<p>Ok, yeah &#8211; the quote is really from &#8220;<a class="zem_slink" title="Life, The Universe And Everything: The Hitch Hiker's Guide To The Galaxy 3" rel="amazon" href="http://www.amazon.com/Life-Universe-Everything-Hikers-Galaxy/dp/0330267388%3FSubscriptionId%3D0G81C5DAZ03ZR9WH9X82%26tag%3Dzemanta-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0330267388">Life, the Universe, and Everything</a>&#8220;, and he wasn&#8217;t talking about bugs, but he could have been.</p>
<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 250px;">
<dt class="wp-caption-dt"><a href="http://www.flickr.com/photos/62202285@N00/2341238645"><img title="Big Bug III…!!!" src="http://farm3.static.flickr.com/2357/2341238645_b0e41585f4_m.jpg" alt="Big Bug III…!!!" width="240" height="240" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image by <a href="http://www.flickr.com/photos/62202285@N00/2341238645">Denis Collette&#8230;!!!</a> via Flickr</dd>
</dl>
</div>
</div>
<p>If you look at bugs one at a time, you can miss some important &#8220;big picture&#8221; stuff.  It&#8217;s possible to spot product design issues, usability issues, architecture issues, and more by looking at patterns across multiple bugs.  Instead of just taking the bug at face value, consider whether there are other factors that caused this bug (and others like it) to show up.  Unless you&#8217;re writing mission support modules for NASA, it doesn&#8217;t make sense to do a full <a href="http://en.wikipedia.org/wiki/5_Whys">five-why&#8217;s</a> breakdown on each bug, but keep your eyes open for signs like this:</p>
<ul>
<li>You find yourself going back to the same area of code over and over.</li>
<li>User complaints cluster around a few screens (or functions) in your application.</li>
<li>You recognize a similar pattern in source code that keeps popping up.</li>
</ul>
<p>When you see patterns like this, you can certainly keep on fixing the bugs one at a time, but it&#8217;s pretty hard to make progress this way.  Instead, consider a larger bug fix, or even an actual feature (there&#8217;s really no difference, IMO) that cuts across individual bugs and fixes the foundational problem that&#8217;s spawning them.</p>
<ul>
<li>Maybe you need to redesign a screen.  If users are having a hard time figuring out part of your application, you&#8217;re not going to be able to fix your users.  Bite the bullet and figure out what you need to change in your application so that it makes sense.</li>
<li>Refactor ugly code.  This should be a no-brainer.  Spaghetti code can hide a multitude of sins, and the bugs are just going to keep coming until you deal with the problem.</li>
<li>Address architectural issues.  Sometimes, your problems run really deep, and big changes are needed to fix them.  This can be a tough sell, but if you can show a pattern of costly bug fixes over time, all of which share an architectural root cause, you&#8217;ve got the ammunition to push for a fix that will make them go away.</li>
</ul>
<p>If you eliminate the sources of these clustered bugs, you not only get rid of the current bugs, you wipe out a whole swarm of future bugs before they&#8217;ve had a chance to show their ugly little faces.  Don&#8217;t believe for a second that you can do this one bug at a time.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.ghacks.net/2010/02/09/dealing-with-bugs-in-linux/">Dealing with bugs in Linux</a> (ghacks.net)</li>
<li class="zemanta-article-ul-li"><a href="http://www.slideshare.net/shahzadsb/software-bugs-a-software-architect-point-of-view">Software Bugs A Software Architect Point Of View</a> (slideshare.net)</li>
<li class="zemanta-article-ul-li"><a href="http://tech.slashdot.org/story/10/03/02/1443210/Over-Half-of-Software-Fails-First-Security-Tests?from=rss">Over Half of Software Fails First Security Tests</a> (tech.slashdot.org)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=62b4fb54-fa41-4ebd-b863-de09a5cb179b" alt="Enhanced by Zemanta" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p><map name='google_ad_map_759_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/759?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_759_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=759&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F03%2Fa-feature-greater-than-the-sum-of-its-bugs%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=A+feature+greater+than+the+sum+of+its+bugs+http://odn8d.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=A+feature+greater+than+the+sum+of+its+bugs+http://odn8d.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/ROTUfPU-8A2eVhZp7shG5FGdcXE/0/da"><img src="http://feedads.g.doubleclick.net/~a/ROTUfPU-8A2eVhZp7shG5FGdcXE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ROTUfPU-8A2eVhZp7shG5FGdcXE/1/da"><img src="http://feedads.g.doubleclick.net/~a/ROTUfPU-8A2eVhZp7shG5FGdcXE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/kxx58SWJtJk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/03/a-feature-greater-than-the-sum-of-its-bugs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/03/a-feature-greater-than-the-sum-of-its-bugs/</feedburner:origLink></item>
		<item>
		<title>Yikes!</title>
		<link>http://feedproxy.google.com/~r/LambertOnDevelopment/~3/tp8tuxULwMY/</link>
		<comments>http://blog.componentoriented.com/2010/03/yikes/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 19:47:24 +0000</pubDate>
		<dc:creator>dlambert</dc:creator>
				<category><![CDATA[Disconnected rants]]></category>
		<category><![CDATA[database project]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.componentoriented.com/?p=915</guid>
		<description><![CDATA[I&#8217;ll just grab a cup of coffee, ok?




 Tweet This Post]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll just grab a cup of coffee, ok?</p>
<p><a href="http://blog.componentoriented.com/wp-content/uploads/2010/03/Yikes.jpg"><img class="aligncenter size-full wp-image-916" title="Yikes" src="http://blog.componentoriented.com/wp-content/uploads/2010/03/Yikes.jpg" alt="" width="556" height="149" /></a></p>
<p><map name='google_ad_map_915_8cfd796512ec059a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/915?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_915_8cfd796512ec059a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=915&amp;url= http%3A%2F%2Fblog.componentoriented.com%2F2010%2F03%2Fyikes%2F' /></p><p align="left"><a class="tt" href="http://twitter.com/home/?status=Yikes%21+http://q5pye.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.componentoriented.com/wp-content/plugins/tweet-this/icons/de/tt-twitter-micro4-de.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Yikes%21+http://q5pye.th8.us" title="Post to Twitter">Tweet This Post</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/GT1xZ5uGwvR2eyqlJkky7j-501w/0/da"><img src="http://feedads.g.doubleclick.net/~a/GT1xZ5uGwvR2eyqlJkky7j-501w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GT1xZ5uGwvR2eyqlJkky7j-501w/1/da"><img src="http://feedads.g.doubleclick.net/~a/GT1xZ5uGwvR2eyqlJkky7j-501w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/LambertOnDevelopment/~4/tp8tuxULwMY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.componentoriented.com/2010/03/yikes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.componentoriented.com/2010/03/yikes/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 4.540 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-07-30 08:25:26 -->
