<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>uhri.com &#187; Software Development</title>
	<atom:link href="http://uhri.com/blog/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://uhri.com/blog</link>
	<description>Taste is in the tongue of the beholder</description>
	<lastBuildDate>Wed, 16 Mar 2011 17:24:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Alarming Failure of Software Projects</title>
		<link>http://uhri.com/blog/the-alarming-failure-of-software-projects/</link>
		<comments>http://uhri.com/blog/the-alarming-failure-of-software-projects/#comments</comments>
		<pubDate>Wed, 21 Feb 2007 12:59:41 +0000</pubDate>
		<dc:creator>y0mbo</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.uhri.com/blog/index.php/archive/the-alarming-failure-of-software-projects/</guid>
		<description><![CDATA[The State of Wisconsin has announced the cancellation of yet another IT project. This project, according to the Wisconsin Technology Network was a $42 million project. Fortunately (I guess), they halted the project after wasting only $23.6 million on the project. This is on the heels of a failed project by the UW system that [...]]]></description>
			<content:encoded><![CDATA[<p>The State of Wisconsin has announced the cancellation of yet another IT project.  This project, according to the <a href="http://wistechnology.com/article.php?id=3708" title="State of Wisconsin dumps another tech project">Wisconsin Technology Network</a> was a $42 million project.  Fortunately (I guess), they halted the project after wasting only $23.6 million on the project.  This is on the heels of a <a href="http://wistechnology.com/article.php?id=3120" title="">failed project</a> by the UW system that cost Wisconsin taxpayers $26 million over 5 years.</p>
<p><span id="more-327"></span></p>
<p>In his book <a href="http://www.amazon.com/gp/product/0735605351?ie=UTF8&#038;tag=uhricom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0735605351">Software Estimation: Demystifying the Black Art</a><img src="http://www.assoc-amazon.com/e/ir?t=uhricom-20&#038;l=as2&#038;o=1&#038;a=0735605351" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, <a href="http://stevemcconnell.com/" title="Steve McConnell">Steve McConnell</a> reproduces a chart from Capers Jones&#8217;s book, <a href="http://www.amazon.com/gp/product/0071483004?ie=UTF8&#038;tag=uhricom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0071483004">Estimating Software Costs</a><img src="http://www.assoc-amazon.com/e/ir?t=uhricom-20&#038;l=as2&#038;o=1&#038;a=0071483004" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> which I am reproducing below:</p>
<table>
<tr>
<th>Size in Function Points (and Approximate Lines of Code)</th>
<th>Early</th>
<th>On Time</th>
<th>Late</th>
<th>Failed (Cancelled)</th>
</tr>
<tr>
<td>10 FP (1,000 LOC)</td>
<td>11%</td>
<td>81%</td>
<td>6%</td>
<td>2%</td>
</tr>
<tr>
<td>100 FP (10,000 LOC)</td>
<td>6%</td>
<td>75%</td>
<td>12%</td>
<td>7%</td>
</tr>
<tr>
<td>1,000 FP (100,000 LOC)</td>
<td>1%</td>
<td>61%</td>
<td>18%</td>
<td>20%</td>
</tr>
<tr>
<td>10,000 FP (1,000,000 LOC)</td>
<td>&lt;1%</td>
<td>28%</td>
<td>24%</td>
<td>48%</td>
</tr>
<tr>
<td>100,000 FP (10,000,000 LOC)</td>
<td>0%</td>
<td>14%</td>
<td>21%</td>
<td>65%</td>
</tr>
</table>
<p>The alarming statistic is that a large project is much more likely to fail.  I&#8217;ve had my <a href="http://www.uhri.com/blog/index.php/archive/getting-real-cheaply/" title="Getting Real Cheaply">issues</a> with <a href="http://gettingreal.37signals.com/" title="Getting Real">Getting Real</a>, but I have to admit that a 92% success rate beats a 65% failure rate any day.  I can only imagine the complexity of systems like the FBI&#8217;s Virtual Case File, that <a href="http://spectrum.ieee.org/print/1455" title="Who Killed the Virtual Case FIle?">cost taxpayers</a> $105 million dollars.</p>
<p>While most of these projects are killed before the whole budget is spent, the total is still more money than most of us will see in ten lifetimes.  The worst part is that the only entity big enough to built software projects of 10 million lines of code is the government, and they spend our money, not their own.</p>
]]></content:encoded>
			<wfw:commentRss>http://uhri.com/blog/the-alarming-failure-of-software-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s official&#8230; I like C# better than VB.NET</title>
		<link>http://uhri.com/blog/its-official-i-like-c-better-than-vbnet/</link>
		<comments>http://uhri.com/blog/its-official-i-like-c-better-than-vbnet/#comments</comments>
		<pubDate>Wed, 29 Nov 2006 14:00:11 +0000</pubDate>
		<dc:creator>y0mbo</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.uhri.com/blog/index.php/archive/its-official-i-like-c-better-than-vbnet/</guid>
		<description><![CDATA[Yes, it is true, I&#8217;ve switched to the dark side. The last bastions of VB.NET have fallen. After a conversation with a pair of developers I work with, I have finally been convinced that C# is a better syntax than VB.NET. That&#8217;s saying something, considering I used to believe I liked my languages verbose. You [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, it is true, I&#8217;ve switched to the dark side.  The last bastions of VB.NET have fallen.</p>
<p>After a conversation with a pair of developers I work with, I have finally been convinced that C# is a better syntax than VB.NET.  That&#8217;s saying something, considering I used to believe I liked my languages verbose.  You know, like COBOL.  There were three things in the C-based syntax of the language that bothered me:</p>
<ul>
<li>Case sensitivity</li>
<li>Curly braces</li>
<li>Semicolons</li>
</ul>
<p><span id="more-294"></span>
</p>
<p>Like me, one developer was a former VB programmer now a fan of C#.  The other was more of an open source proponent, but extremely knowledgeable about programming theory and history.  A discussion with these two and some time <em>actually developing</em> in C# helped me understand the power of the language and the benefits over VB.NET syntax.  I would still like to point out that the IDE in Visual Studio could use a few more features to truly make C# programming outstanding.  I guess <a href="http://www.jetbrains.com/resharper/" title="Resharper">Resharper</a> will have to fill the gap.</p>
<h5>Case sensitivity</h5>
<p>For the longest time, I could not come up with a decent reason for a case sensitive language.  In VB.NET&#8217;s case-insensitive world, the IDE can auto correct your tYpInG mistakes very easily.  It isn&#8217;t as easy to do in a case-sensitive language, because the IDE will not know &#8220;var&#8221; verses &#8220;Var&#8221; verses &#8220;VAR&#8221; when all three are in use.  I have found case-sensitivity to make sense in naming variables, especially in the <a href="http://www.joelonsoftware.com/articles/Wrong.html">post Hungarian Notation</a> world.  I can declare a variable and name it the same as the class on which it is based. For example:</p>
<p><code>Customer customer = new Customer();</code></p>
<p>I don&#8217;t have to spend any time coming up with a different variable name.  It actually requires <em>less</em> thinking.  Less thinking is good.</p>
<h5>Curly Braces</h5>
<p>My previous experience with C-based languages was in college, circa 1994.  Back then, there were no fancy IDEs, we coded in a text editor and we liked it that way!</p>
<p>Ok, I didn&#8217;t.</p>
<p>Formatting a document was a giant pain, but I had to do it to my curly braces straight.  With VB&#8217;s <code class="inline">If.. End If</code> structure, I could read where the end of a statement was without tracing back and forth.  Admittedly, Visual Studio can be thanked for fixing a lot of this issue in C#.  It will auto-format a document for you and highlights bracket pairs.  A number of other IDEs have done this for c-based languages as well.</p>
<p>What I hadn&#8217;t realized was how symbology makes it <em>easier</em> to understand the code.  By using curly braces and other short constructs that are not words, C-based languages become easier to understand.  My mind spends less time translating the code when I read it because the braces fade into the background.  I can focus on the important things instead &#8211; the actual code.</p>
<p>It actually requires <em>less</em> thinking, and less thinking is good.</p>
<h5>Semicolons</h5>
<p>This one is more of a religious debate than anything else. I used to prefer not having to end statements with a semi-colon, choosing instead to use a line delimiter for continuation.  That worked out fine and dandy until I needed to reformat a line &#8211; it involved moving the delimiters.  In C# I hit enter and I&#8217;m done.</p>
<p>You know&#8230; <em>less thinking</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://uhri.com/blog/its-official-i-like-c-better-than-vbnet/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Getting Real&#8230; cheaply.</title>
		<link>http://uhri.com/blog/getting-real-cheaply/</link>
		<comments>http://uhri.com/blog/getting-real-cheaply/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 19:00:24 +0000</pubDate>
		<dc:creator>y0mbo</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.uhri.com/blog/index.php/archive/getting-real-cheaply/</guid>
		<description><![CDATA[37 Signals, the Web 2.0 darlings, published an eBook (in PDF format) last year called Getting Real. At the time, I had just bought their other book, Defensive Design for the Web. Defensive Design is a thin tome and is mostly screen shots with some quick notes describing them. After flipping through it a bit, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://37signals.com/" title="37 Signals">37 Signals</a>, the Web 2.0 darlings, published an eBook (in PDF format) last year called <a href="http://gettingreal.37signals.com/" title="Getting Real">Getting Real</a>.  At the time, I had just bought their other book, <a href="http://www.amazon.com/gp/product/073571410X?ie=UTF8&#038;tag=uhricom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=073571410X">Defensive Design for the Web</a><img src="http://www.assoc-amazon.com/e/ir?t=uhricom-20&#038;l=as2&#038;o=1&#038;a=073571410X" width="1" height="1" border="0" />.  Defensive Design is a thin tome and is mostly screen shots with some quick notes describing them.  After flipping through it a bit, I parked it on my bookshelf and, until I needed its ISBN, haven&#8217;t looked at since.</p>
<p>At the time, I passed on purchasing Getting Real.  Recently, Fried and the gang have offered an html version of their book for free on their website.  Sales must have tapered off or something.  I read through it over the last few nights, and my review is as follows:</p>
<p>I paid nothing for it, and got what I paid for.</p>
<p>The book is simply a bunch of essays stitched together by the thread of marketing their products to their readers.  Nothing in the book is new or particularly revolutionary.  Some things are even scary&#8230; like working without any sort of a spec.  As they admit, web apps aren&#8217;t the same as designing software for NASA, but there&#8217;s still a use for some documentation &#8211; like thinking through problems before you start solving them.  Communicating with your customers and building some buzz ahead of launch make sense.  That&#8217;s pretty much the playbook for the rest of the Web 2.0 followers.</p>
<p>Over all, it was worth reading, but had I plunked down $19 for the PDF, I would have been highly disappointed.</p>
]]></content:encoded>
			<wfw:commentRss>http://uhri.com/blog/getting-real-cheaply/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tools to Install at a New Client Site</title>
		<link>http://uhri.com/blog/tools-to-install-at-a-new-client-site/</link>
		<comments>http://uhri.com/blog/tools-to-install-at-a-new-client-site/#comments</comments>
		<pubDate>Sat, 14 Oct 2006 13:58:20 +0000</pubDate>
		<dc:creator>y0mbo</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.uhri.com/blog/index.php/archive/tools-to-install-at-a-new-client-site/</guid>
		<description><![CDATA[Having recently started at a new client site I found myself sitting at a fresh PC. With an empty machine, I suddenly realized how many productivity tweaks I use. It was daunting trying to remember all of the tools that were seamlessly integrated into my workflow. By the end of the first day, I had [...]]]></description>
			<content:encoded><![CDATA[<p>Having recently started at a new client site I found myself sitting at a fresh PC.  With an empty machine, I suddenly realized how many productivity tweaks I use.  It was daunting trying to remember all of the tools that were seamlessly integrated into my workflow.  By the end of the first day, I had most of the tools installed, but it was only when I realized I was missing them that I remembered what they were.</p>
<p><span id="more-276"></span></p>
<p>Here are the things I installed:</p>
<p><strong>0. Dvorak keyboard.</strong> Four and a half years ago I learned how to type using the<br />
Dvorak keyboard layout.   It was nearly impossible to type at first &#8211; I forgot how slow it was to learn to touch type &#8211; but now I can type somewhere in the range of 80-85 wpm.  The biggest benefit was physical:  the new layout is less stressful and I no longer wake up in the middle of the night with tingling fingers. The Dvorak layout comes with Windows XP, and can be set up by going to Regional and Language Options in the control panel.  Under the Languages tab, click the Details&#8230; button and add the installed service.</p>
<p><strong>1. Mozilla Firefox.</strong> I&#8217;m not sure I can add any commentary about the <a href="http://www.mozilla.org/" title="Mozilla.org - Home of the Mozilla Project">Firefox browser</a> which hasn&#8217;t already been said.  So I won&#8217;t.</p>
<p><strong>2. HotkeyControl XP.</strong> This utility allows you to set up keyboard shortcuts for just about anything.  For me, I use it to map cut, copy and paste to  CTRL+Q, CTRL+J and CTRL+K.  In Dvorak, those are the X, C and V keys on the standard keyboard.  One handed cut and paste beats fishing around the keyboard or having to use context menus any day.  <a href="http://www.digital-miner.com/" title="HotkeyControl by Digital Miner">Hotkeycontrol 5</a> is made by Digital Miner and is currently $29.95.  I&#8217;m using the freeware version 4.2.1, but I plan on purchasing the new full version eventually.</p>
<p><strong>3. Notepad ++.</strong> This text editor has recently caught my attention and quickly replaced <a href="http://www.liquidninja.com/metapad/" title="Metapad">Metapad</a> as my favorite.  <a href="http://notepad-plus.sourceforge.net/uk/site.htm" title="Notepad++">Notepad++</a> supports code coloring for supported file types, so it goes beyond the basic text editor. Its helpful when I need to look at a file but don&#8217;t need the whole IDE.</p>
<p><strong>4. Custom VS Settings.</strong> In Visual Studio I have the ability to customize its interface to something less eye straining than the standard settings.   I grabbed my basic settings from Jeff Atwood at <a href="http://www.codinghorror.com/blog/archives/000682.html" title="Is your IDE Hot or Not?">Coding Horror</a> and tweaked them from there.  My <a href="http://www.uhri.com/developer/Customvs.zip" title="John Uhri's Visual Studio settings">Visual Studio settings</a> file (in .zip) is available.</p>
<p><strong>5. GDS.</strong> The ability to quickly and accurately search files is essential, so <a href="http://desktop.google.com/">Google Desktop Search</a> fits the bill.  Best of all, it has a sidebar on which a multitude of add-ins can be included.  The standard Scratch Pad, and the integrated Google calendar are the two I use most.</p>
<p><strong>6. Firefox add ins.</strong> The strongest argument for Firefox, in my opinion, is its extensibility. There are a number of extensions I can&#8217;t live without as a web developer:</p>
<ul>
<li><a href="http://chrispederick.com/work/webdeveloper/" title="Web Developer">Web Developer</a>. With just about everything I can think of for use in web development, this add on is simply the most valuable extension in existence.  Personally, I find the validator links the most handy.</li>
<li><a href="https://addons.mozilla.org/firefox/383/" title="Auto Copy">Auto Copy</a>, when enabled, automatically copies selected text to the clipboard.</li>
<li><a href="https://addons.mozilla.org/firefox/1555/" title="Open Source in Tab">Open Source in Tab</a> opens a page&#8217;s source in new tab. duh.</li>
<li>The <a href="http://www.google.com/tools/firefox/toolbar/index.html?promo=mor-tb-en" title="Google Toolbar for Firefox">Google Toolbar for Firefox</a> adds the quickest way to start a Google search.  I like the speel checker [sic ;-)], and the fact it shows the page rank of the current page I&#8217;m viewing.</li>
</ul>
<p><strong>7. SQL Prompt.</strong> Intellesense for SQL.  This one I installed on a whim, but it has suddenly made my list.  <a href="http://sqlprompt.com/products/SQL_Prompt/index.htm" title="SQL Prompt - SQL Intellisense">SQL Prompt 2</a> was bought by <a href="http://www.red-gate.com/" title="Red Gate Software">Red Gate</a> to add to their suite of database tools.  They found out, unfortunately, that the codebase they purchased wasn&#8217;t able to incorporate all of their ideas for the next version.  So Red Gate decided to give away version 2 for free and write version 3 from the ground up.</p>
<h3>Honorable mention</h3>
<p><strong>8. TimeSnapper.</strong> is, according to its <a href="http://www.timesnapper.com/" title="TimeSnapper">website</a>, is an automatic screenshot journal.  I haven&#8217;t installed this one at my current client site, but I have used this when working from my home office.  It grabs a screenshot at a predetermined interval and saves it for playback later.  When working on multiple, random tasks, it is great for providing you a way to go back and figure out what you were working (or not working on).</p>
<p><strong>9. Google Talk.</strong> Talk is Google&#8217;s <a href="http://www.google.com/talk/" title="Google Talk">instant messenger</a> application.  Its blocked at my client&#8217;s site, so I haven&#8217;t installed it.  To be honest, I actually have preferred *not* having the interruptions during the day.</p>
<p><strong>10. Simp.</strong> Encryption for Jabber clients like Google Talk are essential for the paranoid.  <a href="http://www.secway.fr/us/products/simplite_msn/" title="Simp Lite">Simp Lite</a> is a free encryption tool for IM clients.  Unfortunately, the log in Google is also encrypted unless you get a paid version.</p>
]]></content:encoded>
			<wfw:commentRss>http://uhri.com/blog/tools-to-install-at-a-new-client-site/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Code as Art</title>
		<link>http://uhri.com/blog/code-as-art/</link>
		<comments>http://uhri.com/blog/code-as-art/#comments</comments>
		<pubDate>Tue, 04 Apr 2006 11:55:55 +0000</pubDate>
		<dc:creator>y0mbo</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.uhri.com/blog/index.php/archive/code-as-art/</guid>
		<description><![CDATA[I have always believed that code is a form of art. It should not only serve the purpose for which it was written, but it should also be pleasing to the eye when read. Jeff Atwood at Coding Horror has posted part of an interview with Wayne Ratliff, the author of dBase. It sums up [...]]]></description>
			<content:encoded><![CDATA[<p>I have always believed that code is a form of art.  It should not only serve the purpose for which it was written, but it should also be pleasing to the eye when read.</p>
<p>Jeff Atwood at Coding Horror has <a target="_blank" title="Jeff Atwood at Coding Horror" href="http://www.codinghorror.com/blog/archives/000556.html">posted part of an interview</a> with Wayne Ratliff, the author of <a href="http://en.wikipedia.org/wiki/DBASE">dBase</a>.  It sums up how I feel about code.<br />
<span id="more-250"></span></p>
<p>Mr. Ratliff says:</p>
<blockquote><p>&#8220;Balance takes many forms. The code should be crisp and concise. You should be able to explain any module in one sentence, and things should be in alphabetical order, if possible. Just from a visual view of indentation, it shouldn&#8217;t go off the edge of the paper at any point. It shouldn&#8217;t have one &#8220;if&#8221; that&#8217;s huge and an &#8220;else&#8221; that&#8217;s small. Everything should be balanced everywhere. Balance is the key word.&#8221;</p></blockquote>
<p>I take a lot of flak from my coworkers about insisting that methods and properties are alphabetized.  I tend to scroll through code via mouse wheel, so finding a particular function is much easier when all are sorted.  It takes a few seconds to do, but enhances the readability of the code greatly.</p>
<p>I&#8217;m glad to see that Mr. Ratliff felt this way in <em>1989</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://uhri.com/blog/code-as-art/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OPC, DCOM and XP SP2</title>
		<link>http://uhri.com/blog/opc-dcom-and-xp-sp2/</link>
		<comments>http://uhri.com/blog/opc-dcom-and-xp-sp2/#comments</comments>
		<pubDate>Tue, 14 Mar 2006 21:39:59 +0000</pubDate>
		<dc:creator>y0mbo</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.uhri.com/blog/index.php/archive/opc-dcom-and-xp-sp2/</guid>
		<description><![CDATA[DCOM, it turns out, is #2 on the all time Spawn of Satan list.  I haven&#8217;t run into a project with more problems than the one using OLE for Process Control (OLE) over DCOM. This week&#8217;s adventure happened because the client upgraded their machine to Service Pack 2 of Windows XP.  Most in the tech [...]]]></description>
			<content:encoded><![CDATA[<p>DCOM, it turns out, is #2 on the all time Spawn of Satan list.  I haven&#8217;t run into a project with more problems than the one using OLE for Process Control (OLE) over DCOM.</p>
<p>This week&#8217;s adventure happened because the client upgraded their machine to Service Pack 2 of Windows XP.  Most in the tech industry know it was rolled out to curb zombie PCs.  So the firewall and nearly everything else was closed down.  Without being told about the upgrade, I was at the client site trying to figure out what was wrong.</p>
<p>Fixing the problem was relatively simple once I Googled <a target="_blank" href="http://www.google.com/search?sourceid=mozclient&#038;ie=utf-8&#038;oe=utf-8&#038;q=dcom+changes+in+sp2">DCOM changes in SP2</a>.  In fact, I even found an article on the OPC Foundation&#8217;s website on <a target="_blank" href="http://www.opcfoundation.org/DownloadFile.aspx?CM=3&#038;RI=161&#038;CN=KEY&#038;CI=282&#038;CU=1">Using OPC via DCOM with Windows XP Service Pack 2</a> (direct <a href="http://www.opcfoundation.org/DownloadFile.aspx/Using%20OPC%20via%20DCOM%20with%20XP%20SP2.pdf?RI=161">link to the .pdf</a>).</p>
<p>(Hat tip to Professor Z.)</p>
]]></content:encoded>
			<wfw:commentRss>http://uhri.com/blog/opc-dcom-and-xp-sp2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

