<?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>Sankofa &#187; Software Development</title>
	<atom:link href="http://blog.ianuy.com/tag/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ianuy.com</link>
	<description>From Script Kiddie to Professional Software Developer</description>
	<lastBuildDate>Tue, 18 May 2010 16:09:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Importance of a Dedicated Build Machine</title>
		<link>http://blog.ianuy.com/2009/06/07/the-importance-of-a-dedicated-build-machine/</link>
		<comments>http://blog.ianuy.com/2009/06/07/the-importance-of-a-dedicated-build-machine/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 14:36:59 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Coding Horror]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=374</guid>
		<description><![CDATA[
When I was an Intern at a large Global 500 company, my major responsibility is to deliver a Software Delivery process that uses the software engineering practice called Continuous Integration. In simple terms, I am responsible for a project to create and setup a Continuous Integration Build Server that will be used to &#8220;build&#8221; the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ianuy.com/wp-content/uploads/2009/06/serverroom_3.jpg"><img class="aligncenter size-medium wp-image-375" title="Build Server" src="http://blog.ianuy.com/wp-content/uploads/2009/06/serverroom_3-200x300.jpg" alt="Build Server" width="200" height="300" /></a></p>
<p>When I was an Intern at a large Global 500 company, my major responsibility is to deliver a <a title="Software Delivery" href="http://en.wikipedia.org/wiki/Software_delivery" target="_blank">Software Delivery</a> process that uses the software engineering practice called <a title="Continuous Integration" href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank">Continuous Integration</a>. In simple terms, I am responsible for a project to create and setup a Continuous Integration Build Server that will be used to &#8220;build&#8221; the company&#8217;s products.</p>
<p>During those days, when I hear the word &#8220;build&#8221; or &#8220;compile&#8221;, the first thing that comes into mind is to press the F5 button. Ever since I started programming, when someone asks me for a copy of my program or if I need to distribute the &#8220;binaries&#8221; of my program, all I do is press the F5 button to create an EXE (sometimes with a DLL), then browse to the output folder(Bin) and copy the binaries. Suffice to say, that is my &#8220;Software Delivery&#8221; process however crude it is.</p>
<p>In College, I got a little bit more sophisticated. My major projects are all carefully packaged in a very neat MSI installer &#8212; but that is just for the major projects. Most of my standalone tools are still made using the &#8220;Press F5 button to build&#8221; method. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' /> </p>
<p><span id="more-374"></span></p>
<p>So you can just imagine my horror when the Software Architect presented me my task on my first day at work. I don&#8217;t know anything about Software Delivery, more so Continuous Integration. What is more scary is that I am expected to deliver my output in just 240 hours (my Internship duration). But thru the continuous support of the said Software Architect, I somehow managed to cram the concept of Software Delivery and Continuous Integration in just 2 weeks. Also, <a title="Expert .NET Delivery Using NAnt and CruiseControl.NET" href="http://www.apress.com/book/view/1590594851" target="_blank">this book</a> helped a lot, too!</p>
<p style="text-align: left;">
<div id="attachment_379" class="wp-caption aligncenter" style="width: 238px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/06/1590594851500fm6.gif"><img class="size-full wp-image-379" title="Expert .NET Delivery Using NAnt and CruiseControl.NET" src="http://blog.ianuy.com/wp-content/uploads/2009/06/1590594851500fm6.gif" alt="Expert .NET Delivery Using NAnt and CruiseControl.NET" width="228" height="301" /></a><p class="wp-caption-text">Expert .NET Delivery Using NAnt and CruiseControl.NET</p></div>
<p style="text-align: left;">The build process that I created is quite simple and somewhat standard. However, there was a special requirement that the test harness be run on a different machine and that made the build process a little bit more complicated. This are the different stages of my build process:</p>
<ol>
<li><strong>Clean-up: </strong>Before starting a new build, delete all the previous directories (Source codes, Artifacts, etc.)</li>
<li><strong>Fetch: </strong>Get the latest copy from the source code repository</li>
<li><strong>Build:</strong> Compile the different projects</li>
<li><strong>Archive: </strong>Tag the build then archive it</li>
<li><strong>Test: </strong>Run the unit tests, measure code coverage and perform static code analysis</li>
<li><strong>Feedback: </strong>Provide feedback by generating reports (with beautiful graphs!) <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ol>
<div id="attachment_380" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/06/graph.png"><img class="size-medium wp-image-380" title="CruiseControl.NET Build History" src="http://blog.ianuy.com/wp-content/uploads/2009/06/graph-300x239.png" alt="CruiseControl.NET Build History" width="300" height="239" /></a><p class="wp-caption-text">CruiseControl.NET Build History</p></div>
<p>The build process will automatically check for any changes in the Source Code Repository every 15 minutes, if it detects any change in the code, it will automatically start the build process. That is one of the advantage of using Continuous Integration &#8212; there is no need for a costly &#8220;Integration&#8221; phase.</p>
<p>In my <a href="http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/" target="_blank">previous blog posts</a>, I&#8217;ve mentioned that I am working on a certain product that will be shipped later this month. Well, that project is nearing its completion. We now have a &#8220;Beta&#8221; build for our product and it won&#8217;t be long before an official Release Candidate is available.</p>
<p>During our weekly status meeting, I brought up a concern regarding how we are building our Beta builds that are being sent to the Test Department. Our current Build Machine (which is physically located locally) also acts as our Development Machine. All of the development activities like bug fixing are being done on the Build Machine. If you are REALLY REALLY careful, this is fine but still, a little bit crazy. But since we are Software Developers, we are never too careful. We are programmers, we cause accidents. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' /> </p>
<p>So why is it important to have a dedicated build machine? Here&#8217;s why.</p>
<ol>
<li><strong>Pristine</strong> &#8211; You want to keep the build machine as clean as possible to make sure that only the needed resources are being included in the build. If your build machine also acts as your development machine, keeping a pristine state is a very tough task. When I inspected our latest Beta build, I was shocked to see that there are *.pdb (debug) files included in the install image.</li>
<li><strong>Control </strong>- It is very important to control your Build Environment. All of your builds must be coming from a standard setup from a standard state. The keyword here is standard. This means that the &#8220;exact state&#8221; of the machine used in creating Build 001 should also be used in creating Build 002. When you use your Build Machine as a Development Machine, it is almost impossible to maintain this &#8220;exact state&#8221; every time for every build. When we were migrating our product from SQL 2000 to SQL 2005, we added the SQL2005 installer to our local build machine but somehow, someone forgot to add the SQL 2005 installer to the source code repository. When we tried building from a new build machine, the installer would no longer work.</li>
<li><strong>Reliability </strong>- All builds coming from the build machine must be Reliable. If you are using your Build Machine as a Development Machine, most often the not, your builds are coming from your local copy and not from the Source Code Repository. In most cases, this is okay. But in our case where the final build will be built using the official build machine (located in the US), this is a big problem. One of the problem that we encountered is that the local copy is not in sync with the repository copy. We are Humans, sometimes we forget to check-in our changes.</li>
</ol>
<p>To solve the above problems (and since we don&#8217;t have any spare machines <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  ), I used a Virtual Machine! Yes, I used a Virtual Machine as a Build Machine. After 3 days of fixing the build scripts and updating the unsync&#8217;d files, I was able to create a clean and working build from my VM Build Machine.</p>
<div id="attachment_384" class="wp-caption aligncenter" style="width: 300px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/06/vbox_eps_cmyk2_ico.png"><img class="size-medium wp-image-384" title="VBOX" src="http://blog.ianuy.com/wp-content/uploads/2009/06/vbox_eps_cmyk2_ico-290x300.png" alt="I'm a big VirtualBox fan!" width="290" height="300" /></a><p class="wp-caption-text">I&#39;m a big VirtualBox fan!</p></div>
<p>Virtual Machines are perfect as Build Machines. You can always maintain a <strong>pristine</strong> state by creating a <a title="HOWTO: VirtualBox Snapshots. The Ins and Outs of Snapshots." href="http://ubuntuforums.org/showthread.php?t=689982" target="_blank">snapshot</a> of a freshly installed setup build environment and always building from there. Everytime that you need to create a build, you can just rollback to that pristine state. This feature of build machines gives you <strong>control</strong> over your build environment. Since you are always rolling back to a pristine state, you will then be forced to always fetch the latest copy from your source code repository! This means that you can be confident the builds coming out from your build machine is always <strong>reliable</strong>.</p>
<p>Before, I have no faith in our source code repository copy. As a result, I am always too anxious in making sure that I don&#8217;t break the local copy. There&#8217;s always that constant fear that the official copy from the Source Code Repository is broken or the official copy does not reflect the local &#8220;tested&#8221; copy. Now, I am always confident that anytime, anywhere in the company, we can always create a clean and reliable build that will work straigth from the repository. That feeling is very liberating! <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=The%20Importance%20of%20a%20Dedicated%20Build%20Machine&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F&amp;title=The%20Importance%20of%20a%20Dedicated%20Build%20Machine&amp;bodytext=%0D%0A%0D%0AWhen%20I%20was%20an%20Intern%20at%20a%20large%20Global%20500%20company%2C%20my%20major%20responsibility%20is%20to%20deliver%20a%20Software%20Delivery%20process%20that%20uses%20the%20software%20engineering%20practice%20called%20Continuous%20Integration.%20In%20simple%20terms%2C%20I%20am%20responsible%20for%20a%20project%20to%20cr" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F&amp;title=The%20Importance%20of%20a%20Dedicated%20Build%20Machine" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F&amp;title=The%20Importance%20of%20a%20Dedicated%20Build%20Machine&amp;notes=%0D%0A%0D%0AWhen%20I%20was%20an%20Intern%20at%20a%20large%20Global%20500%20company%2C%20my%20major%20responsibility%20is%20to%20deliver%20a%20Software%20Delivery%20process%20that%20uses%20the%20software%20engineering%20practice%20called%20Continuous%20Integration.%20In%20simple%20terms%2C%20I%20am%20responsible%20for%20a%20project%20to%20cr" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=The%20Importance%20of%20a%20Dedicated%20Build%20Machine%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=The%20Importance%20of%20a%20Dedicated%20Build%20Machine&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F&amp;t=The%20Importance%20of%20a%20Dedicated%20Build%20Machine" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F&amp;t=The%20Importance%20of%20a%20Dedicated%20Build%20Machine" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F&amp;title=The%20Importance%20of%20a%20Dedicated%20Build%20Machine&amp;annotation=%0D%0A%0D%0AWhen%20I%20was%20an%20Intern%20at%20a%20large%20Global%20500%20company%2C%20my%20major%20responsibility%20is%20to%20deliver%20a%20Software%20Delivery%20process%20that%20uses%20the%20software%20engineering%20practice%20called%20Continuous%20Integration.%20In%20simple%20terms%2C%20I%20am%20responsible%20for%20a%20project%20to%20cr" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F07%2Fthe-importance-of-a-dedicated-build-machine%2F&amp;title=The%20Importance%20of%20a%20Dedicated%20Build%20Machine" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/06/07/the-importance-of-a-dedicated-build-machine/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Migration: Why Developers Hate Microsoft or Why Developers Hate Vista or My First Encounter how Microsoft can Break your Software</title>
		<link>http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/</link>
		<comments>http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/#comments</comments>
		<pubDate>Sun, 10 May 2009 14:13:29 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=262</guid>
		<description><![CDATA[In my previous blog post, I&#8217;ve mentioned that I&#8217;m working on a project to migrate an entire product line to Vista. What I meant by that is that I am responsible for making sure that our current product will run properly on Windows Vista. To guarantee that it is indeed Running Properly it should behave [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_263" class="wp-caption aligncenter" style="width: 546px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/windowsvistalogo.jpg"><img class="size-full wp-image-263" title="Windows Vista Compatible Logo" src="http://blog.ianuy.com/wp-content/uploads/2009/05/windowsvistalogo.jpg" alt="Do you know how much Programmer's Blood it cost to put this tiny sticker in a Software Box?" width="536" height="262" /></a><p class="wp-caption-text">Do you know how much Programmer&#39;s Blood it cost to put this tiny sticker in a Software Box?</p></div>
<p>In my <a title="Coding Horror 01: Readability vs Efficiency " href="http://blog.ianuy.com/2009/04/26/coding-horror-01-readability-vs-efficiency/" target="_blank">previous blog post</a>, I&#8217;ve mentioned that I&#8217;m working on a project to migrate an entire product line to Vista. What I meant by that is that I am responsible for making sure that our current product will run properly on Windows Vista. To guarantee that it is indeed <em>Running Properly</em> it should behave *exactly* like it behaves in Windows XP.  In simple terms, my entire job security is riding on making our products compatible with Microsoft&#8217;s failed attempt at a MAC-ish Operating System and with Microsoft&#8217;s successful attempt (a first in their history) to make their operating system <strong>NOT</strong> backward compatible with older applications. So much for <a title="Raymond Chen's Blog" href="http://blogs.msdn.com/oldnewthing/" target="_blank">Raymond Chen</a>&#8217;s camp <a title="How Microsoft Lost the API War" href="http://joelonsoftware.com/articles/APIWar.html" target="_blank">undying obsession with backward compatibility</a>.</p>
<p>This products that I&#8217;m talking about are a set of Web Applications written in ASP.NET version 1.1. This web applications are as old as Windows XP. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  I checked its File Modification History in our TFS repository and the last time that anyone have touched its code base is in 2005 &#8212; and that&#8217;s just for a minor code modification to fix a bug. I believe this apps were written way way back in 2004 &#8212; when I was in Third Year High School! <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>To make this products compatible with Vista, there are a couple of steps that had to be done. I&#8217;ll enumerate each steps and what it takes to accomplish them.</p>
<p><span id="more-262"></span></p>
<h3>.NET Upgrade (.NET 1.1 to .NET 2.0)</h3>
<p>Windows Vista comes pre-installed with .NET 2.0 (and .NET 3.0). Our products are running on .NET 1.1. One approach that most people will suggest is to just install .NET 1.1 on Windows Vista and everything will be perfect. Right? WRONG. Firstly, .NET 1.1 has already reached its end-of-life. Microsoft pulled support for .NET 1.1 last October 14, 2008. Although it was extended, its a sign that this technology is <em>old enough</em> to be replaced. Secondly, installing .NET 1.1 on a Vista machine is not as <a href="http://geekycoder.wordpress.com/2007/10/08/installing-microsoft-net-11-framework-on-windows-vista-without-tears/" target="_blank">easy</a> <a href="http://www.mydigitallife.info/2007/12/27/install-microsoft-net-framework-11-on-windows-vista-fix-regsvcsexe-fails-error/" target="_blank">as</a> <a href="http://searchwindevelopment.techtarget.com/tip/0,289483,sid8_gci1237467,00.html" target="_blank">you</a> <a href="http://www.sharpdeveloper.net/content/archive/2008/10/07/setup-aspnet-11-on-vista.aspx" target="_blank">think</a>. No, we are not lazy programmers, we just don&#8217;t want to introduce unnecessary complications to the system. We are, by the way, <a title="Coding Horror 01: Readability vs Efficiency " href="http://blog.ianuy.com/2009/04/26/coding-horror-01-readability-vs-efficiency/" target="_blank">Software Developers</a>.</p>
<div id="attachment_270" class="wp-caption aligncenter" style="width: 224px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/lazy-programmers.jpg"><img class="size-medium wp-image-270" title="Lazy Programmers" src="http://blog.ianuy.com/wp-content/uploads/2009/05/lazy-programmers-214x300.jpg" alt="Those Lazy Programmers" width="214" height="300" /></a><p class="wp-caption-text">Those Lazy Programmers</p></div>
<p>So the approach we took is to upgrade our Visual Studio 2003 solutions to Visual Studio 2005 solutions. This, in turn, will &#8220;force&#8221; the web application to use .NET 2.0. You might say, &#8220;How hard could it be? Visual Studio 2005 can convert old solutions automatically using its <em>Upgrade Wizard. </em>All you have to do is click next!, You lazy programmer!&#8221;. That&#8217;s correct. Upgrading the solution is no problem. Converting every file to .NET 2.0 compliant code <em>is</em>.</p>
<p>We encountered two conversion problems. The first one is relatively simple to fix. It&#8217;s a problem where the old .NET 1.1 Resource files (*.resx) were not converted to the .NET 2.0 resource files. The two resource file formats are different (the .NET 2.0 have a *.designer.cs component) and in very rare cases, the .NET 1.1 *resx files won&#8217;t work in .NET 2.0. This problem is very hard to catch since the incompatible *.resx files won&#8217;t throw a compile error. The strings just won&#8217;t be detected. But once found it was relatively easy to fix. After a day of investigation, we found out that the XML format for the resource files changed in .NET 2.0. As a simple hack (fix), we manually changed the &lt;string&gt; parameters of each .NET 1.1 strings to match the .NET 2.0 &lt;string&gt; parameters.</p>
<p>The second problem is harder to find and much much harder to fix. The problem is related to ASP.NET&#8217;s datetime picker control.</p>
<div id="attachment_274" class="wp-caption aligncenter" style="width: 282px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/workingaspnet.jpg"><img class="size-full wp-image-274" title="ASP.NET 1.1 Calendar Control" src="http://blog.ianuy.com/wp-content/uploads/2009/05/workingaspnet.jpg" alt="Our Calendar Control before upgrading to .NET 2.0" width="272" height="214" /></a><p class="wp-caption-text">Our Calendar Control before upgrading to .NET 2.0</p></div>
<p>On our previous version running .NET 1.1, there is no problem with the datetime picker. But when we installed the .NET 2.0 version, the calendar objects are all over the place.</p>
<div id="attachment_275" class="wp-caption aligncenter" style="width: 1034px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/brokencontrol.jpg"><img class="size-large wp-image-275" title="Broken ASP.NET Calendar Control" src="http://blog.ianuy.com/wp-content/uploads/2009/05/brokencontrol-1024x211.jpg" alt="Broken ASP.NET Calendar Control" width="1024" height="211" /></a><p class="wp-caption-text">The Migrated .NET 2.0 Calendar Control</p></div>
<p style="text-align: left;">Two days of investigation later, we found out that the previous developer made this custom Calendar control by inheriting from .NET 1.1&#8217;s System.Web.Controls. During pre-render, he reads the rendered Calendar Control&#8217;s HTML and then does something funny with it. What he wanted to achieve is to replace the &#8220;Month&#8221; from the Calendar header (gray part) with a drop down box that contains a list of the months. So what he did is he &#8220;catch&#8221; the HTML stream from the Calendar Control and perform a String.Replace on it!</p>
<p style="text-align: left;">
<div id="attachment_278" class="wp-caption aligncenter" style="width: 586px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/design.jpg"><img class="size-full wp-image-278" title="Design Goal" src="http://blog.ianuy.com/wp-content/uploads/2009/05/design.jpg" alt="His Design Goal" width="576" height="207" /></a><p class="wp-caption-text">His Design Goal</p></div>
<p style="text-align: left;">The actual String.Replace command is something like this:</p>
<p style="text-align: left;">

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//szHTML = Get current HTML stream</span>
<span style="color: #008080; font-style: italic;">//szCurrentMonth = Get current month from HTML</span>
szHTML.<span style="color: #0000FF;">Replace</span><span style="color: #000000;">&#40;</span>szCurrentMonth, <span style="color: #666666;">&quot;
&lt;select&gt;&lt;option value=&quot;</span>January<span style="color: #666666;">&quot;&gt;January&lt;/option&gt;
       &lt;option value=&quot;</span>February<span style="color: #666666;">&quot;&gt;February&lt;/option&gt;
       &lt;option value=&quot;</span>March<span style="color: #666666;">&quot;&gt;March&lt;/option&gt;
       &lt;option value=&quot;</span>April<span style="color: #666666;">&quot;&gt;April&lt;/option&gt;
       &lt;option value=&quot;</span>May<span style="color: #666666;">&quot;&gt;May&lt;/option&gt;
       &lt;option value=&quot;</span>June<span style="color: #666666;">&quot;&gt;June&lt;/option&gt;
       &lt;option value=&quot;</span>July<span style="color: #666666;">&quot;&gt;July&lt;/option&gt;
       &lt;option value=&quot;</span>August<span style="color: #666666;">&quot;&gt;August&lt;/option&gt;
       &lt;option value=&quot;</span>September<span style="color: #666666;">&quot;&gt;September&lt;/option&gt;
       &lt;option value=&quot;</span>October<span style="color: #666666;">&quot;&gt;October&lt;/option&gt;
       &lt;option value=&quot;</span>November<span style="color: #666666;">&quot;&gt;November&lt;/option&gt;
       &lt;option value=&quot;</span>December<span style="color: #666666;">&quot;&gt;December&lt;/option&gt;
&lt;/select&gt;
&nbsp;
&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>It worked fine before the migration, but somehow we broke it during migration to .NET 2.0. A further investigation of the &#8220;emitted&#8221; HTML stream from the .NET 2.0 control shows this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;table style=&quot;border-style: solid; border-width: 1px; border-collapse: collapse;&quot; title=&quot;Calendar&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: Silver;&quot; colspan=&quot;7&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse;&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15%;&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the previous month&quot; href=&quot;javascript:__doPostBack('ctl01','V3378')&quot;&gt;&amp;lt;&lt;/a&gt;&lt;/td&gt;
&lt;!-- THIS WILL BE THE PART THAT WILL BE REPLACED BY A DROP DOWN BOX --&gt;
&lt;td style=&quot;width: 70%;&quot; align=&quot;center&quot;&gt;May 2009&lt;/td&gt;
&lt;td style=&quot;width: 15%;&quot; align=&quot;right&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the next month&quot; href=&quot;javascript:__doPostBack('ctl01','V3439')&quot;&gt;&amp;gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sun&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Mon&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Tue&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Wed&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Thu&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Fri&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sat&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: black;&quot; title=&quot;April 26&quot; href=&quot;javascript:__doPostBack('ctl01','3403')&quot;&gt;26&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 27&quot; href=&quot;javascript:__doPostBack('ctl01','3404')&quot;&gt;27&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 28&quot; href=&quot;javascript:__doPostBack('ctl01','3405')&quot;&gt;28&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 29&quot; href=&quot;javascript:__doPostBack('ctl01','3406')&quot;&gt;29&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 30&quot; href=&quot;javascript:__doPostBack('ctl01','3407')&quot;&gt;30&lt;/a&gt;&lt;/td&gt;
&lt;!-- THE TITLE ATTRIBUTE WAS ALSO REPLACED ACCIDENTALLY --&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;May 01&quot; href=&quot;javascript:__doPostBack('ctl01','3408')&quot;&gt;1&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;May 02&quot; href=&quot;javascript:__doPostBack('ctl01','3409')&quot;&gt;2&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
.....&lt;/tbody&gt;&lt;/table&gt;</pre></div></div>

<p>A comparison with the &#8220;emitted&#8221; .NET 1.1 control shows this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;table style=&quot;border-style: solid; border-width: 1px; border-collapse: collapse;&quot; title=&quot;Calendar&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: Silver;&quot; colspan=&quot;7&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse;&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15%;&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the previous month&quot; href=&quot;javascript:__doPostBack('ctl01','V3378')&quot;&gt;&amp;lt;&lt;/a&gt;&lt;/td&gt;
&lt;!-- THIS WILL BE THE PART THAT WILL BE REPLACED BY A DROP DOWN BOX --&gt;
&lt;td style=&quot;width: 70%;&quot; align=&quot;center&quot;&gt;May 2009&lt;/td&gt;
&lt;td style=&quot;width: 15%;&quot; align=&quot;right&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the next month&quot; href=&quot;javascript:__doPostBack('ctl01','V3439')&quot;&gt;&amp;gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sun&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Mon&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Tue&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Wed&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Thu&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Fri&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sat&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: black;&quot; href=&quot;javascript:__doPostBack('ctl01','3403')&quot;&gt;26&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3404')&quot;&gt;27&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3405')&quot;&gt;28&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3406')&quot;&gt;29&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3407')&quot;&gt;30&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3408')&quot;&gt;1&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3409')&quot;&gt;2&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
.....&lt;/tbody&gt;&lt;/table&gt;</pre></div></div>

<p>Executing the String.Replace command in the .NET 1.1 code will produce the proper output. However, Microsoft decided to <em>upgrade</em> the Calendar control in .NET 2.0 by adding a <strong>tooltip</strong> for each date!</p>
<div id="attachment_287" class="wp-caption aligncenter" style="width: 282px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/tooltip1.jpg"><img class="size-full wp-image-287" title="Tool Tip in .NET 2.0" src="http://blog.ianuy.com/wp-content/uploads/2009/05/tooltip1.jpg" alt="Tool Tip in .NET 2.0" width="272" height="216" /></a><p class="wp-caption-text">Tool Tip in .NET 2.0</p></div>
<p>Since the String.Replace has no <em>checking</em> (this is not REGEX afterall), it also replaced the &#8220;Month&#8221; in the tooltip with the drop down box (&lt;select&gt; command), thus generating the broken control shown above. This is not, in anyway, the fault of the original developer. Can you anticipate what will Microsoft do?</p>
<p><strong>This is my first encounter on how Microsoft can break your products. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
</strong></p>
<h3>MSDE to Microsoft SQL Server 2005 Express</h3>
<p>Our web applications were written before the release of SQL Server 2005 Express. The only *free* choice back then is Microsoft SQL Server Desktop Engine, a free scaled-down version of Microsoft SQL Server 2000. Since the support for MSDE officially ended last April 8, 2008, we are then forced to upgrade to Microsoft SQL Server 2005 express.</p>
<p>Our previous MSDE setup runs on <strong>default instance</strong>. In migrating to SQL Server 2005, we run the risk of &#8220;conflicting&#8221; with our other products that runs on <strong>default instance</strong> of SQL 2005. So the decision was made to migrate from <strong>default instance </strong>to <strong>named instance</strong>.</p>
<p>Migrating to SQL Server 2005 Express is straightforward at first look. The first and the most obvious thing to do is to modify the installer (InstallShield) so that it will install SQL 2005 instead of MSDE.  To compensate with the instance problem, the second thing to do is to modify each and every <strong>connection string</strong> in the entire app to point to the proper named instance. Making sure that each and every connection string in your entire app has been changed is a monumental task&#8230; especially if different version of connection strings were used. After that, you also need to modify the Service Query String so that it will point to the proper SQL Service ($MSSQLSERVER to $Instance_Name). There are also minor modifications here and there, but its not worth the mention.</p>
<p>After three days of manual modification, we got to the point where we were able to install the product. We tested it and everything seems to work fine. We then got to the part where are going to test for the database backup. Lo and behold, it failed. But no error message was given. We looked for the bug for an entire day but our search proved futile. We called it a day and went home. The next day, my brilliant manager excitedly told us the problem.</p>
<blockquote>
<h3 style="text-align: center;">Microsoft SQL Server 2005 Express does not have SQL Server Agent.</h3>
</blockquote>
<p>Our backup routine uses SQL Server Agent. When a user request for a backup, the SQL Server will &#8220;schedule&#8221; that backup request and the SQL Server Agent will &#8220;execute&#8221; the request when the schedule parameter is met.</p>
<p>Simply put, No SQL Server Agent, No Backup.</p>
<p>We have three solutions to the problem:</p>
<ol>
<li>Ship the product with Microsoft SQL Server 2005 standard or enterprise edition (Instead of the Express edition)</li>
<li>Remove the &#8220;scheduled&#8221; backup. Instead, just provide a &#8220;one shot&#8221; backup</li>
<li>Create our own custom &#8220;Backup Scheduler&#8221; using Windows Task Scheduler</li>
</ol>
<p>We talked to the marketing folks and they eliminated option 1 because, according to them, we can&#8217;t make our customer pay for something that was free before. Option 2 was eliminated due to the simple fact that we can&#8217;t ship an upgraded version of our product with downgraded features (But this was actually done to one of the product that had missed its deadline). So Option 3 was our only choice.</p>
<p>The plan in creating Option 3 is simple. Create a &#8220;scheduled task&#8221; using <strong>schtasks.exe </strong>that will invoke <strong>sqlcmd.exe</strong> that will invoke the <strong>sql command</strong> to invoke the <strong>stored procedure</strong> that was doing the backups. The <strong>schtasks</strong> will then be invoked by the ASP.NET page using Process.Start();. So I created a wrapper class that will simplify this process. The class was created in 2 hours and I had it running and compiled to the ASP.NET page in just 3 hours. <strong>BUT IT DIDN&#8217;T WORK.</strong></p>
<p>Further investigation revealed that IIS 6.0 has a different security model than IIS 5.1 (which XP uses). Spawning a process from within IIS 6.0 will have a credential of NETWORK SERVICE. Yes, we can impersonate since we are using Windows Authentication, but it won&#8217;t work unless we force the user to type-in the credentials again. Which is bad in a usability point of view.</p>
<p>The workaround was to put the scheduler on a Windows Service that will then be run with proper credentials. The problem then was the communication between the ASP.NET page and the Windows Service. How will the Service know when to invoke the backup? Our solution is a little crude but simple. We did it old-skul UNIX style! The ASP.NET page will create a &#8220;marker&#8221; file in a certain, defined location. The Windows Service will then monitor that location&#8230; waiting for the &#8220;marker&#8221; file. If the marker file is found, the service will then invoke the backup procedure. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Fortunately for us, all the data needed for the backup is in the database, so we don&#8217;t need to pass anything between the ASP.NET page and the Service. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  We could have used sockets or mutex, but its overkill for our purpose.</p>
<p><strong>This</strong> are just the major steps that had to be done in order to make our web applications compatible with Windows Vista. There are a couple of minor steps that also needs attention like the IIS 5.1 to IIS 7.0 migration and the new Vista Security Model.</p>
<p>The next time you see the &#8220;Vista Compatible&#8221; sticker on a Software Box, think of the programmers who nearly died in making your software run on a &#8220;cuter&#8221; operating system.</p>
<h2>Windows 7, we are ready! <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' /> </h2>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;bodytext=%0A%0D%0AIn%20my%20previous%20blog%20post%2C%20I%27ve%20mentioned%20that%20I%27m%20working%20on%20a%20project%20to%20migrate%20an%20entire%20product%20line%20to%20Vista.%20What%20I%20meant%20by%20that%20is%20that%20I%20am%20responsible%20for%20making%20sure%20that%20our%20current%20product%20will%20run%20properly%20on%20Windows%20Vista.%20To%20guaran" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;notes=%0A%0D%0AIn%20my%20previous%20blog%20post%2C%20I%27ve%20mentioned%20that%20I%27m%20working%20on%20a%20project%20to%20migrate%20an%20entire%20product%20line%20to%20Vista.%20What%20I%20meant%20by%20that%20is%20that%20I%20am%20responsible%20for%20making%20sure%20that%20our%20current%20product%20will%20run%20properly%20on%20Windows%20Vista.%20To%20guaran" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;t=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;t=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;annotation=%0A%0D%0AIn%20my%20previous%20blog%20post%2C%20I%27ve%20mentioned%20that%20I%27m%20working%20on%20a%20project%20to%20migrate%20an%20entire%20product%20line%20to%20Vista.%20What%20I%20meant%20by%20that%20is%20that%20I%20am%20responsible%20for%20making%20sure%20that%20our%20current%20product%20will%20run%20properly%20on%20Windows%20Vista.%20To%20guaran" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Coding Horror 01: Readability vs Efficiency</title>
		<link>http://blog.ianuy.com/2009/04/26/coding-horror-01-readability-vs-efficiency/</link>
		<comments>http://blog.ianuy.com/2009/04/26/coding-horror-01-readability-vs-efficiency/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 12:15:08 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Coding Horror]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=173</guid>
		<description><![CDATA[Back in College, I have a friend who&#8217;s programming prowess is so godly that it can surpass or match mine  . He is a C++ Junkie and belongs to the Java Cult. His mental agility is so great that he can beat me in writing complex algorithms anytime of the day. In fact, I [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_174" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/04/coding-horror-stickers.jpg"><img class="size-medium wp-image-174" title="coding-horror-stickers" src="http://blog.ianuy.com/wp-content/uploads/2009/04/coding-horror-stickers-300x225.jpg" alt="My First Official &quot;Coding Horror&quot; Encouter" width="300" height="225" /></a><p class="wp-caption-text">My First Official &quot;Coding Horror&quot; Encounter</p></div>
<p>Back in College, I have a friend who&#8217;s programming prowess is so godly that it can surpass or match mine <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . He is a C++ Junkie and belongs to the Java Cult. His mental agility is so great that he can beat me in writing complex algorithms anytime of the day. In fact, I chose him to be the &#8220;Architect&#8221; for our project in Compiler Theory Class (<a title="Kompayler Studio 2008: The First Tagalog Kompayler, Programming Language and IDE" href="http://ianuy.multiply.com/journal/item/40" target="_blank">Kompayler Studio 2008: The First Tagalog Kompayler, Programming Language and IDE</a>). He is THAT great of a programmer&#8230; BUT</p>
<blockquote>
<h5 style="text-align: center;">Being a Great Programmer is not the same as being a Great Software Developer</h5>
</blockquote>
<p>&#8220;Aren&#8217;t programming and software development the same?&#8221; Uhhmm, NO. Programming is just a single part of Software Development. Software Development, on the other hand, is an entirely different song and dance.</p>
<p>In one of our converstations, I told him that instead of reading books about programming he should try to read books about software development. I gave him that advice not because I want him to suck in programming (I&#8217;m not that envious). I gave him that advice because I want him to realize that programming alone won&#8217;t make a great software product and that programming prowess alone won&#8217;t give him the best programming job around&#8230; at least here in the Philippines.</p>
<p>One of our main differences is reflected on how we write code (which eventually shows in our software). For example, say that we have a project that requires us to deliver a Simple Number Sorting Application that will ask the user to input 50 numbers and sort it. This project is resource constrained in such a way that we need to deliver it in 2 days.</p>
<p><span id="more-173"></span></p>
<p style="text-align: left;">What I would do is use a pre-existing <strong>bubble sort</strong> algorithm available in the class library (in .NET, I suppose), then I would add additional functionality, then create a test harness (unit test) to test my functions and then I&#8217;m done with the &#8220;coding&#8221; part. Then I would use the rest of my time to design an intuitive user-interface, provide a user manual and work on the packaging.</p>
<div id="attachment_180" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/04/simplesorter.jpg"><img class="size-medium wp-image-180" title="simplesorter" src="http://blog.ianuy.com/wp-content/uploads/2009/04/simplesorter-300x245.jpg" alt="My Simple Sorting Application" width="300" height="245" /></a><p class="wp-caption-text">My Simple Sorting Application</p></div>
<p style="text-align: left;">On the other hand, my friend would create a <strong>complex multi-threaded sorting algorithm</strong> that will have a runtime efficiency of  O(Log N). Not only that, it will be written in Haskel (or any other hardcore programming language) and it will also be invoked via command-line! So hackerish. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="text-align: center;">
<div id="attachment_181" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/04/complexsorter.jpg"><img class="size-medium wp-image-181" title="complexsorter" src="http://blog.ianuy.com/wp-content/uploads/2009/04/complexsorter-300x151.jpg" alt="His Complex Sorting &quot;Tool&quot;" width="300" height="151" /></a><p class="wp-caption-text">His Complex Sorting &quot;Tool&quot;</p></div>
<p>My point is simple&#8230; <em>In Software Development, there is a thing called <span style="text-decoration: underline;"><strong>Tradeoffs</strong></span></em>. What do I mean by Tradeoff? Take the above example. I traded-off the uber-cool <strong>complex multi-threaded sorting algorithm </strong>to <strong>USABILITY</strong> <strong>AND FUNCTIONALITY </strong>which, by the way, has more practical and positive impact to my users. You could argue that I suck for using bubble sort and not the <strong>complex multi-threaded sorting algorithm </strong>and you could also argue that my bubble sort has a runtime complexity of O(N^2). But being a Software Developer, I know that using that &#8220;<strong>complex multi-threaded sorting algorithm&#8221; </strong>would only be faster by 0.000000000000001312 seconds (remember, we are only sorting 50 elements) and that &#8220;improvement&#8221; will not be of any <em>significant </em>use to my end-users and I might as well use my time in creating extra  features, such as Print and Copy to Clipboard, that will surely make my product more functional and easy to use.</p>
<p>At work, I am working on a project to &#8220;migrate&#8221; our products to Vista. To Migrate meaning &#8220;<em>to make it compatible with Vista&#8221;</em>. One of our product has an <strong>Autorun</strong> executable which will decide which &#8220;components&#8221; (SQL Server, VC++ 8.0 Redistributable, .NET Framework) to install. During a routine test run at the Test Deparment, they found out that this certain product is not working on Vista and filled a Track against it. The said Track was assigned to me and I&#8217;m expected to fix it. So I pulled the Visual Basic 6.0 source code of the Autorun executable from our TFS and performed an investigation. While investigating, I saw a very weird block of code&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="vb" style="font-family:monospace;"><span style="color: #000080;">Private</span> <span style="color: #000080;">dim</span> VCREDIST <span style="color: #000080;">as</span> <span style="color: #000080;">long</span>
<span style="color: #000080;">Private</span> <span style="color: #000080;">dim</span> NETFRAMEWORK <span style="color: #000080;">as</span> <span style="color: #000080;">long</span>
<span style="color: #000080;">Private</span> <span style="color: #000080;">dim</span> SQLSERVER <span style="color: #000080;">as</span> <span style="color: #000080;">long</span>
<span style="color: #000080;">Private</span> <span style="color: #000080;">dim</span> COMPONENT1 <span style="color: #000080;">as</span> <span style="color: #000080;">long</span>
<span style="color: #000080;">Private</span> <span style="color: #000080;">dim</span> COMPONENT2 <span style="color: #000080;">as</span> <span style="color: #000080;">long</span>
<span style="color: #000080;">Private</span> <span style="color: #000080;">dim</span> COMPONENT3 <span style="color: #000080;">as</span> <span style="color: #000080;">long</span>
<span style="color: #000080;">Private</span> <span style="color: #000080;">dim</span> COMPONENT16 <span style="color: #000080;">as</span> <span style="color: #000080;">long</span>
&nbsp;
VCREDIST = 1
NETFRAMEWORK = 2
SQLSERVER = 4
COMPONENT1 = 8
COMPONENT2 = 16
COMPONENT3 = 32
COMPONENT16 = 65536</pre></div></div>

<p>If you see a 1 or a 0 in the code, its pretty normal because you know that it is a <em>flag</em> for something . But if you see a 7 or 16 or 32, you know something is wrong. So I ignored that and went straight to the actual function that does the shell execution to install the component and I saw something like this&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="vb" style="font-family:monospace;"><span style="color: #000080;">While</span> ComponentInstalled != 13
&nbsp;
	installNum = GetNextComponent	
&nbsp;
	<span style="color: #000080;">if</span> installNum <span style="color: #000080;">AND</span> 1 <span style="color: #000080;">then</span>
		InstallComponent(installNum)
	<span style="color: #000080;">else</span>
		installNum = installNum * 2
	<span style="color: #000080;">end</span> <span style="color: #000080;">if</span>
&nbsp;
<span style="color: #000080;">End</span> <span style="color: #000080;">While</span></pre></div></div>

<p>I was dumbfounded and stupified, why is there an &#8220;AND 1&#8243; in that code? and what is the purpose of the * 2? So I asked my manager for his input. And after staring at the code for 30 minutes, my brilliant manager shouted &#8220;That code is using <strong>BIT PATTERNS!</strong>&#8220;. Instantly, I understood what the code does.</p>

<div class="wp_syntax"><div class="code"><pre class="vb" style="font-family:monospace;">VCREDIST = 1                 <span style="color: #008000;">'0000 0000 0001
</span>NETFRAMEWORK = 2        <span style="color: #008000;">'0000 0000 0011
</span>SQLSERVER = 4              <span style="color: #008000;">'0000 0000 0111
</span>COMPONENT1 = 8           <span style="color: #008000;">'0000 0000 1111
</span>COMPONENT2 = 16          <span style="color: #008000;">'0000 0001 1111
</span>COMPONENT3 = 32          <span style="color: #008000;">'0000 0011 1111
</span>COMPONENT16 = 65536    '1111 1111 1111</pre></div></div>

<p>That block of code is actually a binary pattern used for flagging the components. Each placeholder in that binary pattern is a FLAG (1 or 0) which actually tells the function GetNextComponent if that component should be installed or not. The *2 is used for shifthing the binary pattern so that the active placeholder for a certain flag will be at the rightmost (last bit) of the pattern! Brilliant!</p>
<p>To solve the issue, I just needed to force the Autorun to Install <strong>VCREDIST</strong> in Vista by adding this line of code in the Vista Condition of the <em>GetNextComponent</em> function:</p>
<pre>VCREDIST = VCREDIST OR 1</pre>
<p>So it will always install the Visual C++ 8.0 Redistributable in Vista. The actual problem is that the Autorun Executable thinks that Vista does not need the redistributable and will not install it.  That&#8217;s why our product that needs the redistributable will not work.</p>
<p>I have great admiration for the brilliance of the programmer who wrote this. The method is so efficient that instead of declaring 12 Integers for Flag, he would only need to use a single long! My manager told me that the one who wrote this application is actually a &#8220;CONTROLLER&#8221; programmer. A type of programmer in our organization that writes the firmwares for our hardware controllers.</p>
<p>When writing firmwares that needs to be tight and needs to run in realtime, time complexity is your biggest enemy and you need to code against that. But in an Autorun application for installation, you <strong>DONT!</strong> In this example, <span style="text-decoration: underline;"><em><strong>Readability and Maintability was traded-off to efficiency that was not even needed!</strong></em></span> In turn, a simple issue that can be fixed in a matter of seconds was fixed in half a day.</p>
<p>As Software Developers, we should have the right mindset to decide on what trade offs are necessary. We should not only be Great Programmers who can write great codes but we should transcend to being Great Software Developers who can &#8220;take a concept, build a team, set up state of the art development processes, design a software product, the right software product, and produce it. Not just any software product: a high quality software product that solves a problem and delights your users. With documentation. A web page. A setup program. Test cases. Norwegian versions. Bokmål and Nynorsk. Appetizers, dessert, and twenty seven eight-by-ten color glossy photographs with circles and arrows and a paragraph on the back of each one explaining what each one was.&#8221;</p>
<p>As for my Friend, he is now working at Oracle. My only wish is that he would be able to work on their database management system where efficiency has higher value than code-readability.</p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F&amp;title=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency&amp;bodytext=%0A%0D%0ABack%20in%20College%2C%20I%20have%20a%20friend%20who%27s%20programming%20prowess%20is%20so%20godly%20that%20it%20can%20surpass%20or%20match%20mine%20%3AD.%20He%20is%20a%20C%2B%2B%20Junkie%20and%20belongs%20to%20the%20Java%20Cult.%20His%20mental%20agility%20is%20so%20great%20that%20he%20can%20beat%20me%20in%20writing%20complex%20algorithms%20anytime%20" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F&amp;title=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F&amp;title=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency&amp;notes=%0A%0D%0ABack%20in%20College%2C%20I%20have%20a%20friend%20who%27s%20programming%20prowess%20is%20so%20godly%20that%20it%20can%20surpass%20or%20match%20mine%20%3AD.%20He%20is%20a%20C%2B%2B%20Junkie%20and%20belongs%20to%20the%20Java%20Cult.%20His%20mental%20agility%20is%20so%20great%20that%20he%20can%20beat%20me%20in%20writing%20complex%20algorithms%20anytime%20" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F&amp;t=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F&amp;t=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F&amp;title=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency&amp;annotation=%0A%0D%0ABack%20in%20College%2C%20I%20have%20a%20friend%20who%27s%20programming%20prowess%20is%20so%20godly%20that%20it%20can%20surpass%20or%20match%20mine%20%3AD.%20He%20is%20a%20C%2B%2B%20Junkie%20and%20belongs%20to%20the%20Java%20Cult.%20His%20mental%20agility%20is%20so%20great%20that%20he%20can%20beat%20me%20in%20writing%20complex%20algorithms%20anytime%20" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F26%2Fcoding-horror-01-readability-vs-efficiency%2F&amp;title=Coding%20Horror%2001%3A%20Readability%20vs%20Efficiency" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/04/26/coding-horror-01-readability-vs-efficiency/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Deadlines: I used to love them</title>
		<link>http://blog.ianuy.com/2009/04/12/deadlines-i-used-to-love-them/</link>
		<comments>http://blog.ianuy.com/2009/04/12/deadlines-i-used-to-love-them/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 12:30:43 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=101</guid>
		<description><![CDATA[Just a day after graduation, I received a congratulatory note from the Director of Software Development at work. The email is addressed to the whole software development department and it goes something like:
&#8220;Congratulations in accomplishing another milestone in your life. Now, there&#8217;s a new milestone that you need to accomplish&#8230;&#8221;
DEADLINES!



I don&#8217;t get it. What&#8217;s with [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><span style="font-size: small;">Just a day after graduation, I received a congratulatory note from the Director of Software Development at work. The email is addressed to the whole software development department and it goes something like:</span></p>
<p>&#8220;Congratulations in accomplishing another milestone in your life. Now, there&#8217;s a new milestone that you need to accomplish&#8230;&#8221;</p>
<div style="text-align: center;"><span style="font-weight: bold; font-size: large;">DEADLINES!</span></div>
<p style="text-align: left;"><span style="font-size: small;"><br />
</span><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none; width: 322px; height: 177px;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/ScXfXAoKCDIAAE75saA1/deadline1.jpg?et=iZyicGVKEjgDxij%2BbheDvA&amp;nmid=0" border="0" alt="" width="200" height="201" /></span><span style="font-size: small;"><br />
</span></p>
<p style="text-align: left;"><span id="more-101"></span><span style="font-size: small;">I don&#8217;t get it. What&#8217;s with deadlines and software development? and why is it that most, if not all, developers I have met (or read their blogs) hate deadlines? and why is it that in the field of I.T in general, it is a common and accepted practice that projects </span><span style="font-size: small;">overshoot and miss their deadlines? I know that&#8217;s alot of &#8220;whys&#8221;, but cut me some slack, will ya? I&#8217;m just 3 weeks employed.<br />
</span><span style="font-size: small;"><br />
</span></p>
<div style="text-align: justify;"><span style="font-size: small;">During my college days, <span style="font-weight: bold;">I love deadlines</span>! I don&#8217;t kn</span><span style="font-size: small;">ow exactly</span><span style="font-size: small;"> why, but I saw it as a &#8220;<span style="font-weight: bold;">finish line</span>&#8221; that I need to cross &#8212; and if I </span><span style="font-size: small;">cross </span><span style="font-size: small;">it fas</span><span style="font-size: small;">ter than an</span><span style="font-size: small;">y</span><span style="font-size: small;">one else, then I can be considered as the winner. And I&#8217;ve always <span style="font-style: italic;">won</span> those races (as pointed out in my <a href="http://ianuy.multiply.com/journal/item/90/Leadership_Why_I_Love_Going_to_Work">previous post</a>). Maybe that&#8217;s why I love deadlines&#8230; they provide an arena wher</span><span style="font-size: small;">e I can compete and win. And everyone wh</span><span style="font-size: small;">o knows me can atte</span><span style="font-size: small;">st that I&#8217;m a very competitive guy who like to boast and win (and all real programmers are like this, by default). <span style="font-style: italic;">Pride of Workmanship</span>, I say.</span><span style="font-size: small;"><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none; width: 211px; height: 105px;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/ScXkZwoKCDIAAA0fDRc1/deadlines.jpg?et=JCDXSxmviJaTg5k%2BB1BnmQ&amp;nmid=0" border="0" alt="" width="300" height="225" /></span></span><span style="font-size: small;"><br />
Just this week, my manager (Development Manager) approached me and told me that I will no longer be working on my <a title="Localization: A Programmer's Dirty Job" href="http://blog.ianuy.com/2009/04/12/localization-a-programmers-dirty-job/" target="_blank"><span style="font-style: italic;">Dirty Job</span> (Localization, that is)</a> and that I will be placed on a new project that involves ASP.NET and Licensing. Well, who would not want to work on a shinny cool new feature using an up</span><span style="font-size: small;">dated techn</span><span style="font-size: small;">ology especially when it will take you off a dirty job? So I took it and became the <span style="font-weight: bold;">main developer</span> for the project. Anyway, Encryption and security stuff is right up my alley (My <a href="http://ianuy.com/flaxor/">undergraduate thesis is related to encryption</a>) and I have 2 years experience working with .NET code so I thought, the project is just appropriate for me.</span></p>
<p><span style="font-size: small;">The project involves implementing a new licensing scheme called <span style="text-decoration: underline;">Temporary Licenses</span>. There&#8217;s already an existing set of licenses (READ: SET) that is too complex for me to explain in this post. But anyway, the reasoning behind implementing the new temporary license is to allow the Salesman (or the Marketing Guys) to demonstrate how the new product works and in turn, close the deal and earn some green.</span></p>
<p><span style="font-size: small;"><br />
</span><span class="insertedphoto"><img class="alignleft" style="width: 153px; height: 203px;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/ScXv1goKCDIAAC9neeQ1/thanks-vote-of-confidence.png?et=VdDn17YRaymMSmTwBCq6Cw&amp;nmid=0" border="0" alt="" /></span><span style="font-size: small;">My task, then, is to <span style="font-weight: bold;">construct</span> an <span style="font-style: italic;">Architecture Document<span style="font-weight: bold;"> </span></span>to explain how the different components of this new feature will interact with the existing core </span><span style="font-size: small;">system. Now, let&#8217;s take a step back and consider the fact that I am just 3 weeks old in terms of employment and then I am asked to deliver an Architecture Document! A high-l</span><span style="font-size: small;">evel design doc</span><span style="font-size: small;">ument! Th</span><span style="font-size: small;">at&#8217;s a huge vote of confidence coming from my manager and I&#8217;m very thankful for the fact that they are giving me an opportunity to flex my Programming Muscle very early-on. (Yes, I know its docume</span><span style="font-size: small;">ntation but in-order to deliver this particular architecture document, you need to understand the underlying code of the existing system. Think of it like the foreplay before having sex. haha).</span></div>
<p><span style="font-size: small;">Right after reading the <span style="font-weight: bold;">concept document</span> (a document which contains how the higher-ups believe the</span><span style="font-size: small;"> new fe</span><span style="font-size: small;">ature should work), my manager asked me for a <span style="font-weight: bold;"><a href="http://en.wiktionary.org/wiki/guesstimate">guesstimate</a>. </span>So I said, &#8220;<span style="font-weight: bold;">I don&#8217;t know</span>&#8220;, </span><span style="font-size: small;">and quite joyfully at that. H</span><span style="font-size: small;">ow should I know? I haven&#8217;t even seen a single line of code of the existing system. Even though I know exactly how </span><span style="font-size: small;">to implement the new feature, I still need to add it to an existing working system and integration needs research and time. Luckily, my manager is not a &#8220;<span style="font-weight: bold;">suit</span>&#8221; so he understood where I was coming from and scheduled a meeting with our Technical Lead and another Seni</span><span style="font-size: small;">or Developer to produce a valid estimate.</span></p>
<div style="text-align: justify;"><span style="font-size: small;">After the meeting, the Technical Lead has concluded th</span><span style="font-size: small;">at I do not yet have sufficient knowledge of the work that had to be done so </span><span style="font-size: small;">a</span><span style="font-size: small;"> valid estim</span><span style="font-size: small;">ate couldn&#8217;t be produced. So he suggested that we perform a &#8220;fact finding&#8221; activity. It&#8217;s </span><span style="font-size: small;">a research-type activity where I will touch base with developers of various systems that I </span><span style="font-size: small;">need to interact with. </span><span style="font-size: small;">And one thing was clear, <span style="font-weight: bold;">no one in Manila have worked with any of those systems! </span>This was the first time that our department will be handling and be trusted with Licensing stuffs. </span><span style="font-size: small;">So I have to contact different people from both U.S. and U.K sites just </span><span style="font-size: small;">to gather facts about the system.</span></div>
<p style="text-align: left;"><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none; width: 178px; height: 199px;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/ScYROgoKCDIAAA4FB5g1/CMHRimage.gif?et=jM55xFRdRXbM34FTxv7Ijg&amp;nmid=0" border="0" alt="" width="300" height="300" /></span></p>
<p><span style="font-size: small;">Eventually, my manager persuaded me that this task can be done in <span style="font-weight: bold;">1 week</span>. By that time</span><span style="font-size: small;">, I already have a vague idea on how to implement the feature in the existing system&#8230; I just have to prove my theory by directly working with the code so I agreed and started by asking for a <span style="font-weight: bold;">debug</span> build that I can work on. Sadly, there is no working setup for a debug build so I have to make do with just reading the code and compilin</span><span style="font-size: small;">g mentally. And doing it like that will take time &#8212; time which is not included in my prior guesstimate.</span></p>
<p><span class="insertedphoto"><img class="alignleft" style="width: 134px; height: 152px;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/Scev3woKCDIAADV4gIY1/god-programmer.jpg?et=HfV4B1lEtWhJYLAoEVSWCQ&amp;nmid=0" border="0" alt="" /></span><span style="font-size: small;">Now</span><span style="font-size: small;"> I </span><span style="font-size: small;">know why developers hate deadlines. <span style="font-weight: bold;">Deadlines makes developers feel tha</span></span><span style="font-size: small;"><span style="font-weight: bold;">t they are not in control of the situation.</span> And as developers, we hate being out </span><span style="font-size: small;">of control. We are so used to having TOTAL control of our own universe (Our Systems), that we already think that we are the Gods of our own universe. I remember a quote by <a href="http://en.wikipedia.org/wiki/Joseph_Weizenbaum">Joseph Weizenbaum</a>, the creator of <a href="http://en.wikipedia.org/wiki/ELIZA">ELIZA</a>, that goes something like this&#8230;</span></p>
<p><span style="font-size: small;"><br />
</span></p>
<div style="text-align: center; font-style: italic;"><span style="font-size: large;">&#8220;The computer programmer is a creator of universes for which he alone is responsible. Universes of virtually unlimited complexity can be created in the form of computer programs.&#8221;</span></div>
<p>Why do I feel that deadlines make us feel out of control? Well, in my particular case,  I feel out of control because I don&#8217;t have any command to the crucial variables that constitutes my task. Like, I don&#8217;t have any control on when I will have my <span style="font-weight: bold;">debug </span>machine. I also don&#8217;t have control on <span style="font-weight: bold;">what time the people</span> from U.S. and U.K <span style="font-weight: bold;">will respond to my inquiries</span> via e<span style="font-size: small;">-mail. I don&#8217;t even have immediate control of my <span style="font-weight: bold;">research time</span> because it is <span style="font-style: italic;">dependent</span> on having a debug machine and other people. The key word here is <span style="font-weight: bold;">DEPENDECIES</span>&#8230; and it plays a big part of making us feel out of control.</span></p>
<div style="text-align: justify;"><span style="font-size: small;">In my <a title="Leadership: Why I Love Going to Work" href="http://blog.ianuy.com/2009/04/12/leadership-why-i-love-going-to-work/" target="_blank">previous post</a>, I have mentioned that TEAM WORK is </span><span style="font-size: small;">my biggest learning I had from my On-the-Job training. But there is also some downside in working in a team environment and that is <span style="font-weight: bold;">dependencies</span>. After realizing this, something suddenly hit me. All throughout college, I have mostly worked alone (around 85% of the work) and that&#8217;s why I have total control of anyt</span><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none; width: 289px; height: 191px;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/Sce3dwoKCDIAADHerJY1/t5-service-dependencies.jpg?et=ZrktYMwx0QNoCwY0%2BBNmIw&amp;nmid=0" border="0" alt="" width="300" height="201" /></span><span style="font-size: small;">hing that is related to my projects and that is also why we have always sub</span><span style="font-size: small;">mi</span><span style="font-size: small;">tted 2 to 3 weeks ahead of the deadline. Other teams have always submitted</span><span style="font-size: small;"> late (As much as 6 months late), and those teams are com</span><span style="font-size: small;">posed of friends or barkadas&#8230; Because they are so keen on working in batch (like overnight thesis making) that they ended up not finishing anything at all. Why? Because a MODULE that is supposed to be done by MEMBER A is not done in time so the other MODULE by MEMBER B cannot move forward because it is dependent on MEMBER A&#8217;S MODULE. This is the common excuse during their defense and I believe its a common excuse among I.T. students everywhere when asked why the project was delayed for so long &#8212; and it&#8217;s all about <span style="font-weight: bold;">dependencies.</span></span></div>
<p><span style="font-size: small;"><br />
</span><span style="font-size: small;"><br />
Back then, I used to love deadlines because it makes me feel that I am the master of my own destiny. I used to love it because it makes mo more productive by giving me something to shoot for&#8230; a competition, a race, a tourney to win&#8230;</span></p>
<p><span style="font-style: italic; font-size: large;">&#8230; </span><span style="font-style: italic; font-size: large;">Now, <span style="text-decoration: underline;">I hate it </span>because if I’m behind schedule, I feel doomed and depressed and unmotivated.</span></p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Deadlines%3A%20I%20used%20to%20love%20them&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F&amp;title=Deadlines%3A%20I%20used%20to%20love%20them&amp;bodytext=Just%20a%20day%20after%20graduation%2C%20I%20received%20a%20congratulatory%20note%20from%20the%20Director%20of%20Software%20Development%20at%20work.%20The%20email%20is%20addressed%20to%20the%20whole%20software%20development%20department%20and%20it%20goes%20something%20like%3A%0D%0A%0D%0A%22Congratulations%20in%20accomplishing%20anot" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F&amp;title=Deadlines%3A%20I%20used%20to%20love%20them" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F&amp;title=Deadlines%3A%20I%20used%20to%20love%20them&amp;notes=Just%20a%20day%20after%20graduation%2C%20I%20received%20a%20congratulatory%20note%20from%20the%20Director%20of%20Software%20Development%20at%20work.%20The%20email%20is%20addressed%20to%20the%20whole%20software%20development%20department%20and%20it%20goes%20something%20like%3A%0D%0A%0D%0A%22Congratulations%20in%20accomplishing%20anot" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Deadlines%3A%20I%20used%20to%20love%20them%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Deadlines%3A%20I%20used%20to%20love%20them&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F&amp;t=Deadlines%3A%20I%20used%20to%20love%20them" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F&amp;t=Deadlines%3A%20I%20used%20to%20love%20them" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F&amp;title=Deadlines%3A%20I%20used%20to%20love%20them&amp;annotation=Just%20a%20day%20after%20graduation%2C%20I%20received%20a%20congratulatory%20note%20from%20the%20Director%20of%20Software%20Development%20at%20work.%20The%20email%20is%20addressed%20to%20the%20whole%20software%20development%20department%20and%20it%20goes%20something%20like%3A%0D%0A%0D%0A%22Congratulations%20in%20accomplishing%20anot" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fdeadlines-i-used-to-love-them%2F&amp;title=Deadlines%3A%20I%20used%20to%20love%20them" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/04/12/deadlines-i-used-to-love-them/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leadership: Why I Love Going to Work</title>
		<link>http://blog.ianuy.com/2009/04/12/leadership-why-i-love-going-to-work/</link>
		<comments>http://blog.ianuy.com/2009/04/12/leadership-why-i-love-going-to-work/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 11:59:03 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=81</guid>
		<description><![CDATA[On April 17, 2009, I will be attending a  leadership seminar sponsored by Accenture Philippines. Accenture Student Leadership Conference is a 3-day seminar that will be held somewhere in Tagaytay.
According to Accenture&#8217;s website, participants will &#8220;learn about key Accenture leadership contribution areas by being value creators, business operators, and people developers through seminars and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><span style="font-size: small;">On April 17, 2009, I will be attending a  <span style="font-weight: bold;">leadership seminar</span> sponsored by <span style="font-weight: bold;">Accenture Philippines</span>. <a href="http://careers3.accenture.com/Careers/Philippines/Graduate/StudentLeadershipConference_FAQs">Accenture Student Leadership Conference</a> is a 3-day seminar that will be held somewhere in <span style="font-style: italic;">Tagaytay</span>.</span></p>
<p><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/Sbx47woKCDIAAGCs8Wk1/SLC-FAQs.jpg?et=XWtJ1KWKJa4BYhGygYkh1Q&amp;nmid=0" border="0" alt="" width="300" height="199" /></span><span style="font-size: small;">According to Accenture&#8217;s website, participants will &#8220;learn about key Accenture leadership contribution areas by being value creators, business operators, and people developers through seminars and fun activities</span>&#8230; <span style="font-size: small;">They will also hear first-hand testimonials from some of the top Accenture Senior Executives, Managers, and Leads from various workforces and projects&#8221;.</span></p>
<p>If you have attended at least one leadership seminar in your life, you know that it will be full of ego-massaging and morale-boosting talks from some senior-management guy from some Fortune/Global 500 company. And some funny &#8220;group dynamics&#8221; that the event coordinators will link to a certain &#8220;leadership&#8221; quality but in reality, it will just make you tired and sweaty. I have yet to attend a leadership seminar that will <span style="font-weight: bold;">really</span> teach me on how to be a <span style="font-weight: bold;">really</span> good leader. <span style="font-size: small;">Accenture SLC&#8230; here&#8217;s hoping!</span></p>
<div style="text-align: justify;"><span style="font-size: small;"><span id="more-81"></span><br />
</span><span style="font-size: small;"><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbyNUwoKCDIAAG2bKrI1/Above-Beyond-logo-w-no-tag.jpg?et=cFZ%2BK2CF%2BLiXMse7dF8XLw&amp;nmid=0" border="0" alt="" width="300" height="106" /></span></span><br />
<span style="font-size: small;">During my College days, whenever there&#8217;s a new project that had to be done in <span style="font-weight: bold;">groups</span>, people never failed to nominate me as the <span style="font-weight: bold;">leader</span> (Mostly on CS* and IT* subjects) and I have always gladly accepted it. I like being the leader because I have total control of everything&#8230; from the implementation details like naming conventions and algorithms to project management details like deadlines and task </span><span style="font-size: small;">breakdowns. </span><span style="font-size: small;">And looking back, I was very successful on all of those endeavors. Successful in the sense that we have always submitted 2 weeks (at most 1 month) <span style="font-weight: bold;">be</span></span><span style="font-size: small;"><span style="font-weight: bold;">fore the deadline</span><span style="font-weight: bold;"> </span>and the <span style="font-weight: bold;">specs and feature set</span> (Including documentation and packaging) of our project is <span style="font-weight: bold;"><span style="font-style: italic;">above and beyond</span></span><span style="font-style: italic;"> </span>the agreed upon requirements. As my co-worker puts it, we may have &#8220;<span style="text-decoration: underline;">underpromised and overdelivered</span>&#8220;. Truth be told, all of my project related subjects garnered a grade of 1.0. (Making a point here).</span></div>
<p style="text-align: left;"><span style="font-size: small;"><br />
But it begs the question, why did my groupmates chose me as the leader? I don&#8217;t really know. But what I know is this&#8230; They <span style="font-weight: bold;">did not</span> choose be because I was inspirational, motivational nor because I have good leadership qualities&#8230; They chose me because <span style="font-weight: bold;">I can deliver</span> (and because they know that I will always do 85% of the work). They chose me because of my <span style="font-weight: bold;">technical abilities</span> and not because of my <span style="font-weight: bold;">leadership abilities</span>.<br />
</span></p>
<p>You know what? I don&#8217;t really think that I have &#8220;leadership&#8221; abiliti<span style="font-size: small;">es. In fact, I suck at being a leader, or at least I suck at the <span style="font-weight: bold;">people-side</span> of being a leader. I do not know anything about being <span style="font-weight: bold;">inspirational or motivational</span>. I do not know how to handle a group <span style="font-weight: bold;">efficiently</span>. I don&#8217;t know squat about WBS (Work-breakdown Structure) or <span style="font-weight: bold;">Teamwork</span>. Up till the end of my college days, I have, mostly, always worked alone.</span><span style="font-size: small;"><br />
</span></p>
<p>Tha<span style="font-size: small;">t&#8217;s why my biggest learning from my On-the-Job</span><span style="font-size: small;"> Training is learning on how to work with my teammates. Although I have learned a lot of technical stuffs like Software Delivery (From Automated Unit Testing to Image Builds) and a whole new field of Process Automation, I still consider learning to work harmoniously in a team environment as the most rewarding experience.</span><br />
<span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbyMeAoKCDIAAE2ojDs1/anonymous-leadership-5000373.jpg?et=14I3ACav5A9LIYn5FnPa6Q&amp;nmid=0" border="0" alt="" width="300" height="216" /></span><br />
<span style="font-size: small;">At work, there are real leaders. People like my immediate supervisor (Development Manager) and his immediate supervisor (Director of Software Development) are the *real-world* leaders. And to tell you the truth, I think that they are GREAT at what they do. In both technical-side and people-side of lead</span><span style="font-size: small;">ing a software development team.</span><br />
<span style="font-size: small;"><br />
</span><span style="font-size: small;"><br />
</span><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/Sbye9AoKCDIAAB9e9uQ1/20724.strip.sunday.gif?et=jfJIAO5ijDBbUT87fHZL6w&amp;nmid=0" border="0" alt="" width="300" height="134" /></span><span style="font-size: small;">When I </span><span style="font-size: small;">was in college, one of my biggest fear is to have an immediate supervisor that has an MBA (Business Administration) degree. I call those </span><span style="font-size: small;">people &#8220;the </span><span style="font-size: small;">suits&#8221;. <a href="http://www.joelonsoftware.com/items/2006/06/16.html">Joel Spolsky</a> said that &#8220;Watching non-programmers trying to run software companies is like watching someone who doesn&#8217;t know how to surf trying to surf&#8230; The cult of the MBA likes to </span><span style="font-size: small;">believe that you can run organizations that do things that you don&#8217;t understand&#8221;. Which I totally agree-on&#8230; based on experience (I had this certain professor in college who have a PH.D. in BA and teaching management subjects like Quality Management who argues that the PENTAGON was infected with a virus ["the LOVE bug"] because their &#8220;firewall&#8221; was weak and not because, against the better judgment of his computer science student, of social engineering techniques).</span></p>
<p>So it was quite a relief when my supervisors at work happens to be really technical guys. Once in their careers, they were programmers. Real, actual, programmers. And that&#8217;s one of the things that motivates me at work. For me, that is what being a leader is all about. Leadership by example.</p>
<p><span class="insertedphoto"><img class="alignleft" style="border: 0pt none; width: 240px; height: 358px;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbylgQoKCDIAABi-YyQ1/leadership-mountain-guy.jpg?et=i7JCSff3Y19tPMati7Bn5g&amp;nmid=0" border="0" alt="" width="240" height="300" /></span></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><span style="font-size: small;">It is such a joy to come to work and see your supervisor, the development</span><span style="font-size: small;"> </span><span style="font-size: small;"><span style="font-weight: bold;">manager</span>, <span style="text-decoration: underline;">DEBUGGING and TRYING to fix an issue</span>. It is also a joy to have a manager who actually knows what you are doing. And there were instances at work while we are trying to fix a very complex issue, it is our development manager who cracked the case! I mean, there were times that our manager is much more smarter than us!</span><br />
<span style="font-size: small;"><br />
Just the other week, I saw the Director of Software Development seating at my co-worker&#8217;s workstation trying to fix an installer issue! I was shocked. A senior management guy directly working with a computer. That single event alone restored my faith on the system&#8230;</span></p>
<p><span style="font-style: italic; font-size: large;"><br />
&#8230;the belief that geeky guys can still succeed in a world where business acumen is valued more than technical skills.</span></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><span style="font-size: small;">I&#8217;ll leave you with a short story from <a href="http://www.joelonsoftware.com/articles/BestSoftwareWriting.html">Joel Spolsky&#8217;s</a> blog about Leadership as this story shares the same sentiments as mine. Enjoy!</span></p>
<div style="text-align: left;">
<blockquote><p><em>For a few months in the army I worked in the mess hall, clearing tables and washing dishes nonstop for 16 hours a day, with only a half hour break in the afternoon, if you washed the dishes really fast. My hands were permanently red, the front of my blouse was permanently wet and smelly, and I couldn’t take it any more.</em></p>
<p><em>Somehow, I managed to get out of the mess hall into a job working for a high-ranking Sergeant Major. This guy had years of experience. He was probably twenty years older than the kids in the unit. Even in the field, he was always immaculate, wearing a spotless, starched, pressed full dress uniform with impeccably polished shoes no matter how dusty and muddy the rest of the world was around him. You got the feeling that he slept in 300 threadcount Egyptian cotton sheets while we slept in dusty sleeping bags on the ground.</em></p>
<p><em>His job consisted of two things: discipline and the physical infrastructure of the base. He was a bit of a terror to everyone in the battalion due to his role as the chief disciplinary officer. Most people only knew him from strutting around the base conducting inspections, screaming at the top of his lungs and demanding impossibly high standards of order and cleanliness in what was essentially a bunch of tents in the middle of the desert, alternately dust-choked or mud-choked, depending on the rain situation.</em></p>
<p><em>Anyway, on the first day working for the Sergeant Major, I didn’t know what to expect. I was sure it was going to be terrifying, but it had to be better than washing dishes and clearing tables all day long (and it’s not like the guy in charge of the mess hall was such a sweetheart, either!)</em></p>
<p><em>On the first day he took me to the officer’s bathroom and told me I would be responsible for keeping it clean. “Here’s how you clean a toilet,” he said.</em></p>
<p><em>And he got down on his knees in front of the porcelain bowl, in his pressed starched spotless dress uniform, and scrubbed the toilet with his bare hands.</em></p>
<p><em>To a 19 year old who has to clean toilets, something which is almost by</em> definition <em>the worst possible job in the world, the sight of this high ranking, 38 year old, immaculate, manicured, pampered discipline officer cleaning a toilet completely reset my attitude. If he can clean a toilet, I can clean a toilet. There’s nothing wrong with cleaning toilets. My loyalty and inspiration from that moment on were unflagging.</em> That’s <em>leadership.</em></p></blockquote>
<p><em><br />
</em></div>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F&amp;title=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work&amp;bodytext=On%20April%2017%2C%202009%2C%20I%20will%20be%20attending%20a%20%20leadership%20seminar%20sponsored%20by%20Accenture%20Philippines.%20Accenture%20Student%20Leadership%20Conference%20is%20a%203-day%20seminar%20that%20will%20be%20held%20somewhere%20in%20Tagaytay.%0D%0A%0D%0AAccording%20to%20Accenture%27s%20website%2C%20participants%20wil" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F&amp;title=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F&amp;title=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work&amp;notes=On%20April%2017%2C%202009%2C%20I%20will%20be%20attending%20a%20%20leadership%20seminar%20sponsored%20by%20Accenture%20Philippines.%20Accenture%20Student%20Leadership%20Conference%20is%20a%203-day%20seminar%20that%20will%20be%20held%20somewhere%20in%20Tagaytay.%0D%0A%0D%0AAccording%20to%20Accenture%27s%20website%2C%20participants%20wil" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F&amp;t=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F&amp;t=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F&amp;title=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work&amp;annotation=On%20April%2017%2C%202009%2C%20I%20will%20be%20attending%20a%20%20leadership%20seminar%20sponsored%20by%20Accenture%20Philippines.%20Accenture%20Student%20Leadership%20Conference%20is%20a%203-day%20seminar%20that%20will%20be%20held%20somewhere%20in%20Tagaytay.%0D%0A%0D%0AAccording%20to%20Accenture%27s%20website%2C%20participants%20wil" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fleadership-why-i-love-going-to-work%2F&amp;title=Leadership%3A%20Why%20I%20Love%20Going%20to%20Work" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/04/12/leadership-why-i-love-going-to-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Localization: A Programmer&#8217;s Dirty Job</title>
		<link>http://blog.ianuy.com/2009/04/12/localization-a-programmers-dirty-job/</link>
		<comments>http://blog.ianuy.com/2009/04/12/localization-a-programmers-dirty-job/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 10:47:32 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=70</guid>
		<description><![CDATA[When I was in College, I was amazed that the suits (&#8221;Business People&#8221;) are so willing to pay me good money just to spew out pieces of code that would eventually end up in a crappy system somewhere. Well, that was the time when I thought that working as programmer is just about programming. Or, [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">When I was in College, I was amazed that the suits (&#8221;Business People&#8221;) are so willing to pay me good money just to spew out pieces of code that would eventually end up in a crappy system somewhere. Well, that was the time when I thought that working as programmer is just about programming. Or, that was the time when I believe that majority of a programmer&#8217;s time would be spent writing code&#8230; building stuffs.</span></p>
<p>Nowadays, when people ask me about my typical day at work, I always tell them that I&#8217;m working on a Localization Project. Most often than not, the common reply is &#8220;What&#8217;s that? Does it involve programming?&#8221; Yes, it involves &#8220;programming&#8221;, if you consider replacing a bunch of strings to their localized equivalent as &#8220;programming&#8221;.</p>
<p>As Mike Rowe will put it&#8230;</p>
<div style="text-align: center;"><span style="font-weight: bold;"><span style="font-size: large;">Localization&#8230; It&#8217;s a dirty job!</span></span><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNJYwoKCDIAAFfWh0I1/MikeRowe.jpg?et=yOudM0HO%2CxniW3Wa5aMaOg&amp;nmid=0" border="0" alt="" width="175" height="175" /></span></div>
<p><span style="font-size: small;">Why is it a dirty job, you ask? Consider the <span style="font-weight: bold;">English </span>phrase &#8220;Preview and Spell Check&#8221;. Now let&#8217;s see how it will translate to different languages:</span></p>
<p><span style="font-weight: bold;">French: <span style="text-decoration: underline;">Prévision et contrôle de charme</span></span><br style="font-weight: bold;" /><span style="font-weight: bold;">German: <span style="text-decoration: underline;">Vorbetrachtung und Rechtschreibüberprüfung</span></span><br style="font-weight: bold;" /><span style="font-weight: bold;">Russian: </span><span style="font-size: small;"><span style="font-weight: bold;"><span style="text-decoration: underline;">??????????????? ???????? ? ???????? ????????????</span></span></span></p>
<p><span style="font-size: small;"><span id="more-70"></span><br />
A simple 23 letter English phrase will translate into a very complex 48 letter Russian gibberish. Do you understand now why this is a <span style="font-weight: bold;">dirty job? </span>No? Alright, let me illustrate with a simple dialog box&#8230;</span></p>
<p style="text-align: left;"><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNMngoKCDIAACqFinA1/Locale-English.JPG?et=c07w0dU1WdDkhAJtNdZVYw&amp;nmid=0" border="0" alt="" width="299" height="138" /></span></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a><span style="font-size: small;"><br />
Now let&#8217;s try to localize this particular dialog box into Russian&#8230;<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a></span><br />
<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNNqgoKCDIAAEPkF-M1/Locale-Russian.JPG?et=xVPUnGuDNDyVJ48RP68sXQ&amp;nmid=0" border="0" alt="" width="299" height="138" /></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"></a><br />
<span style="font-size: small;">Because some languages are just so weird, a simple phrase will translate into a <span style="font-weight: bold;">paragraph</span>! And as &#8220;programmers&#8221;, its our job to <span style="font-style: italic;">resize</span> the offending component (See last button on the left) so that the translated phrase will fit. In this particular dialog, to be able to <span style="font-style: italic;">resize</span> the offending button, you need to:</span></p>
<ol>
<li><span style="font-size: small;">Resize the Form</span></li>
<li><span style="font-size: small;">Move the Textbox, the command button (button5) on the right , and the group box (groupbox2) on the right<br />
</span></li>
<li><span style="font-size: small;">Resize the groupbox (groupbox1) on the left</span></li>
<li><span style="font-size: small;">Finally, resize the offending button</span></li>
</ol>
<p style="text-align: left;"><span style="font-size: small;">You might say &#8220;Well, that&#8217;s easy! It won&#8217;t even take me 3 minutes to do that.&#8221;. Hah, I&#8217;m being too easy on you with that example. Consider this dialog then:</span><br />
<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNQiAoKCDIAABN2DNU1"><img class="aligncenter" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNQiAoKCDIAABN2DNU1/wgetgui-screenshot.png?et=wf6QugEL0EINRXcMrNgVQA&amp;nmid=0" border="0" alt="" /></a><span style="font-size: small;">Haha. Still too easy? How bout this?</span></p>
<p><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNR5QoKCDIAAEBEN4Y1"><img class="aligncenter" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNR5QoKCDIAAEBEN4Y1/o-filematrix.png?et=AgZTJMjIo6xBCSh%2CmugM4w&amp;nmid=0" border="0" alt="" /></a><br />
<img src="file:///C:/DOCUME%7E1/Ian/LOCALS%7E1/Temp/moz-screenshot-3.jpg" alt="" /><span style="font-size: small;">And it&#8217;s a bitch when the programmer that designed the original GUI does not understand the concept of GOOD UI DESIGN PRACTICES and decided that overlapping 20 groupboxes and toggling the Visible flag during <span style="font-weight: bold;">runtime</span> is a GOOD IDEA. (Yes, I know. I&#8217;ve done this a couple of times in the past and I apologize for having committed this damnable sin!)</span><br />
<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNUfQoKCDIAAAbpbkk1"><img class="aligncenter" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNUfQoKCDIAAAbpbkk1/Overlapping.JPG?et=D8dGHmfvlOhOFOBO79bRyw&amp;nmid=0" border="0" alt="" /></a><span style="font-size: small;">Now, consider the fact that we have a <span style="font-weight: bold;">very very huge system</span> that contains roughly <span style="font-weight: bold;">300+ </span>dialog boxes and the fact that we need to ship the system in <span style="font-weight: bold;">5 </span>different languages. Don&#8217;t get me wrong, we are using a localization tool to accomplish the task but somethings just have to done MANUALLY. It&#8217;s indeed a dirty job!</span></p>
<p>This hell right here is just <span style="font-weight: bold;">ONE</span> part of the Localization Job and it&#8217;s the <span style="font-weight: bold;">EASIEST PART!</span> Since some part of our codebase is so freakin old, when you change a small part of the code, all hell breaks loose. The system will break in 15 different places at the same time! And you know what&#8217;s great? The system is already localized that you won&#8217;t understand what the error message is saying! And with a codebase consisting of <span style="font-weight: bold;">MILLION LINES </span>of code (some from the 80&#8217;s), you&#8217;ll understand why localization is a dirty job.</p>
<p>Here&#8217;s the upside (YES! There is an upside), Localizing a piece of software into different languages automatically converts to sales. Its good money. And at times like this, contributing to the company&#8217;s bottom line is what separates you from being laid-off to keeping your job, even though its a dirty one. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>In the future, I have 2 projects lined up that involves *real* coding. But for now, I&#8217;ll have to make do.</p>
<p><span style="font-size: large;"><span style="font-style: italic;">&#8220;It&#8217;s a dirty job but someone&#8217;s gotta do it!&#8221;</span></span></p>
<p><span style="font-size: x-small;">*</span><span style="font-size: x-small;">PS: I used the term &#8220;Dialog Boxes&#8221; for the non-technical readers to understand. For the geeky guys, just translate. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span><span style="font-style: italic;"><br />
</span></p>
<p><!-- Site Meter --><!-- Copyright (c)2006 Site Meter --></p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;bodytext=When%20I%20was%20in%20College%2C%20I%20was%20amazed%20that%20the%20suits%20%28%22Business%20People%22%29%20are%20so%20willing%20to%20pay%20me%20good%20money%20just%20to%20spew%20out%20pieces%20of%20code%20that%20would%20eventually%20end%20up%20in%20a%20crappy%20system%20somewhere.%20Well%2C%20that%20was%20the%20time%20when%20I%20thought%20that%20working%20" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;notes=When%20I%20was%20in%20College%2C%20I%20was%20amazed%20that%20the%20suits%20%28%22Business%20People%22%29%20are%20so%20willing%20to%20pay%20me%20good%20money%20just%20to%20spew%20out%20pieces%20of%20code%20that%20would%20eventually%20end%20up%20in%20a%20crappy%20system%20somewhere.%20Well%2C%20that%20was%20the%20time%20when%20I%20thought%20that%20working%20" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Localization%3A%20A%20Programmer%27s%20Dirty%20Job%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;t=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;t=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;annotation=When%20I%20was%20in%20College%2C%20I%20was%20amazed%20that%20the%20suits%20%28%22Business%20People%22%29%20are%20so%20willing%20to%20pay%20me%20good%20money%20just%20to%20spew%20out%20pieces%20of%20code%20that%20would%20eventually%20end%20up%20in%20a%20crappy%20system%20somewhere.%20Well%2C%20that%20was%20the%20time%20when%20I%20thought%20that%20working%20" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/04/12/localization-a-programmers-dirty-job/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What makes a great programmer?</title>
		<link>http://blog.ianuy.com/2009/04/12/what-makes-a-great-programmer/</link>
		<comments>http://blog.ianuy.com/2009/04/12/what-makes-a-great-programmer/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 10:07:27 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Passion]]></category>
		<category><![CDATA[Programmers]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=57</guid>
		<description><![CDATA[Lo and Behold, I will now commit geeky heresy by confessing that&#8230;
&#8220;Programming is NOT a talent&#8221;
We, the nerds and the geeks, would like to believe that programming is a talent. That programming is&#8230; Something special. Something that cannot be learned fully. Something inherent &#8212; a gift from the gods. We would like to believe that [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: large;">Lo and Behold, I will now commit geeky heresy by confessing that&#8230;</span></p>
<div style="text-align: center;"><span style="font-size: large;">&#8220;Programming is <span style="font-weight: bold;">NOT </span>a talent&#8221;</span></div>
<div id="attachment_58" class="wp-caption aligncenter" style="width: 246px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/04/beginning-programming-for-dummies.jpg"><img class="size-full wp-image-58" title="beginning-programming-for-dummies" src="http://blog.ianuy.com/wp-content/uploads/2009/04/beginning-programming-for-dummies.jpg" alt="Dummines can learn programming too." width="236" height="295" /></a><p class="wp-caption-text">Dummies can learn programming, too.</p></div>
<p><span style="font-size: large;"><span style="font-size: small;">We, the nerds and the geeks, would like to believe that programming is a talent. That programming is&#8230; Something special. Something that cannot be learned fully. Something inherent &#8212; a gift from the gods. We would like to believe that programmers are born &#8211; not made.</span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span id="more-57"></span>These beliefs stems from the premise that programming is an ART. Like singing or painting.</span></span></p>
<p>Let me be the one to tell you that programming is NOT a talent. However, let me stress the fact that programming is an ART and as all matters concerning art, passion separates the good from the great.</p>
<p>Programming can be learned. Programming Languages can be learned. Algorithms can be learned. Software Engineering techniques can be learned. Everything concerning programming can be learned. So what separates great programmers from <span style="font-size: large;"><span style="font-size: small;">good or mediocre </span></span><span style="font-size: large;"><span style="font-size: small;"> programmers? No, not talent. <span style="font-weight: bold;">Passion</span>.</span></span></p>
<p>Programming (or Software Development to be precise) is just building <span style="font-style: italic;">stuffs<span style="font-weight: bold;"> </span></span>for people to use&#8230; It&#8217;s a modern form of craftsmanship. Even in the old times,<span style="font-weight: bold;"> </span>craftsmanship is the vehicle for passion. <span style="font-weight: bold;">Passionate</span> people create great works, their <span style="font-style: italic;">magnum opus</span>. Passion is what separates a $5 painting to a $10,000,000 dollar one. Passion is reflected in the end product&#8230; It&#8217;s as if the heart of the creator is passed on into the product.</p>
<p>I still believe that programmers are not born &#8211; they can be made. But hear this, <span style="font-weight: bold;">Great</span> Programmers are born. Not because great programmers are born with great intellect. Not because great programmers are born with superb logical and rational thinking skills. Not because great programmers are just geniuses&#8230;</p>
<p><span style="font-size: large;">But because <span style="font-weight: bold;">GREAT</span> programmers are born with <span style="font-weight: bold;">passion</span>. The passion to create great programs.</span></p>
<p><span style="font-style: italic;"><span style="font-size: small;">&#8230;</span></span><span style="font-size: small;"> <span style="font-style: italic;">and passion can never, ever be learned.</span></span></p>
<p><!-- Site Meter --><!-- Copyright (c)2006 Site Meter --></p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=What%20makes%20a%20great%20programmer%3F&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F&amp;title=What%20makes%20a%20great%20programmer%3F&amp;bodytext=Lo%20and%20Behold%2C%20I%20will%20now%20commit%20geeky%20heresy%20by%20confessing%20that...%0D%0A%22Programming%20is%20NOT%20a%20talent%22%0D%0A%0D%0A%0D%0AWe%2C%20the%20nerds%20and%20the%20geeks%2C%20would%20like%20to%20believe%20that%20programming%20is%20a%20talent.%20That%20programming%20is...%20Something%20special.%20Something%20that%20cannot%20b" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F&amp;title=What%20makes%20a%20great%20programmer%3F" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F&amp;title=What%20makes%20a%20great%20programmer%3F&amp;notes=Lo%20and%20Behold%2C%20I%20will%20now%20commit%20geeky%20heresy%20by%20confessing%20that...%0D%0A%22Programming%20is%20NOT%20a%20talent%22%0D%0A%0D%0A%0D%0AWe%2C%20the%20nerds%20and%20the%20geeks%2C%20would%20like%20to%20believe%20that%20programming%20is%20a%20talent.%20That%20programming%20is...%20Something%20special.%20Something%20that%20cannot%20b" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=What%20makes%20a%20great%20programmer%3F%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=What%20makes%20a%20great%20programmer%3F&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F&amp;t=What%20makes%20a%20great%20programmer%3F" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F&amp;t=What%20makes%20a%20great%20programmer%3F" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F&amp;title=What%20makes%20a%20great%20programmer%3F&amp;annotation=Lo%20and%20Behold%2C%20I%20will%20now%20commit%20geeky%20heresy%20by%20confessing%20that...%0D%0A%22Programming%20is%20NOT%20a%20talent%22%0D%0A%0D%0A%0D%0AWe%2C%20the%20nerds%20and%20the%20geeks%2C%20would%20like%20to%20believe%20that%20programming%20is%20a%20talent.%20That%20programming%20is...%20Something%20special.%20Something%20that%20cannot%20b" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Fwhat-makes-a-great-programmer%2F&amp;title=What%20makes%20a%20great%20programmer%3F" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/04/12/what-makes-a-great-programmer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1 Software Developer == 2 Jeepney Drivers</title>
		<link>http://blog.ianuy.com/2009/04/12/1-software-developer-2-jeepney-drivers/</link>
		<comments>http://blog.ianuy.com/2009/04/12/1-software-developer-2-jeepney-drivers/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 09:53:53 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Salary]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=50</guid>
		<description><![CDATA[I was wrong.
For a very very long time, I&#8217;ve always thought that the reason why Software Developers leave our country and work abroad is because of pure greed.
The realization came on the day of my job offer. Don&#8217;t get me wrong, their offer was good enough. In fact, it made me think of those developers [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_51" class="wp-caption aligncenter" style="width: 249px"><a href="http://www.tungateinparis.com/tungateinparis/pages/photography.html"><img class="size-full wp-image-51" title="jeepney-drivers" src="http://blog.ianuy.com/wp-content/uploads/2009/04/jeepney-drivers.jpg" alt="Jeepney Drivers in the Philippines" width="239" height="360" /></a><p class="wp-caption-text">Jeepney Drivers in the Philippines</p></div>
<p><span style="font-weight: bold;"><span style="font-size: large;">I was wrong.</span></span></p>
<p><span style="font-size: small;">For a very very long time, I&#8217;ve always thought that the reason why Software Developers leave our country and work abroad is because of pure greed.</span></p>
<p>The realization came on the day of my job offer. Don&#8217;t get me wrong, their offer was good enough. In fact, it made me think of those developers who are receiving &#8220;average&#8221; or &#8220;below average&#8221; salary.</p>
<p>A lot of realization came to me that day&#8230; I realized why the people of this country is so angry with the government and corrupt government officials (READ: Taxes). I also realized that even if I graduated Cum Laude in a prestigious school and even if I am working for a Global 500 company earning above average salary, I will not be able to live on my own comfortably.</p>
<p>On that very moment, I am living in reality&#8230; the real world &#8212; Not in the fantasy world presented on those success stories in Time Magazine about how a geek changed the world and earned a few billion dollars in the process.</p>
<p><span id="more-50"></span><br />
So let&#8217;s talk about reality&#8230;</p>
<p>In the Philippines, an average <span style="font-weight: bold;">entry level </span>software developer earns about 15,000 &#8211; 25,000 PHP a month (Gross). For the sake of our example, let&#8217;s say that Peter (an entry level software developer) earns about 20,000 PHP per month. If you factor-in all the deductables (30% tax, SSS, etc), Peter will have a take home pay of 15,308.34 PHP (<a href="http://www.wraithstrider.com/witholding_Site/pages/salary_index.html">Click here for the calculator</a>).</p>
<p>On the other end of the spectrum, Pedro, a very humble Jeepney Driver touring the Guadalupe route in Makati who never need to pay his taxes earns about a reasonable 500 pesos per day. Since Pedro here is very hardworking, he works 7 days a week. So Pedro earns about 15,000 php per month!</p>
<p>So that leads us to my conclusion that a Software Developer who finished a college degree and working on a multinational company is equivalent to 2 Jeepney Drivers who just have a high school diploma and is working without a boss and without the need to kiss the boss&#8217; ass on a daily basis!<br />
<br style="font-weight: bold;" /></p>
<div style="text-align: center;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-weight: bold;">1 Peter == 2 Pedro</span></span></span></div>
<p><span style="font-size: large;"><br />
<span style="font-size: small;">With those things in mind, I think that in the near future, I will be included in the roster of Gen Y OFWs. Things really didn&#8217;t change that much since Rizal&#8217;s time, we are still under foreign rul</span></span><span style="font-size: small;">e</span><span style="font-size: small;">&#8230; but that&#8217;s another blog post.</span><br />
<span style="font-size: small;"><a title="Comparative salaries of IT employees in the Philippines" href="http://www.pinoymoneytalk.com/2008/06/26/philippine-it-salary-report/" target="_blank">Here&#8217;s the recent Salary Report</a> for IT Professionals here in the Philippines. Enjoy!<br />
</span></p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F&amp;title=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers&amp;bodytext=%0A%0D%0AI%20was%20wrong.%0D%0A%0D%0AFor%20a%20very%20very%20long%20time%2C%20I%27ve%20always%20thought%20that%20the%20reason%20why%20Software%20Developers%20leave%20our%20country%20and%20work%20abroad%20is%20because%20of%20pure%20greed.%0D%0A%0D%0AThe%20realization%20came%20on%20the%20day%20of%20my%20job%20offer.%20Don%27t%20get%20me%20wrong%2C%20their%20offer%20" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F&amp;title=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F&amp;title=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers&amp;notes=%0A%0D%0AI%20was%20wrong.%0D%0A%0D%0AFor%20a%20very%20very%20long%20time%2C%20I%27ve%20always%20thought%20that%20the%20reason%20why%20Software%20Developers%20leave%20our%20country%20and%20work%20abroad%20is%20because%20of%20pure%20greed.%0D%0A%0D%0AThe%20realization%20came%20on%20the%20day%20of%20my%20job%20offer.%20Don%27t%20get%20me%20wrong%2C%20their%20offer%20" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F&amp;t=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F&amp;t=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F&amp;title=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers&amp;annotation=%0A%0D%0AI%20was%20wrong.%0D%0A%0D%0AFor%20a%20very%20very%20long%20time%2C%20I%27ve%20always%20thought%20that%20the%20reason%20why%20Software%20Developers%20leave%20our%20country%20and%20work%20abroad%20is%20because%20of%20pure%20greed.%0D%0A%0D%0AThe%20realization%20came%20on%20the%20day%20of%20my%20job%20offer.%20Don%27t%20get%20me%20wrong%2C%20their%20offer%20" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2F1-software-developer-2-jeepney-drivers%2F&amp;title=1%20Software%20Developer%20%3D%3D%202%20Jeepney%20Drivers" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/04/12/1-software-developer-2-jeepney-drivers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
