<?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>My Blog &#187; Feature Articles</title>
	<atom:link href="http://bitlords.com/wp/category/feature-articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://bitlords.com/wp</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 12 Dec 2009 07:04:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A Bit Off Kilter</title>
		<link>http://thedailywtf.com/Articles/A-Bit-Off-Kilter.aspx</link>
		<comments>http://thedailywtf.com/Articles/A-Bit-Off-Kilter.aspx#comments</comments>
		<pubDate>Tue, 08 Dec 2009 14:00:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[acclimation]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[anyone]]></category>
		<category><![CDATA[aspect]]></category>
		<category><![CDATA[Balance]]></category>
		<category><![CDATA[bed]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[Board]]></category>
		<category><![CDATA[boss]]></category>
		<category><![CDATA[buddy]]></category>
		<category><![CDATA[buffer]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[building]]></category>
		<category><![CDATA[c amp]]></category>
		<category><![CDATA[CEO]]></category>
		<category><![CDATA[check]]></category>
		<category><![CDATA[chit]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[codebase]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[didn]]></category>
		<category><![CDATA[dinner]]></category>
		<category><![CDATA[Dunno]]></category>
		<category><![CDATA[evening]]></category>
		<category><![CDATA[everything]]></category>
		<category><![CDATA[family]]></category>
		<category><![CDATA[forty]]></category>
		<category><![CDATA[frame]]></category>
		<category><![CDATA[frame of reference]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[gesture]]></category>
		<category><![CDATA[good relationship]]></category>
		<category><![CDATA[Got]]></category>
		<category><![CDATA[guy]]></category>
		<category><![CDATA[half]]></category>
		<category><![CDATA[Hey]]></category>
		<category><![CDATA[hi john]]></category>
		<category><![CDATA[Home]]></category>
		<category><![CDATA[hour]]></category>
		<category><![CDATA[hour and a half]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[inbox]]></category>
		<category><![CDATA[Instant]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[issue]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[John]]></category>
		<category><![CDATA[kilter]]></category>
		<category><![CDATA[kind]]></category>
		<category><![CDATA[ldquo]]></category>
		<category><![CDATA[leg]]></category>
		<category><![CDATA[lot]]></category>
		<category><![CDATA[lsquo]]></category>
		<category><![CDATA[mdash]]></category>
		<category><![CDATA[messag]]></category>
		<category><![CDATA[message]]></category>
		<category><![CDATA[message from john]]></category>
		<category><![CDATA[Messanger]]></category>
		<category><![CDATA[moment]]></category>
		<category><![CDATA[morning]]></category>
		<category><![CDATA[msg]]></category>
		<category><![CDATA[nay]]></category>
		<category><![CDATA[ndash]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[network administration]]></category>
		<category><![CDATA[new boss]]></category>
		<category><![CDATA[Nice]]></category>
		<category><![CDATA[nice guy]]></category>
		<category><![CDATA[night]]></category>
		<category><![CDATA[nothing]]></category>
		<category><![CDATA[order]]></category>
		<category><![CDATA[paperwork]]></category>
		<category><![CDATA[Pay]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[position]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[quirks]]></category>
		<category><![CDATA[quizzed]]></category>
		<category><![CDATA[rdquo]]></category>
		<category><![CDATA[red flags]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[relationship]]></category>
		<category><![CDATA[response]]></category>
		<category><![CDATA[retrospect]]></category>
		<category><![CDATA[rsquo]]></category>
		<category><![CDATA[sense]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[side]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[something]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[srv]]></category>
		<category><![CDATA[Start]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[text message]]></category>
		<category><![CDATA[thinking]]></category>
		<category><![CDATA[throat clearing]]></category>
		<category><![CDATA[thru]]></category>
		<category><![CDATA[thx]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[time victor]]></category>
		<category><![CDATA[tiny bit]]></category>
		<category><![CDATA[today]]></category>
		<category><![CDATA[tone]]></category>
		<category><![CDATA[ure]]></category>
		<category><![CDATA[use]]></category>
		<category><![CDATA[Vic]]></category>
		<category><![CDATA[Victor]]></category>
		<category><![CDATA[way]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web developer]]></category>
		<category><![CDATA[weren]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[workstation]]></category>

		<guid isPermaLink="false">6735</guid>
		<description><![CDATA[<p>There was something that seemed a bit off kilter about <strong>Victor C</strong>&#8217;s new boss. He was a nice guy and all, but his social skills seemed to be somewhat lacking. There weren&#8217;t any glaring red flags, but Victor noticed a few things in the interview &#8211; nervous leg bouncing, awkward small talk, and a way-too-frequent throat-clearing &#8211; that weren&#8217;t exactly typical. Then again, it was Victor&#8217;s first real job, so he hardly had a frame of reference. Maybe all programmer-turned-CEO&#8217;s had a few quirks like that?</p>
<p>Although the company was relatively small (about twenty people in total), the pay was very reasonable and it was <em>exactly</em> the position that Victor was looking for a web developer with a tiny bit of network administration on the side. His first day was pretty normal as far as first days go &#8212; paperwork, acclimation, source code setup, etc &#8212; and he even got a friendly text message from John on his way home from work.</p>
<blockquote>
<pre>
Hey Vic, glad to have u on 
board! How is everything 
coming along?</pre>
</blockquote>
<p>Victor felt it was a nice gesture and responded in kind.</p>
<blockquote>
<pre>
Hi John, thx for asking. So 
far, so good! Got good start 
on things in 1 day. Have a 
great night, c u in the AM!</pre>
</blockquote>
<p>Thinking nothing more of it, Victor was surpised to see another message from his boss.</p>
<blockquote>
<pre>
Good to see. So what did u
get done today?</pre>
</blockquote>
<p><em>Nothing wrong with some chit-chatting,</em> Victor thought to himself, <em>it's good relationship building!</em> He responded back.</p>
<blockquote>
<pre>
Aside from paperwork, got 
the codebase downloaded and
running; also started to
look at the buffer issue.</pre>
</blockquote>
<p>And then another text came from John.</p>
<blockquote>
<pre>
Nice. U take any breaks thru
the day?</pre>
</blockquote>
<p>Before Victor could even formulate a response, another message zipped in.</p>
<blockquote>
<pre>
I mean, good to take breaks
and all. Do u find you made
good use of your time?</pre>
</blockquote>
<p>Victor was a bit taken aback by the messages and carefully crafted a response.</p>
<blockquote>
<pre>
Agreed. I think I struck a 
good balance today.</pre>
</blockquote>
<p>Over the next hour and a half, the messaging continued. John quizzed Victor on almost every aspect of his day, from what he thought of the current codebase to whether he had thought of a solution for the buffer bug. And then he requested that Victor install an Instant Messanger client on the admin&#8217;s workstation. There was a good forty back-and-forth messages that evening, ending with Victor&#8217;s at around 8:00PM.</p>
<blockquote>
<pre>
Well, I'm off to dinner with
the family. We'll catch up 
in the morning. G night!</pre>
</blockquote>
<p>As Victor was leaving for work the next morning, he looked at his phone for the first time since dinner the previous night and found twelve new messages in his inbox. They were all from John, and started with a simple question.</p>
<blockquote>
<pre>
Hey, so do you think we can
set up a new virtual server
for testing 64 bit?</pre>
</blockquote>
<p>The next few messages were a simple follow-ups.</p>
<blockquote>
<pre>
Get msg about 64 bit srv?

Dunno, could be worth doing?

Hey, u there?</pre>
</blockquote>
<p>The next few messages got progressively more unbalanced.</p>
<blockquote>
<pre>
anyone there?

how come ure not replying?

what are you dooooing?

finish dinner yet???</pre>
</blockquote>
<p>They crescendoed to the final message of the night.</p>
<blockquote>
<pre>
Have you run away?</pre>
</blockquote>
<p>Victor was hoping &#8212; nay, praying &#8212; that John had a truly strange sense of humor. His hopes were quickly quashed the moment his phone rang. It was John.</p>
<p>&#8220;Vic, buddy,&#8221; John said in a relieved tone, &#8220;where have ya been? I was up all night fretting! You can&#8217;t just disappear like that!&#8221;</p>
<p>In retrospect, Victor should have responded with a restraining order. But alas, it was his first job and he didn&#8217;t want to lose it on his second day. He tried explaining to John that he had gone out to dinner, shut his phone off, and then came home and went to bed.</p>
<p>&#8220;Of course,&#8221; John said in an agreeable tone. &#8220;We really value communication here, and you&#8217;ll need to restructure some of your home time to accommodate the needs of the company.&#8221;</p>
<p>Again in retrospect, there were a lot of things that Victor <em>should</em> have said, but he said he&#8217;d try his best. Victor added, &#8220;in the future, just &#8216;check out&#8217; with me before going to bed for the night, and to &#8216;check in&#8217; when I got up in the morning. I mean, I&#8217;d hate to wake you up!&#8221;</p>
<p>Fortunately, the night-time messaging mostly died down after that, though it was replaced with <em>even more</em> bizarre behavior. During the day, John would &#8220;make his rounds&#8221; a few times each hour, which consisted of him going to each and everyone&#8217;s desk to get a status update. It was never in a harsh, why-aren&#8217;t-you-done-yet manner; it was more need-to-know-every-detail-about-everything and keep-up-the-great-work.</p>
<p>Leaving &#8212; whether for lunch or at the end of the day &#8212; almost always prompted the same response for John: &#8220;now don&#8217;t forget to come back!&#8221; To the casual observer, such a statement could easily be mistaken for a mild joke, but Victor was convinced that he was sincere. On several occasions, John asked Victor if he was &#8220;planning to run away.&#8221;</p>
<p>It may have taken a couple months, but Victor eventually did run away. Far, far away. And he never looked back.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/Bxh-WxeJKMeYDcLTiNJEAyB3QE8/0/da"><img src="http://feedads.g.doubleclick.net/~a/Bxh-WxeJKMeYDcLTiNJEAyB3QE8/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/Bxh-WxeJKMeYDcLTiNJEAyB3QE8/1/da"><img src="http://feedads.g.doubleclick.net/~a/Bxh-WxeJKMeYDcLTiNJEAyB3QE8/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=7HLTrj8RpM0:sYo2Cn8X-5g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/7HLTrj8RpM0" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/A-Bit-Off-Kilter.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sponsor Appreciation, Paper eBook, Confused Occupancy, &amp; More</title>
		<link>http://thedailywtf.com/Articles/Sponsor-Appreciation,-Paper-eBook,-Confused-Occupancy,--More.aspx</link>
		<comments>http://thedailywtf.com/Articles/Sponsor-Appreciation,-Paper-eBook,-Confused-Occupancy,--More.aspx#comments</comments>
		<pubDate>Fri, 04 Dec 2009 14:00:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[ActiveX]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[amp nbsp]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[Arizona]]></category>
		<category><![CDATA[Ashmore]]></category>
		<category><![CDATA[Atlassian]]></category>
		<category><![CDATA[backbone]]></category>
		<category><![CDATA[bookstore]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[cable]]></category>
		<category><![CDATA[Carlos Santander]]></category>
		<category><![CDATA[carrier]]></category>
		<category><![CDATA[checkout]]></category>
		<category><![CDATA[Chris]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Co-location]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[code coverage]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[contention]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[cool products]]></category>
		<category><![CDATA[cost]]></category>
		<category><![CDATA[coverage]]></category>
		<category><![CDATA[Daily]]></category>
		<category><![CDATA[Dallas]]></category>
		<category><![CDATA[David Daniel]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[deadlock]]></category>
		<category><![CDATA[deadlock detection]]></category>
		<category><![CDATA[Dedicated]]></category>
		<category><![CDATA[detection]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[eBook]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[FedEx]]></category>
		<category><![CDATA[flow]]></category>
		<category><![CDATA[freelance]]></category>
		<category><![CDATA[freelance web developers]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[graffiti]]></category>
		<category><![CDATA[great software]]></category>
		<category><![CDATA[great source]]></category>
		<category><![CDATA[Hans Holmberg]]></category>
		<category><![CDATA[Home]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[hotel]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[kind]]></category>
		<category><![CDATA[leak]]></category>
		<category><![CDATA[Leo]]></category>
		<category><![CDATA[Lock]]></category>
		<category><![CDATA[mailboxes]]></category>
		<category><![CDATA[Manual]]></category>
		<category><![CDATA[Marco]]></category>
		<category><![CDATA[Martin Haimberger]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[memory leak detection]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MindFusion]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[New York City]]></category>
		<category><![CDATA[Norbert]]></category>
		<category><![CDATA[North America]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[Paul Webb]]></category>
		<category><![CDATA[Peer]]></category>
		<category><![CDATA[peer 1]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[Provider]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[recipe]]></category>
		<category><![CDATA[replay]]></category>
		<category><![CDATA[rsquo]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ryan Blace]]></category>
		<category><![CDATA[Sam]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server performance]]></category>
		<category><![CDATA[server server]]></category>
		<category><![CDATA[show]]></category>
		<category><![CDATA[single]]></category>
		<category><![CDATA[SlickEdit]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software engineering tools]]></category>
		<category><![CDATA[software verification]]></category>
		<category><![CDATA[something]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[state]]></category>
		<category><![CDATA[story]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[SuperNetwork]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[thread]]></category>
		<category><![CDATA[Trade]]></category>
		<category><![CDATA[turn]]></category>
		<category><![CDATA[University]]></category>
		<category><![CDATA[upfront]]></category>
		<category><![CDATA[variety]]></category>
		<category><![CDATA[Verification]]></category>
		<category><![CDATA[verification software]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[wall]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web shops]]></category>
		<category><![CDATA[WebsiteSpark]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Wouter Verhelst]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[Yorker]]></category>
		<category><![CDATA[Yu]]></category>

		<guid isPermaLink="false">6733</guid>
		<description><![CDATA[<p>Please show your support for The Daily WTF by checking out the companies that have been kind enough to sponsor us. And, in doing so, I&#8217;m sure you&#8217;ll find some pretty cool products and services built by like-minded developers and IT professionals.</p>
<p>&#160;</p>
<blockquote>
<table>
    <tbody>
        <tr>
            <td colspan="3">
            <h3 style="padding-bottom: 2px;background-color: #ab332b;margin: 0px;padding-left: 2px;padding-right: 2px;color: #fff;padding-top: 2px">The Daily WTF Sponsors</h3>
            </td>
        </tr>
        
        <tr>
            <td><a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=525&#38;AdvertiserID=48&#38;CampaignID=186&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=739876"><img border="0" alt="Microsoft WebsiteSpark" src="http://img.thedailywtf.com/images/200911/websitespark.png" /></a></td>
            <td>&#160;<img border="0" width="1" height="1" alt="" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=525&#38;AdvertiserID=48&#38;CampaignID=186&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=739876" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=525&#38;AdvertiserID=48&#38;CampaignID=186&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=739876">Microsoft WebsiteSpark</a></strong> - a great program for web shops and freelance web developers and designers where you get some great software (Visual Studio Pro, SQL Server, Server 2008, etc), at no upfront cost for three years; it also provides support and resources to help grow business</td>
        </tr>
        <tr>
            <td><a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=524&#38;AdvertiserID=27&#38;CampaignID=185&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=941520"><img border="0" alt="Rackspace Cloud" src="http://img.thedailywtf.com/images/200911/rackspacecloud.png" /></a></td>
            <td>&#160;<img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=524&#38;AdvertiserID=27&#38;CampaignID=185&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=941520" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=524&#38;AdvertiserID=27&#38;CampaignID=185&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=941520">Rackspace Cloud</a></strong> - massively scalable hosting for .NET (2,3,3.5) PHP, Ruby, etc., with unlimited sites &#38; mailboxes, simple online provisioning, and an enterprise clustered platform that's supported by real people.</td>
        </tr>
        <tr>
            <td><a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=314&#38;AdvertiserID=43&#38;CampaignID=183&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=362559"><img border="0" alt="Peer 1" src="http://img.thedailywtf.com/images/200904/peer1.png" /></a></td>
            <td>&#160;<img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=314&#38;AdvertiserID=43&#38;CampaignID=183&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=362559" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=314&#38;AdvertiserID=43&#38;CampaignID=183&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=362559">Peer 1</a></strong> - provides award-winning Managed Hosting, Dedicated Hosting, Co-location, and Network services offered through 15 data center across North America. With over 10,000 businesses hosted on their legendary SuperNetwork&#8482;backbone, PEER 1 delivers one of the highest server performance and network outputs in the industry.</td>
        </tr>
        <tr>
            <td><a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=151&#38;AdvertiserID=26&#38;CampaignID=184&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=453314"><img border="0" alt="Mindfusion" src="http://img.thedailywtf.com/images/200810/Mindfusion.png" /></a></td>
            <td>&#160;<img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=151&#38;AdvertiserID=26&#38;CampaignID=184&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=453314" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=151&#38;AdvertiserID=26&#38;CampaignID=184&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=453314">MindFusion</a></strong> - a great source for flow-charting and diagramming components for a variety of platforms including .NET, WPF, ActiveX and Swing</td>
        </tr>
        <tr>
            <td><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=265&#38;AdvertiserID=35&#38;CampaignID=103&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=510096"><img border="0" alt="Software Verification" src="http://img.thedailywtf.com/images/200811/softwareVerification.png" /></a></td>
            <td>&#160;<img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=265&#38;AdvertiserID=35&#38;CampaignID=103&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=510096" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=265&#38;AdvertiserID=35&#38;CampaignID=103&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=510096">Software Verification</a></strong> - software engineering tools for memory leak detection, code coverage, performance profiling, thread lock contention analysis and thread deadlock detection, flow tracing and application replay on the Windows Vista, 2003, XP, 2000 and NT platforms.</td>
        </tr>
        <tr>
            <td><a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=434&#38;AdvertiserID=60&#38;CampaignID=154&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=757830"><img border="0" alt="Atlassian" src="http://img.thedailywtf.com/images/200907/Atlassian.png" /></a></td>
            <td>&#160;<img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=434&#38;AdvertiserID=60&#38;CampaignID=154&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=757830" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=434&#38;AdvertiserID=60&#38;CampaignID=154&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=757830">Atlassian</a></strong> - the folks behind JIRA (which, in turn inspired <a href="http://thedailywtf.com/Articles/Manual-JIRA-.aspx">Manual JIRA</a>) wanted to let you know that they're not a &#34;follow the rules&#34; software company who realizes that there is no single recipe for practicing agile development. They were once hungry for practical tips, so they thought they should share their agile story.</td>
        </tr>
        <tr>
            <td><a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=91&#38;AdvertiserID=13&#38;CampaignID=37&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=623197"><img border="0" alt="SoftLayer" src="http://img.thedailywtf.com/images/200808/softlayer.png" /></a></td>
            <td>&#160;<img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=91&#38;AdvertiserID=13&#38;CampaignID=37&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=623197" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=91&#38;AdvertiserID=13&#38;CampaignID=37&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=623197">SoftLayer</a></strong> - serious hosting provider with datacenters in three cities (Dallas, Seattle, DC) that has plans designed to scale from a single, dedicated server to your own virtual data center (complete with racks and all)</td>
        </tr>
        <tr>
            <td><a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=148&#38;AdvertiserID=5&#38;CampaignID=60&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=50765"><img border="0" alt="SlickEdit" src="http://img.thedailywtf.com/images/200807/slickedit.png" /></a></td>
            <td>&#160;<img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=148&#38;AdvertiserID=5&#38;CampaignID=60&#38;Task=Get&#38;Mode=TEXT&#38;SiteID=1&#38;RandomNumber=50765" /></td>
            <td><strong><a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&#38;BannerID=148&#38;AdvertiserID=5&#38;CampaignID=60&#38;Task=Click&#38;SiteID=1&#38;RandomNumber=50765">SlickEdit</a></strong> - makers of that very-impressive code editor and some pretty neat Eclipse and VisualStudio.NET tools and add-ins,&#160;some of which (Gadgets) are free. Check out this <a href="http://visualstudiohacks.com/screencasts/addins/slickedit-versioning-toolbox-screencast/">short video</a> highlighting just one of SlickEdit's Visual Studio integration features.</td>
        </tr>
        &#60;!--


	<tr>
            <td><a href="BMP_LINK"><img alt="SPN_NAME" border="0" src="http://img.thedailywtf.com/images/200811/SPN_NAME.png" /></a></td>
            <td>&#160;<img src="BMP_IMGLINK" width="1" height="1" border="0"></td>
            <td><strong><a target="_Blank" href="BMP_LINK">SPN_NAME</a></strong> - TODO</td>
        </tr>
--&#62;
    </tbody>
</table>
</blockquote>
<p>And now, back to our regularly, completely off-topic scheduled program.</p>
<p>&#160;</p>
<p><a name="Pic5"></a>&#34;There is something so fundamentally wrong with this,&#34; <b>David Daniel</b> notes, &#34;I bought an 'eBook' from the Arizona State University bookstore. At checkout, I wondered why they wanted me to choose a 'shipping address' and a 'carrier'... and now I know. They FedEx'ed me the eBook.&#34;</p>
<blockquote>
<p><a href="#Pic5"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/ebook.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="PPic5"></a><b>Carlos Santander</b> spotted this at one of the rooms in the New Yorker Hotel in New York City.</p>
<blockquote>
<p><a href="#PPic5"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/IMG_0325.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="Pic1"></a><b>Sam Ashmore</b> writes, &#34;I came home one day after they 'upgraded' the cable, and I found this.&#34;</p>
<blockquote>
<p><a href="#Pic1"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/005.JPG" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="Pic2"></a>&#34;I found this graffiti on a wall,&#34; <b>Marco</b> writes, &#34;I guess some people really couldn't deal with the move to NTFS?&#34;</p>
<blockquote>
<p><a href="#Pic2"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/2294145770_cbefe36bbb_o.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="Pic3"></a>&#34;I found this 'jack battery' at a friend's flat,&#34; writes <b>Martin Haimberger</b>, &#34;the cable which comes out of the wall supplies them all! What a great engineer.&#34;</p>
<blockquote>
<p><a href="#Pic3"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/CIMG8744.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="Pic4"></a>&#34;I don't really know where to put a red frame to mark the spot,&#34; <b>Norbert</b> writes, &#34;maybe around the whole picture?&#34;</p>
<blockquote>
<p><a href="#Pic4"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/DSC_4829_s.jpg" /></a><br />
<a href="http://img.thedailywtf.com/images/200911/spon/DSC_4829.jpg">view entire box</a></p>
</blockquote>
<p>&#160;</p>
<p><a name="PPic1"></a>&#34;We told you our Optional ROM Placement setting was risky,&#34; <b>Hae Yu</b> writes, &#34;but did you believe us? Noooo!&#34;</p>
<blockquote>
<p><a href="#PPic1"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/Feb12_002.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="PPic2"></a><b>Chris</b> writes, &#34;I think they forgot something.&#34;</p>
<blockquote>
<p><a href="#PPic2"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/IMAG0002.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="PPic3"></a>&#34;Waitaminute,&#34; writes <b>Ryan Blace</b>, &#34;so how am I supposed to get in?&#34;</p>
<blockquote>
<p><a href="#PPic3"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/IMG00088.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="PPic4"></a>&#34;It might have been helpful to have an instruction to 'read page 61 first' on the front of the manual,&#34; writes <b>Paul Webb</b></p>
<blockquote>
<p><a href="#PPic4"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/IMG00163.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="PPPic1"></a>&#34;I was a bit confused when I saw the price difference on the two Leo bars,&#34; <b>Wouter Verhelst</b> commented, &#34;needless to say, I went for number 51.&#34;</p>
<blockquote>
<p><a href="#PPPic1"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/leo.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a name="PPic6"></a>&#34;When the soap runs out,&#34; <b>Hans Holmberg</b> wonders, &#34;where are you supposed to download more?&#34;</p>
<blockquote>
<p><a href="#PPic5"><img border="0" alt="" src="http://img.thedailywtf.com/images/200911/spon/soap.jpg" /></a></p>
</blockquote>
<p>&#160;</p>
<p><a href="http://feedads.g.doubleclick.net/~a/8xdgCBrKiI2I2vfbfeqTmXxi_Fo/0/da"><img src="http://feedads.g.doubleclick.net/~a/8xdgCBrKiI2I2vfbfeqTmXxi_Fo/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/8xdgCBrKiI2I2vfbfeqTmXxi_Fo/1/da"><img src="http://feedads.g.doubleclick.net/~a/8xdgCBrKiI2I2vfbfeqTmXxi_Fo/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=j1SU_ACoX8E:ThVxSlwgNL0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/j1SU_ACoX8E" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Sponsor-Appreciation,-Paper-eBook,-Confused-Occupancy,--More.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bad Code Offsets: An Update</title>
		<link>http://thedailywtf.com/Articles/Bad-Code-Offsets-An-Update.aspx</link>
		<comments>http://thedailywtf.com/Articles/Bad-Code-Offsets-An-Update.aspx#comments</comments>
		<pubDate>Thu, 03 Dec 2009 14:00:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[Alliance]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[Announcing]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bad]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[carbon]]></category>
		<category><![CDATA[carbon offsets]]></category>
		<category><![CDATA[cash]]></category>
		<category><![CDATA[certificate]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[checks]]></category>
		<category><![CDATA[chump]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[contribution]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[cost]]></category>
		<category><![CDATA[dedicate]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[difference]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[DON]]></category>
		<category><![CDATA[donations]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Excellence]]></category>
		<category><![CDATA[expense]]></category>
		<category><![CDATA[fact]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Gift]]></category>
		<category><![CDATA[good]]></category>
		<category><![CDATA[good reason]]></category>
		<category><![CDATA[good software]]></category>
		<category><![CDATA[grant]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[Inedo]]></category>
		<category><![CDATA[Jeff]]></category>
		<category><![CDATA[John Resig]]></category>
		<category><![CDATA[Join]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Justice]]></category>
		<category><![CDATA[League]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[material]]></category>
		<category><![CDATA[material costs]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[mdash]]></category>
		<category><![CDATA[Medium]]></category>
		<category><![CDATA[member]]></category>
		<category><![CDATA[membership]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[name]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[official]]></category>
		<category><![CDATA[Offset]]></category>
		<category><![CDATA[Offsets]]></category>
		<category><![CDATA[open source project]]></category>
		<category><![CDATA[open source projects]]></category>
		<category><![CDATA[Patron]]></category>
		<category><![CDATA[Paypal]]></category>
		<category><![CDATA[place]]></category>
		<category><![CDATA[pocket]]></category>
		<category><![CDATA[postage]]></category>
		<category><![CDATA[Postgres]]></category>
		<category><![CDATA[printing]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[Propose]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[reason]]></category>
		<category><![CDATA[result]]></category>
		<category><![CDATA[revenue]]></category>
		<category><![CDATA[rsquo]]></category>
		<category><![CDATA[SELECT]]></category>
		<category><![CDATA[shirt]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[size]]></category>
		<category><![CDATA[Small]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[something]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[spending]]></category>
		<category><![CDATA[state]]></category>
		<category><![CDATA[sum]]></category>
		<category><![CDATA[superhero]]></category>
		<category><![CDATA[T-Shirt]]></category>
		<category><![CDATA[team]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[thing]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[today]]></category>
		<category><![CDATA[tomorrow]]></category>
		<category><![CDATA[TRWTF]]></category>
		<category><![CDATA[unit]]></category>
		<category><![CDATA[venture]]></category>
		<category><![CDATA[volunteer]]></category>
		<category><![CDATA[way]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[world]]></category>
		<category><![CDATA[X-Large]]></category>
		<category><![CDATA[XX-Large]]></category>
		<category><![CDATA[XXX-Large]]></category>

		<guid isPermaLink="false">6732</guid>
		<description><![CDATA[<p>Two weeks ago, I <a href="http://thedailywtf.com/Articles/Introducing-Bad-Code-Offsets.aspx">announced</a> the <a href="http://codeoffsets.com">Bad Code Offsets</a> project. It's a way to undo the bad code <s>you</s> other people have written without actually replacing the bad code. Much like carbon offsets, money used to buy Bad Code Offsets goes towards open-source projects which not only produce <em>good</em> code, but produce software that helps developers build good software.</p>
<p>And when I say the money goes towards these projects, I mean all of it. 100%. We pay for all expenses &#8212; PayPal fees, material costs, postage, etc. &#8212; out of pocket. But speaking of money, I&#8217;m happy to announce that we&#8217;ve raised $3,630.50 and are mailing out checks to the appropriate projects today.</p>
<blockquote>
<p><img alt="" src="http://img.thedailywtf.com/images/200911/12022009068.jpg" /><br />
<em>Why Inedo? We're still in the process of starting an official not-for-profit. TRWTF is how much work that takes to do!</em></p>
</blockquote>
<p>There are currently five <a href="http://codeoffsets.com/Projects.aspx">projects</a> supported, two of which &#8212; Drupal and FreeBSD &#8212; were added as a result of your feedback. The donations break down as follows, with Drupal and FreeBSD getting revenue from those who said &#34;Let the Alliance decide&#34; where their contribution goes.</p>
<blockquote>
<table border="1" cellpadding="0">
    <tbody>
        <tr>
            <td>Apache</td>
            <td>$803.00</td>
        </tr>
        <tr>
            <td>jQuery</td>
            <td>$1,500.50</td>
        </tr>
        <tr>
            <td>Postgres</td>
            <td>$288.50</td>
        </tr>
        <tr>
            <td>Drupal</td>
            <td>$288.50</td>
        </tr>
        <tr>
            <td>FreeBSD</td>
            <td>$500.00</td>
        </tr>
    </tbody>
</table>
</blockquote>
<p>Now if you do the math, you'll notice that the sum of the checks is $250.00 less than the cash received. There's a good reason for that.</p>
<h3 style="margin-bottom: 0px">Announcing The $500 <em>Good</em> Code Grant</h3>
<p style="margin-top: 0px">Obviously, we're not expecting to change the world with $500. We'd just like to start or help something that maybe &#8212; just maybe &#8212; could make the world of code a better place. Here's how the grant works.</p>
<blockquote>
<p><a href="http://codeoffsets.com/Contact.aspx">Tell us</a> how your free and open source project prevents bad code from being created <em>and</em> show us how $500 would make a real difference in your project <br />
&#8212; or &#8212; <br />
<a href="http://codeoffsets.com/Contact.aspx">Propose</a> a new, free and open source project <em>and</em> show us how $500 would help you get it started</p>
</blockquote>
<p>Will it work? I think it could. The folks like <a href="http://ejohn.org/">John Resig</a> who dedicate their nights and weekends to creating projects like <a href="http://jquery.com/">jQuery</a> have it hard enough developing their project code. Then they have to recruit other developers, write unit tests, create documentation, and so on. And <em>then</em> they have to pay real money, out of their own pocket, for things like hosting, logos, and hardware.</p>
<p>Imagine that: all that meta-work and expense just to do work to build something that'll be free?! I think the least we can do is help with the expenses, and that's what we, <a href="http://codeoffsets.com/Members.aspx">The Alliance for Code Excellence</a>, hope grants like this can achieve.</p>
<h3 style="margin-bottom: 0px">Join the Alliance for Code Excellence</h3>
<p style="margin-top: 0px">When we chose the name <em>the Alliance for Code Excellence</em>, it was somewhat tongue-in-cheek, to fit with the satirically pompous copy on the Bad Code Offsets site. Well that, and <a href="http://codinghorror.com/">Jeff</a> already called dibs on the superhero theme with the whole <a href="http://blog.stackoverflow.com/2009/07/why-cant-you-have-just-one-site/">League of (web) Justice</a> thing.</p>
<p>That said, we don't want to come across as <em>actually</em> being pompous. Because we're not. We're simply a group of colleagues who want to improve the state of software development industry, whether it's through Bad Code Offsets, Good Code Grants, or whatever. And we're not even exclusive; in fact, we'd love it for <em>you</em> to join us.</p>
<p>The Alliance for Code Excellence is a not-for-profit venture that's 100% volunteer driven. But we do have some real costs, such as legal fees (a 501(c)3 is not quite DIY), materials costs (printing Bad Code Offset certificates), postage (especially for the overseas orders), and so on. The costs are paid by the Alliance, <em>not</em> through Bad Code Offsets.</p>
<p>So if you like what we do, feel free to become a member. A one-year membership is $50 and, as a welcoming gift, you'll receive a black T-shirt with our logo on it.</p>
<p>
<table border="0" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td><img alt="" src="http://img.thedailywtf.com/images/200911/bc_logo_sm.png" /></td>
            <td>&#160;&#160;</td>
            <td>
            <form method="post" action="https://www.paypal.com/cgi-bin/webscr" target="paypal">
                <h3>Become a Patron Member</h3>
                <p>Cost: $50.00</p>
                  Select T-Shirt Size: 
                Small
                Medium
                Large
                X-Large
                XX-Large
                XXX-Large
                 <br />
                 <img border="0" alt="" width="1" height="1" src="https://www.paypal.com/en_US/i/scr/pixel.gif" />
            </form>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>Don't get me wrong: $50 isn't chump change and, quite honestly, you can buy several cool T-shirts for that. But it's not about the shirt, it's about joining the team and doing what we do: spending hard-earned money and precious time to build a better tomorrow, one line of code at a time.</p>
<hr />
<p><em>If you purchased <a href="http://codeoffsets.com">Bad Code Offsets</a>, you should be receiving your certificate(s) in the mail in the next few weeks. We're a bit behind, but will get them out as soon as possible.</em></p>
<p><a href="http://feedads.g.doubleclick.net/~a/narSzCzO-C-73CxrM_b3ZMX6wH0/0/da"><img src="http://feedads.g.doubleclick.net/~a/narSzCzO-C-73CxrM_b3ZMX6wH0/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/narSzCzO-C-73CxrM_b3ZMX6wH0/1/da"><img src="http://feedads.g.doubleclick.net/~a/narSzCzO-C-73CxrM_b3ZMX6wH0/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=rQQ00pM194U:nn4gtwn7neE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/rQQ00pM194U" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Bad-Code-Offsets-An-Update.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Special Delivery</title>
		<link>http://thedailywtf.com/Articles/Special-Delivery.aspx</link>
		<comments>http://thedailywtf.com/Articles/Special-Delivery.aspx#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:15:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[AdditionalProperties]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[AElig]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[anything]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[April]]></category>
		<category><![CDATA[back]]></category>
		<category><![CDATA[bacon]]></category>
		<category><![CDATA[barge]]></category>
		<category><![CDATA[barges]]></category>
		<category><![CDATA[Billy Ray Valentine]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[Brad]]></category>
		<category><![CDATA[brow]]></category>
		<category><![CDATA[building]]></category>
		<category><![CDATA[buy]]></category>
		<category><![CDATA[ceiling windows]]></category>
		<category><![CDATA[city skyline]]></category>
		<category><![CDATA[clearing]]></category>
		<category><![CDATA[coal]]></category>
		<category><![CDATA[coder]]></category>
		<category><![CDATA[commodity]]></category>
		<category><![CDATA[Concentrated]]></category>
		<category><![CDATA[confirmation]]></category>
		<category><![CDATA[contact]]></category>
		<category><![CDATA[contract]]></category>
		<category><![CDATA[couple]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[crack]]></category>
		<category><![CDATA[Dan Aykroyd]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[deal]]></category>
		<category><![CDATA[delivery]]></category>
		<category><![CDATA[didn]]></category>
		<category><![CDATA[docks]]></category>
		<category><![CDATA[doesn]]></category>
		<category><![CDATA[Duke]]></category>
		<category><![CDATA[Eddie Murphy]]></category>
		<category><![CDATA[end]]></category>
		<category><![CDATA[energy trading]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[exchange]]></category>
		<category><![CDATA[executive suites]]></category>
		<category><![CDATA[False]]></category>
		<category><![CDATA[FCOJ]]></category>
		<category><![CDATA[fella]]></category>
		<category><![CDATA[following]]></category>
		<category><![CDATA[forehead]]></category>
		<category><![CDATA[Frozen]]></category>
		<category><![CDATA[gold]]></category>
		<category><![CDATA[har]]></category>
		<category><![CDATA[hellip]]></category>
		<category><![CDATA[house]]></category>
		<category><![CDATA[hubris]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[individual]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[juice]]></category>
		<category><![CDATA[ldquo]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[manner]]></category>
		<category><![CDATA[May]]></category>
		<category><![CDATA[mdash]]></category>
		<category><![CDATA[moment]]></category>
		<category><![CDATA[mooring]]></category>
		<category><![CDATA[nether]]></category>
		<category><![CDATA[notice]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[Orange]]></category>
		<category><![CDATA[palm]]></category>
		<category><![CDATA[park]]></category>
		<category><![CDATA[pat]]></category>
		<category><![CDATA[Perfect]]></category>
		<category><![CDATA[PhysicallyDeliver]]></category>
		<category><![CDATA[Pier]]></category>
		<category><![CDATA[piles]]></category>
		<category><![CDATA[point]]></category>
		<category><![CDATA[pork]]></category>
		<category><![CDATA[private bay]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[rdquo]]></category>
		<category><![CDATA[receptionist]]></category>
		<category><![CDATA[right]]></category>
		<category><![CDATA[risk]]></category>
		<category><![CDATA[rsquo]]></category>
		<category><![CDATA[series]]></category>
		<category><![CDATA[slip]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[something]]></category>
		<category><![CDATA[soy]]></category>
		<category><![CDATA[staff]]></category>
		<category><![CDATA[Storm]]></category>
		<category><![CDATA[strike]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[Trade]]></category>
		<category><![CDATA[Trading]]></category>
		<category><![CDATA[Twenty-eight]]></category>
		<category><![CDATA[Uhh]]></category>
		<category><![CDATA[unit]]></category>
		<category><![CDATA[value]]></category>
		<category><![CDATA[vessel]]></category>
		<category><![CDATA[way]]></category>
		<category><![CDATA[WebService-based]]></category>
		<category><![CDATA[well sir]]></category>
		<category><![CDATA[weren]]></category>
		<category><![CDATA[wharfage charges]]></category>
		<category><![CDATA[Whoops]]></category>
		<category><![CDATA[wool]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[workman]]></category>
		<category><![CDATA[wouldn]]></category>
		<category><![CDATA[WTFSE]]></category>
		<category><![CDATA[xecor]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[yeah]]></category>

		<guid isPermaLink="false">6727</guid>
		<description><![CDATA[<p>Brad&#8217;s phone rang with the telltale tone of an inner-office call. &#8220;Yeah,&#8221; he briskly blurted out as he picked up the phone, &#8220;what&#8217;cha ya need?&#8221; That was actually his nicewayof answering the phone. As <i>the</i> senior trader at &#198;xecor, one of the world&#8217;s largest energy trading companies, Brad didn&#8217;t need to impress anyone and, in his mind, displaying anything less than vicious hubris would be a sign of weakness.</p>
<p>&#8220;Err,&#8221; the receptionist nervously answers, &#8220;there&#8217;s a&#8230; err, delivery for you, sir. They&#8212;&#8221;</p>
<p>&#8220;Hmphf,&#8221; Brad&#8217;s scoff cut her off. &#8220;So just <i>sign</i> for it, then! Is that really that hard to do? You can do that, can&#8217;t you?&#8221;</p>
<p>&#8220;Well sir,&#8221; the receptionist winced, &#8220;they&#8217;re asking for mooring instructions? And we need to pay wharfage charges? They said you&#8217;d know. I&#8217;m at a loss.&#8221;</p>
<p>&#8220;Fine,&#8221; Brad scowled, &#8220;I guess I have to do <i>everything </i>around here!&#8221; He slammed down the phone and marched out of his corner office. Despite &#198;xecor&#8217;s location &#8211; the &#8220;old docks&#8221; district &#8211; their office was one of the most posh in the city. On one end of the expansive, former warehouse sat the executive suites, which had a tremendous view of the city skyline. The other end &#8211; where Brad was headed towards &#8211; was the reception which overlooked its own, private bay on the river.</p>
<p>&#8220;Okay, I&#8217;m here!&#8221; he angrily announced once he stepped foot in the lobby. &#8220;So let&#8217;s do this! What do I need to&#8212;&#8221;</p>
<p>Brad stopped mid-sentence. His eyes were immediately drawn through the floor-to-ceiling windows and onto the river bay that &#198;xecor&#8217;s building overlooked. There was an absolutely gigantic barge &#8211; nay, an <i>armada</i> of tightly-connected barges &#8211; overfilled with enormous piles of coal that was attempting to dock in front of the building. &#8220;What&#8230; the&#8230; fuuu&#8212;&#8221;</p>
<blockquote>
<p><img alt="Photo credit: Kordite@Flickr" src="http://img.thedailywtf.com/images/200911/2962883468_32efb95441.jpg" /></p>
</blockquote>
<p>&#8220;You mus&#8217; be Brad,&#8221; a cheerful voice jumped in. Brad&#8217;s eye&#8217;s shifted towards the scruffy fellow wearing some sort of workman&#8217;s uniform who was sitting in one of the reception chairs. &#8220;Now first and foremost, how in the Sam Hill are we &#8216;sposed to moor this boat? I count two cleats, but we sure as heck can&#8217;t hitch these. And, shoot, do you even <i>have</i> a bulk berth?&#8221;</p>
<p>For once, Brad was speechless. He had absolutely no idea who that man was and he could hardly understand a word he said. Plus, there was that gargantuan vessel that was slowly moving towards the building. &#8220;Uhh,&#8221; he stuttered, &#8220;wait. Are you delivering&#8230; coal? To&#8230; uhh, us?&#8221;</p>
<p>&#8220;Well, yeah! Twenty-eight thousand tons of the good ol&#8217; black gold!&#8221; The workman sarcastically furrowed his brow adding, &#8220;I mean, we did get the right address, har har. This is &#198;xecor? And this is Pier 53? And you <i>are</i> Brad, the fella who ordered it, right?&#8221;</p>
<p>It was that moment that Brad&#8217;s palm almost immediately made contact with his forehead. He realized that something must have <i>really</i> gone awry: instead of <i>virtually</i> trading 28,000 tons of coal, Brad had somehow ended up with 28,000 tons of real coal.</p>
<h3 style="margin-bottom: 0px">Commodity Futures Trading 101</h3>
<p style="margin-top: 0px">If you&#8217;ve ever watched <a href="http://www.amazon.com/gp/product/B001LMU1JQ?ie=UTF8&#38;tag=tdw-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=B001LMU1JQ">Trading Places</a>, the 1983 classic starring Eddie Murphy and Dan Aykroyd, then you&#8217;re probably at least <em>familiar</em> with commodities markets. At a basic level, commodities such as gold, wool, and soy beans are sold by producers and, eventually, delivered to buyers. But Billy Ray Valentine didn&#8217;t strike it rich and bankrupt the Duke Brothers by hauling around Frozen Concentrated Orange Juice (FCOJ); instead, they worked the commodities market by buying and selling FCOJ <em>futures contracts</em>. Actually, that&#8217;s really the only way to trade in commodities.</p>
<p>A futures contract is pretty straight forward: you agree to buy X units of commodity Y at $N per unit at some fixed future date. While it might seem a bit strange for an individual to agree to buy twenty tons of pork bellies in April for $34,420 (even if he <em>really</em> loves bacon), the idea is to sell the to-be-delivered pork bellies long before April, and to sell them for more than $34,420. Just about every conceivable commodity is bought and sold in this manner long before the commodity is even produced. The whole point of all this trading is to shift the risk (and rewards) of fluctuating commodity prices from the producers (farmers, miners, etc) to the traders.</p>
<p>Of course, because commodity traders don&#8217;t <em>actually</em> want to be stuck with tons and tons of pork bellies, a whole series of middlemen &#8212; from the brokers to the exchanges to the clearing houses &#8212; work hard to ensure that, when you say &#34;I&#8217;ll buy 300 tons of pork bellies for $518,000 in May,&#34; you don&#8217;t actually buy 300 tons of pork bellies for $518,000 in May.</p>
<p>Brokers, for example, will set up round-turn trades so that, for each futures contract purchased, an offsetting contract can be sold to whoever actually wants to buy the goods. The exchange&#8217;s automated trading systems have all sorts of rules-engines to make sure that obvious errors (like delivering truckloads of commodities to a commercial office park) don&#8217;t slip through. And finally, processors at the clearing house will double-check transactions to make sure they weren&#8217;t sent over in error.</p>
<p>All that said, it&#8217;s almost impossible for traders to <em>actually</em> buy the commodities they are buying. Well, <em>almost</em> impossible.</p>
<h3 style="margin-bottom: 0px">A Perfect Storm</h3>
<p style="margin-top: 0px">&#198;xecor traded coal on only one exchange (the WTFSE), and they didn&#8217;t trade coal very often. As such, when WTFSE upgraded its public-facing, WebService-based API, &#198;xecor&#8217;s internal trading system could no longer communicate with it. With a couple pending coal trades, this presented a bit of a problem.</p>
<p>Fortunately, &#198;xecor had a staff of crack programmers, and they were able to hack together a solution that worked with the WTFSE&#8217;s new API. Essentially, the coder added a bit of XML to their trading requests, including this following snippet.</p>
<blockquote>
<pre>
&#60;AdditionalProperties&#62;
   &#60;PhysicallyDeliver&#62;
      &#60;value&#62;False&#60;/value&#62;
   &#60;/PhysicallyDeliver&#62;
&#60;/AdditionalProperties&#62;

</pre>
</blockquote>
<p>Notice anything off about that XML? If you said, &#8220;value should be 0 instead of False&#8221;, then give yourself a pat on the back. As it turned out, WTFSE only recognized 1&#8217;s and 0&#8217;s to represent True and False and, if the value was nether 1 nor 0, it simply defaulted to 1. Whoops!</p>
<p>Now, this normally wouldn&#8217;t have been that big of a deal; to ensure accurate transactions, the WTFSE (and just about all other exchanges) sends back a trade confirmation with all of the original information encoded in their XML. That way, both parties have to understand each other&#8217;s data. On &#198;xecor's end, everything looked hunky dory, especially as a result of the following line of code.</p>
<blockquote>
<pre>
bool physicallyDeliver = 
    (getNodeVal(&#34;PhysicallyDeliver&#34;).toLower() == &#34;true&#34;);</pre>
</blockquote>
<p>Kudos to the developer for verifying the correct case... but, a string can be infinitely more things than simply &#34;true&#34; or &#34;false&#34;. Such as &#34;1&#34; or &#34;0&#34;. Whoops.</p>
<p>Even a mistakenly confirmed incorrect trade shouldn&#8217;t have been <em>that</em> big of a deal, since the clearing house would notice some pretty big problems with the trade. You can&#8217;t just call up FedEx and request delivery of thousands upon thousands of tons of raw material to some office complex downtown. Commodities can only be delivered to a fixed number of delivery points, such as warehouses adjacent to train yards or ports. Of course, since &#198;xecor&#8217;s offices were in located on Pier 53, a recently redeveloped warehouse district off the river, it would have seemed like the logical place to accept delivery of a whole bunch of coal, especially to a rules engine. Whoops.</p>
<p>Fortunately, the commodity futures trading market doesn&#8217;t rely entirely on software. There are back-office personnel on both sides of the transaction (and several places in the middle) to make sure that a trader doesn&#8217;t do something silly like accidently click the &#8220;physically deliver&#8221; checkbox, enter into round-turn trades that creates an instant net loss, and so on.</p>
<p>So with everyone looking over transactions, you&#8217;d think that <em>someone</em> along the way would have noticed that trading giant &#198;xecor asked for physical delivery of a million-and-a-half dollars worth of coal. Actually, someone probably did, but because the trade came from Brad, there was just no way it could be made in err.</p>
<p>As <i>the</i> senior trader at &#198;xecor, Brad made it <em>very</em> clear that no one &#8212; &#8220;not even His Holiness, the Pope&#8221; &#8212; shall question his trades. After all, Brad makes complex trading decisions that no one else could possibly comprehend. Sometimes he buys high and sells low. Sometimes he holds in a decline. Sometimes he refuses to sell at any price. Brad works in mysterious ways, and if he said &#8220;do it&#8221;, then it better get done.</p>
<h3 style="margin-bottom: 0px">An Early Christmas</h3>
<p style="margin-top: 0px">&#8220;Now don&#8217;t go telling me that this coal ain&#8217;t yours,&#8221; the workman said defensively, sensing something was awry. &#8220;I mean, if you don&#8217;t want it, that&#8217;s your business. But this here is your coal, mister Brad.&#8221;</p>
<p>As much as Brad wanted to deny it, he knew it was his. And not only that, but he had haughtily confirmed, re-confirmed, and re-re-confirmed with &#198;xecor&#8217;s own back-office processing team. He had just assumed, like he always did, that the mouth-breathing paper-pushers couldn&#8217;t read English. As he played back the last thing he told one of the processors about the coal order &#8211; &#8220;what part of &#8216;execute my f*ing trade&#8217; don&#8217;t you understand!?&#8221; &#8211; he wondered what he could possibly do with 56,000,000 pounds of <em>real</em> coal.</p>
<p>Try to imagine for a moment how <em>you</em> would unload a mountain of coal worth million-and-a-half dollars. Craigslist does have its limits, after all.</p>
<p>As it turned out, it was more difficult than Brad could have <em>ever</em> imagined to sell real coal. The commodities market really only deals in futures, and everyone who actually needs 28,000 tons of coal has bought it long in advance. And besides, who wants to buy coal from some guy named Brad? Eventually, after paying exorbitant wharfing, shipping, environmental, docking, unloading, loading, and multiple-fee fees, Brad was finally able to unload it for twenty cents on the dollar.</p>
<p>Ever since &#8220;The Big Purchase&#8221;, Brad has never been able to live down his mountain of coal. Every time he passed others in the hallway, he knew that they knew about the coal, and they knew that he knew that they knew. No one really poked fun or laughed at him, but it didn&#8217;t matter. Brad was no longer thought of <i>the</i> senior trader at &#198;xecor; instead, he was the guy who accidently bought all that coal.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/iVTHddcxT5pZ-Kq6SehnDNs-WgU/0/da"><img src="http://feedads.g.doubleclick.net/~a/iVTHddcxT5pZ-Kq6SehnDNs-WgU/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/iVTHddcxT5pZ-Kq6SehnDNs-WgU/1/da"><img src="http://feedads.g.doubleclick.net/~a/iVTHddcxT5pZ-Kq6SehnDNs-WgU/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=7WNuLM08t1Q:PzILG5m0aYo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/7WNuLM08t1Q" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Special-Delivery.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classic WTF: Smooth, Like a Factory</title>
		<link>http://thedailywtf.com/Articles/Classic-WTF-Smooth,-Like-a-Factory.aspx</link>
		<comments>http://thedailywtf.com/Articles/Classic-WTF-Smooth,-Like-a-Factory.aspx#comments</comments>
		<pubDate>Fri, 27 Nov 2009 14:00:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[addition]]></category>
		<category><![CDATA[aggregation]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[analogy]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[battle]]></category>
		<category><![CDATA[bent]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[Black]]></category>
		<category><![CDATA[black friday]]></category>
		<category><![CDATA[buggy]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[cascade]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[choice]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[conveyer]]></category>
		<category><![CDATA[conveyer belts]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[coworkers]]></category>
		<category><![CDATA[critical reports]]></category>
		<category><![CDATA[Daren]]></category>
		<category><![CDATA[data processing]]></category>
		<category><![CDATA[datum]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[DEATH]]></category>
		<category><![CDATA[diagram]]></category>
		<category><![CDATA[direction]]></category>
		<category><![CDATA[Director]]></category>
		<category><![CDATA[downfall]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[emailed]]></category>
		<category><![CDATA[entrance]]></category>
		<category><![CDATA[everyone]]></category>
		<category><![CDATA[exit]]></category>
		<category><![CDATA[Factory]]></category>
		<category><![CDATA[Fed]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[financial services provider]]></category>
		<category><![CDATA[floor]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[FRIDAY]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[gas]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[giant]]></category>
		<category><![CDATA[hand]]></category>
		<category><![CDATA[head]]></category>
		<category><![CDATA[Hedge]]></category>
		<category><![CDATA[intervals]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[little bit at a time]]></category>
		<category><![CDATA[Load]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[logon]]></category>
		<category><![CDATA[loss]]></category>
		<category><![CDATA[lot]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[machinery]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[maintenance responsibility]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[mistake]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[November]]></category>
		<category><![CDATA[NULL]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[page]]></category>
		<category><![CDATA[pinwheel]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[Provider]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[Report]]></category>
		<category><![CDATA[responsibility]]></category>
		<category><![CDATA[rough around the edges]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[slide]]></category>
		<category><![CDATA[Smooth]]></category>
		<category><![CDATA[someone]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[spreadsheets]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[stampers]]></category>
		<category><![CDATA[steam]]></category>
		<category><![CDATA[steam pipes]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[suggestion]]></category>
		<category><![CDATA[tail]]></category>
		<category><![CDATA[The Way]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[troublemaker]]></category>
		<category><![CDATA[US]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[Visio]]></category>
		<category><![CDATA[waste]]></category>
		<category><![CDATA[wisest]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[workaround]]></category>
		<category><![CDATA[workstation]]></category>

		<guid isPermaLink="false">6728</guid>
		<description><![CDATA[<p><em>It's Black Friday! For those of you stuck at work (or not in the US), here's a fun classic. Smooth, Like a Factory was originally published on November 9th, 2006.</em></p>
<hr />
<p><strong>Daren S </strong>knew that his days were numbered. He was a troublemaker bent on changing The Way Things Were and The Director was hot on his tail. Though Daren worked discreetly, improving his coworkers' productivity a little bit at a time, it only was inevitable that The Director would eventually find out. One does not become The Director by letting such things slide.</p>
<p><img src="http://img.thedailywtf.com/images/200611/factory.jpg" alt="" class="wtf_imgfloatright" style="margin: 5px;width: 170px;float: right;height: 135px" />A financial services provider, Daren's company did a lot of data processing and aggregation from a lot of different sources. The Director acknowledged that their processes were &#34;a little rough around the edges&#34; but insisted that they ran &#34;smooth, like a factory.&#34; An accurate analogy I'd say, especially considering what the typical industrial factory is like: poisonous steam pipes spewing death gas every three seconds; razor-sharp pinwheel governors spinning at different yet predictable intervals; and giant, spiked stampers slamming down on conveyer belts running different speeds in varying direction, all placed inconveniently at the entrance and exit so that they must be meticulously navigated to avoid a significant loss of Life Points. At least, that's what every factory I've been in was like.</p>
<p>Also like a factory, the company's processes were developed over several years by many different engineers who carelessly bolted additions to the diabolical machinery. The most convoluted of these processes was the bi-weekly Hedge Report. One of the business' most critical reports, it took two people two full days to create. It was also Daren's new maintenance responsibility and, consequently, his downfall.</p>
<p>The Hedge Report needed data from four different sources aggregated into a single SQL Server. The aggregation was entirely manual: spreadsheets were generated, copy/pasted to each other, emailed, processed with a special script, emailed again, and so on. Daren's first mistake was to create a Visio diagram that modeled this process. Everyone knew how it worked, so said The Director, and Daren could have just asked any one of the many people involved.</p>
<p>Daren's second mistake was to make a minor change to a VB5 application that extracted data from another SQL Server. Before his change, the application would inform its user of a null datum by crashing and leaving a half-processed file that required the user to dig through, go back to the original SQL Server source, and change the null datum to the string &#34;NULL.&#34;&#160; Though it shaved a few hours off of the report generation time, The Director felt it was a waste of time, because they had a completely suitable workaround.</p>
<p>Daren's third mistake would have been his suggestion to change an AppleScript that processed semi-raw data to a more manageable VBScript. But he was starting to learn. Although this AppleScript required that someone at another location logon to the company's only Mac workstation, run the script, and email back the results, Daren figured this would be a battle for a much later day.</p>
<p>Sadly, Daren never got to fight that battle. Fed up by Daren's constant requests to &#34;improve&#34; the process, The Director demanded to know what &#60;em&#62;exactly&#60;/em&#62; was wrong with the ASP.NET module that Daren kept asking to change. After all, he personally oversaw the addition and paid good money on consultants to build it.</p>
<p>Daren printed out the Page_Load() method using a half-spaced six-point font with two &#34;screens&#34; per page. He highlighted the buggy and incorrect code, spliced the pages together, and went back to The Director's office. In a move that may not have been the wisest career choice, Daren held the first page in the air above his head and let the other taped-together pages cascade to the floor. With over seven-feet of highlighted code in hand, Daren said: &#34;this is what's wrong with the code.&#34;</p>
<hr />
<p><a href="http://feedads.g.doubleclick.net/~a/2KfPr9UH4pDraBJXP9dGFW4PC3k/0/da"><img src="http://feedads.g.doubleclick.net/~a/2KfPr9UH4pDraBJXP9dGFW4PC3k/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/2KfPr9UH4pDraBJXP9dGFW4PC3k/1/da"><img src="http://feedads.g.doubleclick.net/~a/2KfPr9UH4pDraBJXP9dGFW4PC3k/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=VEU7_0hKfgA:IEUXYZ3o8RA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/VEU7_0hKfgA" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Classic-WTF-Smooth,-Like-a-Factory.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Immutable Invoices</title>
		<link>http://thedailywtf.com/Articles/Immutable-Invoices.aspx</link>
		<comments>http://thedailywtf.com/Articles/Immutable-Invoices.aspx#comments</comments>
		<pubDate>Tue, 24 Nov 2009 14:30:00 +0000</pubDate>
		<dc:creator>Mark Bowytz</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[1990s]]></category>
		<category><![CDATA[additional products]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[amp nbsp]]></category>
		<category><![CDATA[answer]]></category>
		<category><![CDATA[arial]]></category>
		<category><![CDATA[basket]]></category>
		<category><![CDATA[biz]]></category>
		<category><![CDATA[Brilliant]]></category>
		<category><![CDATA[candidate]]></category>
		<category><![CDATA[cart]]></category>
		<category><![CDATA[charge]]></category>
		<category><![CDATA[child]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[com]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[couldn]]></category>
		<category><![CDATA[customer]]></category>
		<category><![CDATA[cut]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[DEATH]]></category>
		<category><![CDATA[description]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[didn]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[domain names]]></category>
		<category><![CDATA[domain types]]></category>
		<category><![CDATA[domainname]]></category>
		<category><![CDATA[DON]]></category>
		<category><![CDATA[e commerce system]]></category>
		<category><![CDATA[efficiency]]></category>
		<category><![CDATA[Elseif]]></category>
		<category><![CDATA[end]]></category>
		<category><![CDATA[EVER]]></category>
		<category><![CDATA[EVERYWHERE]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[face]]></category>
		<category><![CDATA[fact]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[goliath]]></category>
		<category><![CDATA[helvetica]]></category>
		<category><![CDATA[iexcl]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[internet service provider]]></category>
		<category><![CDATA[invoice]]></category>
		<category><![CDATA[invoicing]]></category>
		<category><![CDATA[ISP]]></category>
		<category><![CDATA[item]]></category>
		<category><![CDATA[late]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[master]]></category>
		<category><![CDATA[match]]></category>
		<category><![CDATA[mdash]]></category>
		<category><![CDATA[meantime]]></category>
		<category><![CDATA[multitude]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[NOT]]></category>
		<category><![CDATA[offer]]></category>
		<category><![CDATA[option]]></category>
		<category><![CDATA[orderitemref]]></category>
		<category><![CDATA[org]]></category>
		<category><![CDATA[PENALTY]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[place]]></category>
		<category><![CDATA[plan]]></category>
		<category><![CDATA[price]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[Provider]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[reason]]></category>
		<category><![CDATA[reasoning]]></category>
		<category><![CDATA[record]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[REMOVE]]></category>
		<category><![CDATA[Renewal]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rowval]]></category>
		<category><![CDATA[sale]]></category>
		<category><![CDATA[sense]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[shopping]]></category>
		<category><![CDATA[shopping basket]]></category>
		<category><![CDATA[shopping cart]]></category>
		<category><![CDATA[Simon]]></category>
		<category><![CDATA[simon c]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[size]]></category>
		<category><![CDATA[snag]]></category>
		<category><![CDATA[someone]]></category>
		<category><![CDATA[something]]></category>
		<category><![CDATA[subset]]></category>
		<category><![CDATA[substr]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[T-Shirts]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[thestr]]></category>
		<category><![CDATA[thing]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[TOCAR]]></category>
		<category><![CDATA[TOUCH]]></category>
		<category><![CDATA[verdana]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[village]]></category>
		<category><![CDATA[warning]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">6725</guid>
		<description><![CDATA[<p><img class="wtf_floatright" style="float: right;margin: 5px" alt="" src="http://img.thedailywtf.com/images/mark/kettle_of_fish/stonefish.jpg" />Back in the late-1990s, the Internet Service Provider where <b>Simon C.</b> worked was a mere micro-sized version of what they are today. Their website's original e-commerce system only needed to sell one thing &#8212; domain names, and a limited subset of them at that &#8212; so the shopping basket and invoicing parts of the system didn't need to be all that intelligent. They simply looped through each item ordered by the customer, displayed the description and prices of each one, and worked out the totals at the end. The whole process was so simple in fact that it made sense to the original developer to write the system so that the shopping cart and invoicing pages shared the same code.</p>
<p>Over time, the ISP grew in size to sell additional products such as new domain types and packages with a multitude of sub-products. Also,&#160;as the system grew in size,&#160;the site began&#160;running slower and slower. This gave Simon a reason to look into ways to improve the efficiency of the shopping basket and invoicing parts of the system.</p>
<p>However, the more familiar Simon got with the code, the harder it was for him to understand why it was allowed to remain in place for over ten years.</p>
<h3 style="margin-bottom: 0px">Elseif()s EVERYWHERE!</h3>
<p style="margin-top: 0px">They say it takes an entire village to raise a child, but Simon discovered that it took over 16,000 lines of code to process the sale or print an invoice.</p>
<p>How could something like this be? The answer was surprisingly simple. As the company grew, it was simple to add new products. Just add a record to the master product table in the database and then add a new &#34;elseif()&#34; block to the shared code. Same thing went for discounts - toss in another elseif(). T-Shirts? Another elseif()...and so on so that the code was almost entirely made up of hundreds elseif blocks, each of which would need to be evaluated whenever a customer would add or remove an item from their shopping cart. Also, a side-effect of this design was that if someone wanted to change a product's description, for example, they couldn't just edit the database record, they would have to create a new product code and leave the old one in place forever.</p>
<p>Simon figured, <em>My work's cut out for me - it s</em><em>hould be easy to improve performance! Just trim out the elseif() blocks for the old items and discounts and I'm done! </em>Ordinarily, Simon's reasoning would be absolutely correct, however, there was a small snag in this plan in the form of several hundred dire warnings.</p>
<h3 style="margin-bottom: 0px">&#161;NO TOCAR!</h3>
<p style="margin-top: 0px">In looking for candidate code to trim, Simon found that most elseif() blocks heeded the warning DO NOT REMOVE and DON'T TOUCH UNDER PENALTY OF DEATH and the like, just like the following:</p>
<blockquote>
<pre>
// xmas offer 20071206 - 20080103 DO NOT REMOVE, EVER!!
if($rowval['orderitemref'] &#62; 10295755 &#38;&#38;  $rowval['orderitemref'] &#60; 10373106 &#38;&#38; (
    (substr($rowval['domainname'], -3, 3) == &#34;com&#34;) &#124;&#124;
    (substr($rowval['domainname'], -3, 3) == &#34;net&#34;) &#124;&#124;
    (substr($rowval['domainname'], -3, 3) == &#34;org&#34;) &#124;&#124;
    (substr($rowval['domainname'], -3, 3) == &#34;biz&#34;))) {
       $thestr.='&#60;font face=&#34;arial,verdana,helvetica&#34; '
         .'size=&#34;-2&#34; color=&#34;#ff0000&#34;&#62; at special offer price.'
	 .'&#60;br&#62;Renewal at standard price&#60;/font&#62;&#60;br&#62;';
}</pre>
</blockquote>
<p>The reason for this was also simple - as new items, price changes and special offers had come and gone over the years, it had exposed the problem of how the system handles historical invoicing. You see, the important thing about invoices is that they must be immutable. If a customer called up to argue a charge from six months ago, customer service had better be able to pull up that same invoice and it had better match what the customer saw at the time.</p>
<p>What Simon needed was a brilliant plan.</p>
<h3 style="margin-bottom: 0px">The Brilliant Plan</h3>
<p style="margin-top: 0px">Simon figured he had two options in trying to bring down his goliath. The first option was to refactor the 16,000 lines into a system that would be able to regenerate ten years of invoices flawlessly and spend the rest of his life regression testing while in the meantime, the number of elseif() blocks would inevitably grow.</p>
<p>Alternatively, he could take the quick, dirty, and <em>simple</em> route: print out the historical invoices so that the CSRs could pull up when needed. Well, not print on real paper, but rather batches of PDFs of every historical invoice. This would allow him to simply ditch the old code entirely.</p>
<p>Simon was immensely proud of this solution and presented the idea to management. &#34;Why would we want to change,&#34; his boss rhetorically asked, &#34;what we have works already and has been working <em>consistently</em> for the past ten years!&#34;</p>
<p>Defeated, Simon went back to his maintenance work and added yet another elseif() block to represent yet another promo offer.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/vopJCVEfnGXwvsIHcNEE7x7_OM4/0/da"><img src="http://feedads.g.doubleclick.net/~a/vopJCVEfnGXwvsIHcNEE7x7_OM4/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/vopJCVEfnGXwvsIHcNEE7x7_OM4/1/da"><img src="http://feedads.g.doubleclick.net/~a/vopJCVEfnGXwvsIHcNEE7x7_OM4/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=ZGMxQ5k4ASg:dOoz7s5WRdw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/ZGMxQ5k4ASg" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Immutable-Invoices.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Bad Code Offsets</title>
		<link>http://thedailywtf.com/Articles/Introducing-Bad-Code-Offsets.aspx</link>
		<comments>http://thedailywtf.com/Articles/Introducing-Bad-Code-Offsets.aspx#comments</comments>
		<pubDate>Wed, 18 Nov 2009 15:00:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[age]]></category>
		<category><![CDATA[Al Gore]]></category>
		<category><![CDATA[Alliance]]></category>
		<category><![CDATA[amount]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[approach]]></category>
		<category><![CDATA[atone]]></category>
		<category><![CDATA[atwood]]></category>
		<category><![CDATA[Bad]]></category>
		<category><![CDATA[base]]></category>
		<category><![CDATA[basis]]></category>
		<category><![CDATA[battle]]></category>
		<category><![CDATA[brilliance]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[cent]]></category>
		<category><![CDATA[chairman]]></category>
		<category><![CDATA[charter]]></category>
		<category><![CDATA[charter members]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[code footprint]]></category>
		<category><![CDATA[codebase]]></category>
		<category><![CDATA[Codethulu]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[community leaders]]></category>
		<category><![CDATA[Conga]]></category>
		<category><![CDATA[consuming]]></category>
		<category><![CDATA[consuming passion]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[dawn]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[deity]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[dollar]]></category>
		<category><![CDATA[earth]]></category>
		<category><![CDATA[efficacy]]></category>
		<category><![CDATA[equipment]]></category>
		<category><![CDATA[Erik Sink]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[evening]]></category>
		<category><![CDATA[Excellence]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[exploration]]></category>
		<category><![CDATA[fantasy]]></category>
		<category><![CDATA[fight]]></category>
		<category><![CDATA[footprint]]></category>
		<category><![CDATA[Foundation]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[Home]]></category>
		<category><![CDATA[impact]]></category>
		<category><![CDATA[impediments]]></category>
		<category><![CDATA[inane]]></category>
		<category><![CDATA[Jason Cohen]]></category>
		<category><![CDATA[Jeff Atwood]]></category>
		<category><![CDATA[jet]]></category>
		<category><![CDATA[Jon Skeet]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[ldquo]]></category>
		<category><![CDATA[left behind]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[Los Angeles]]></category>
		<category><![CDATA[mainframes]]></category>
		<category><![CDATA[manner]]></category>
		<category><![CDATA[mdash]]></category>
		<category><![CDATA[minimum]]></category>
		<category><![CDATA[Mitigating]]></category>
		<category><![CDATA[ndash]]></category>
		<category><![CDATA[negative impact]]></category>
		<category><![CDATA[Nettlesome]]></category>
		<category><![CDATA[notion]]></category>
		<category><![CDATA[November]]></category>
		<category><![CDATA[number]]></category>
		<category><![CDATA[offer]]></category>
		<category><![CDATA[Offsets]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[part]]></category>
		<category><![CDATA[passion]]></category>
		<category><![CDATA[Plus]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[potential]]></category>
		<category><![CDATA[practice]]></category>
		<category><![CDATA[private jet]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[purchase]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[quality code]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[rdquo]]></category>
		<category><![CDATA[region]]></category>
		<category><![CDATA[remediate]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[Room]]></category>
		<category><![CDATA[rsquo]]></category>
		<category><![CDATA[school]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server farms]]></category>
		<category><![CDATA[skeet]]></category>
		<category><![CDATA[SLOC]]></category>
		<category><![CDATA[SoCal]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software development community]]></category>
		<category><![CDATA[something]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[step]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[today]]></category>
		<category><![CDATA[tomorrow]]></category>
		<category><![CDATA[Tonight]]></category>
		<category><![CDATA[vehicle]]></category>
		<category><![CDATA[vision]]></category>
		<category><![CDATA[Wednesday]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[world]]></category>
		<category><![CDATA[worldwide]]></category>

		<guid isPermaLink="false">6720</guid>
		<description><![CDATA[<p><b>I have never written a bad line of code.</b></p>
<p>When I tell people that, they often scoff and offer replies like &#8220;so you&#8217;re not a programmer then?&#8221; and &#8220;let me guess, you&#8217;re a coding deity or something?&#8221; Well let me say, I <i>am</i> a programmer and I <i>am not</i> Codethulu, but in the same manner that Al Gore can fly around the world in a private jet <i>without</i> polluting, I have negated my bad code footprint through the purchase of <a href="http://codeoffsets.com/">Bad Code Offsets</a>.</p>
<blockquote>
<table border="0" cellspacing="0" cellpadding="10">
    <tbody>
        <tr>
            <td><img alt="" src="http://codeoffsets.com/Resources/images/offset-1.png" /></td>
            <td><img alt="" src="http://codeoffsets.com/Resources/images/offset_cert_1_front_specimen.png" /></td>
        </tr>
    </tbody>
</table>
</blockquote>
<p>This is all made possible through the Alliance for Code Excellence, a group for which I am proud to be the chairman. Its <a href="http://codeoffsets.com/Members.aspx">charter members</a> include Jeff Atwood, Erik Sink, Jon Skeet, Jason Cohen, and several other software development community leaders who are just as passionate about quality code as I am. We stand strong with <a href="http://codeoffsets.com/Vision.aspx">our vision</a>:</p>
<blockquote>
<p><img style="margin: 5px;float: left" alt="" src="http://img.thedailywtf.com/images/200911/bc_logo_sm.png" />We envision a world where software runs cleanly and correctly as it simplifies, enhances and enriches our day to day work and home lives. Mitigating the scope and negative impact of bad code on our jobs, our lives and our world is our all&#8211;consuming passion. We foresee a time when bad coding practices and their rotten fruits have been eliminated from this earth and its server farms thereby heralding a new age of software brilliance and efficacy.</p>
<p>Nettlesome bugs and poorly written code have been constant impediments towards realizing our full potential as programmers and engineers. Bad Code Offsets provides the vehicle for balancing the scales of poor past practice while freeing us to pursue current excellence in code development. Until the dawn of the worldwide, bug free code base, each of us can take steps towards reducing our bad code footprint and remediate the bad code that we have each individually and collectively left behind on the desktops, servers and mainframes at school, at work and at home.</p>
</blockquote>
<p>While the notion of offsetting bad code instead of outright correcting it may seem like a &#34;hack&#34; to some, we believe it's a good approach for today's problems and today's codebase. The dollars you spend purchasing Bad Code Offsets are donated to <a href="http://codeoffsets.com/Projects.aspx">various worthy Open Source initiatives</a> that are carrying the fight against bad code on a daily basis. These organizations currently include jQuery, PostgreSQL, and The Apache Software Foundation.</p>
<h3 style="margin-bottom: 0px">Building a better tomorrow&#8212;one line of code at a time</h3>
<p style="margin-top: 0px">Imagine a world without bugs. Not the creepy-crawly-soil-enriching bugs, more the bugs that plague all software, past and present. The bugs behind the inane error messages you see day-in and day-out. The bugs that cause multi-million dollar business disasters. The bugs responsible for (literally) crashing billion-dollar space exploration equipment.</p>
<p>By today&#8217;s coding standards, a world free of bugs is a far-fetched fantasy. Bugs are an ever-present part of code and about as likely as a semi-colon in a C++ program. But does it always have to be like this? Will there always have to be bad software?</p>
<p>While I do believe that, one day, given sufficient tools, knowledge, and experience, we achieve the worldwide, bug-free codebase, there&#8217;s a preposterous amount of work and clean-up between here and there. Think of the swaths of bad code that we have left behind on the desktops, servers and mainframes at school, at work and at home. Add to that the bad code that is being churned out each day by unskilled colleagues and our own laziness, and we're left with a completely unwinnable battle.</p>
<p>That is, unless we try a radically different approach. And that's exactly what we're doing with Bad Code Offsets. It's our first, bold step towards universal code excellence.</p>
<h3 style="margin-bottom: 0px">Why Bad Code Offsets? Why Now?</h3>
<p style="margin-top: 0px">Not many things in life allow us to atone for past mistakes. But by <a href="http://codeoffsets.com/Buy.aspx">buying Bad Code Offsets</a>, you can not only do that, but you can make up for <em>other people's mistakes</em>. Get them for your friends, for your peers, and of course for your code review sessions.</p>
<p>They're inexpensive (50&#162; per SLOC) and come in a number of denominations. Plus, for a limited time, <b>shipping is free</b>. Buy as little (minimum of 3) or as many as you'd like.</p>
<h3 style="margin-bottom: 0px">Tonight Only: Code Offsets at the Conga Room in Los Angeles</h3>
<p style="margin-top: 0px">If you're in the SoCal region this evening (Wednesday, November 18), make sure to stop by the world famous Conga Room. We'll be officially launching Bad Code Offsets at the <a href="http://www.undergroundatpdc.com/">Underground @ PDC 2009</a> event (free, but registration required) in Los Angeles. Pick up some Daily WTF stickers, Stack Overflow stickers, and of course, your very first Bad Code Offset.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/k6xwLLHlaQsxqIkh-ajdStplY-o/0/da"><img src="http://feedads.g.doubleclick.net/~a/k6xwLLHlaQsxqIkh-ajdStplY-o/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/k6xwLLHlaQsxqIkh-ajdStplY-o/1/da"><img src="http://feedads.g.doubleclick.net/~a/k6xwLLHlaQsxqIkh-ajdStplY-o/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=kN-C7bJWAZw:O7g5EUoMoNc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/kN-C7bJWAZw" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Introducing-Bad-Code-Offsets.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Standard Way</title>
		<link>http://thedailywtf.com/Articles/The-Standard-Way.aspx</link>
		<comments>http://thedailywtf.com/Articles/The-Standard-Way.aspx#comments</comments>
		<pubDate>Tue, 17 Nov 2009 14:00:00 +0000</pubDate>
		<dc:creator>Mark Bowytz</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[Advisory]]></category>
		<category><![CDATA[advisory committee meetings]]></category>
		<category><![CDATA[angle]]></category>
		<category><![CDATA[anything]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[application installations]]></category>
		<category><![CDATA[attention]]></category>
		<category><![CDATA[blessing]]></category>
		<category><![CDATA[brim]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[chance]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[committ]]></category>
		<category><![CDATA[Committee]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[cool life]]></category>
		<category><![CDATA[Council]]></category>
		<category><![CDATA[council of elders]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[desk]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[disciplinary group]]></category>
		<category><![CDATA[e mail]]></category>
		<category><![CDATA[Elders]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[embarrassment]]></category>
		<category><![CDATA[emphasis]]></category>
		<category><![CDATA[end]]></category>
		<category><![CDATA[face]]></category>
		<category><![CDATA[fool]]></category>
		<category><![CDATA[forehead]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[gobbledygook]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[grappling hook]]></category>
		<category><![CDATA[Greg]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[hot seat]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[lack]]></category>
		<category><![CDATA[ldquo]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[man]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[MegaBank]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[Michael]]></category>
		<category><![CDATA[mind]]></category>
		<category><![CDATA[minute]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[moment]]></category>
		<category><![CDATA[mouth]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[ndash]]></category>
		<category><![CDATA[new application]]></category>
		<category><![CDATA[none]]></category>
		<category><![CDATA[nose]]></category>
		<category><![CDATA[ordinary day]]></category>
		<category><![CDATA[palms]]></category>
		<category><![CDATA[part]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[person]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[production]]></category>
		<category><![CDATA[production application]]></category>
		<category><![CDATA[professionalism]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[rdquo]]></category>
		<category><![CDATA[reasoning]]></category>
		<category><![CDATA[remotest]]></category>
		<category><![CDATA[rsquo]]></category>
		<category><![CDATA[rubber]]></category>
		<category><![CDATA[s council]]></category>
		<category><![CDATA[seat]]></category>
		<category><![CDATA[sequence]]></category>
		<category><![CDATA[SESSION]]></category>
		<category><![CDATA[shortage]]></category>
		<category><![CDATA[shoulder to shoulder]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software advisory committee]]></category>
		<category><![CDATA[someone]]></category>
		<category><![CDATA[soup]]></category>
		<category><![CDATA[spoon]]></category>
		<category><![CDATA[thing]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[today]]></category>
		<category><![CDATA[tone]]></category>
		<category><![CDATA[tone of voice]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[village]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[wasn]]></category>
		<category><![CDATA[way]]></category>
		<category><![CDATA[word]]></category>
		<category><![CDATA[WTFness]]></category>
		<category><![CDATA[WTFs]]></category>

		<guid isPermaLink="false">6716</guid>
		<description><![CDATA[<p><img class="wtf_floatright" style="float: right;margin: 5px" alt="length matters." src="http://img.thedailywtf.com/images/mark/yardstick.JPG" /><b>Michael P.</b> was feeling pretty tense &#8211; and really, who could blame him?</p>
<p>Today was no ordinary day. He was in the hot seat, presenting to the Software Advisory Committee - a multi-disciplinary group responsible for rubber stamping any and <em>all</em> new production application installations at MegaBank.</p>
<p>Much like being presented before a village's Council of Elders, if he received their blessing, he would no longer be considered among the ranks of MegaBank&#8217;s junior developers. Instead he would be shoulder-to-shoulder with the <em>man</em> developers in the company.</p>
<p>His word would have weight. People would come to <em>him</em> for advice, but all this could be demolished if he did not gain the thumbs up of the Committee who was headed up by Michael&#8217;s manager, Greg.</p>
<p>&#34;Why can't we give the user their password in the e-mail?&#34; Greg asked, in the same tone of voice you might expect if someone had told you they couldn't eat their soup because the spoon was upside down.</p>
<p>&#34;I go on websites all the time and they always tell me my password when I forget it!&#34;</p>
<p>For a moment, Michael thought about asking &#34;which websites?&#34;. He also considered burying his face into his palms, or perhaps bang his forehead against the desk repeatedly - anything to get the stupid the development manager was spouting out of his mouth.</p>
<p>However, if Michael had even the remotest of hopes in getting his first new application installed, he was going to have to play this one cool.</p>
<p>Life at MegaBank is not without its shortage of WTFs: there is a global variable used in three different ways (depending on what part of the code is running) within the same module, one method is called by sending the sequence of keyboard presses that select and then press a button, and then of course there are the never-ending chains of if-statements nested so deeply you'd need a grappling hook to climb out.</p>
<p>However, none of these could touch the WTFness of the Software Advisory Committee meetings. To fully grasp what this is like, imagine you have two bosses who work in alternating schedules, and each despises the decisions that the other makes. Now imagine those two bosses are the same person &#8211; this was the committee of Greg.</p>
<p>In these meetings, Greg would incredulously ask why the developers would dare even suggesting that they may try to implement the features he had told them to implement several weeks ago, and Michael&#8217;s session with the committee wasn&#8217;t going much better.</p>
<p>&#8220;The only thing that sending a user a gobbledygook URL instead their actual password accomplishes is proves that we are a company of sloppy and inexperienced coders. In the end, you&#8217;ll be turning customers away from us balking at our utter lack of professionalism!&#8221; Greg explained.</p>
<p>Michael tried to make a case by saying that the email that went out did not show a full URL but rather it wassafely behind a link labeled &#8220;Click Here&#8221;&#160; Also,&#160;the process of picking out a new password was actually quite friendly. However, there was no chance to begin reasoning.</p>
<p>Greg lowered the brim of his glasses further down his nose for emphasis. &#8220;The standard way of recovering passwords is to send a user their password, not to hide it behind a link! Here, let me show you how Google does things &#8211; pay attention and please, keep an open mind.&#8221;</p>
<p>While Greg surfed onto Gmail to go about resetting his password, Michael could barely watch &#8211; the embarrassment was too great. He thought that he had considered every angle and that he here he was going to be proved out to be a fool. However, he was saved at that last minute.</p>
<p>In the email that Greg had received, Gmail sent a link enabling him to set a new password.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/xm-Ailmx31Izvus1IQKtSIUfo2E/0/da"><img src="http://feedads.g.doubleclick.net/~a/xm-Ailmx31Izvus1IQKtSIUfo2E/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/xm-Ailmx31Izvus1IQKtSIUfo2E/1/da"><img src="http://feedads.g.doubleclick.net/~a/xm-Ailmx31Izvus1IQKtSIUfo2E/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=saa_609dN-8:EJBN5QAKLqc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/saa_609dN-8" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/The-Standard-Way.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classic WTF: Don&#8217;t Worry, We&#8217;ll Fix It!</title>
		<link>http://thedailywtf.com/Articles/Classic-WTF-Dont-Worry,-Well-Fix-It!.aspx</link>
		<comments>http://thedailywtf.com/Articles/Classic-WTF-Dont-Worry,-Well-Fix-It!.aspx#comments</comments>
		<pubDate>Tue, 10 Nov 2009 14:00:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[accidental]]></category>
		<category><![CDATA[activity]]></category>
		<category><![CDATA[anything]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[chain]]></category>
		<category><![CDATA[charm]]></category>
		<category><![CDATA[classic]]></category>
		<category><![CDATA[clock]]></category>
		<category><![CDATA[closing]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[commission]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[consequence]]></category>
		<category><![CDATA[contract]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[current date]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[default]]></category>
		<category><![CDATA[desk]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[digging]]></category>
		<category><![CDATA[Don't Worry]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[employee]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[ferguson]]></category>
		<category><![CDATA[fifteen]]></category>
		<category><![CDATA[fifteen years]]></category>
		<category><![CDATA[Fix]]></category>
		<category><![CDATA[forecasting]]></category>
		<category><![CDATA[goal]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[hour]]></category>
		<category><![CDATA[indicator]]></category>
		<category><![CDATA[inventory]]></category>
		<category><![CDATA[ISN]]></category>
		<category><![CDATA[issue]]></category>
		<category><![CDATA[jam]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[machine]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[merchandise]]></category>
		<category><![CDATA[midnight]]></category>
		<category><![CDATA[mistake]]></category>
		<category><![CDATA[morning]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[next morning]]></category>
		<category><![CDATA[note]]></category>
		<category><![CDATA[November]]></category>
		<category><![CDATA[number]]></category>
		<category><![CDATA[Oct]]></category>
		<category><![CDATA[October]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[opportuntunity]]></category>
		<category><![CDATA[pace]]></category>
		<category><![CDATA[part]]></category>
		<category><![CDATA[past]]></category>
		<category><![CDATA[Period]]></category>
		<category><![CDATA[perspective]]></category>
		<category><![CDATA[point of sale]]></category>
		<category><![CDATA[point of sale system]]></category>
		<category><![CDATA[point of sale systems]]></category>
		<category><![CDATA[practice]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[Read]]></category>
		<category><![CDATA[reason]]></category>
		<category><![CDATA[receipt]]></category>
		<category><![CDATA[receipts]]></category>
		<category><![CDATA[refuse]]></category>
		<category><![CDATA[register]]></category>
		<category><![CDATA[registers]]></category>
		<category><![CDATA[relief]]></category>
		<category><![CDATA[rep]]></category>
		<category><![CDATA[return]]></category>
		<category><![CDATA[San Francisco]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shift]]></category>
		<category><![CDATA[shift manager]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software conference]]></category>
		<category><![CDATA[someone]]></category>
		<category><![CDATA[store]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[support contract]]></category>
		<category><![CDATA[support desk]]></category>
		<category><![CDATA[support rep]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[T. Ferguson]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[team]]></category>
		<category><![CDATA[technician]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[thing]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[tone]]></category>
		<category><![CDATA[Transaction]]></category>
		<category><![CDATA[transactional]]></category>
		<category><![CDATA[transactional data]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[uncommon practice]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[validate]]></category>
		<category><![CDATA[way]]></category>
		<category><![CDATA[week]]></category>
		<category><![CDATA[world]]></category>
		<category><![CDATA[worth]]></category>

		<guid isPermaLink="false">6703</guid>
		<description><![CDATA[<p><em>I'm at the Business of Software conference in San Francisco this week and thought it'd be the perfect opportuntunity to revisit a classic. Don't Worry, We'll Fix It! was originally published on November 28, 2006.</em></p>
<hr />
<p><em><img class="wtf_imgfloatright" style="float: right; margin: 5px; width: 197px; height: 189px" alt="" src="http://img.TheDailyWTF.com/Images/200611/cashregister.jpg" />We're in a bit of a jam</em>, an email to the support desk read, <em>we accidentally ran an entire day's worth of transactions for 11 Oct 2009 instead of 11 Oct 2006. Can you fix this?</em></p>
<p>In the world of retail, it's not an uncommon practice to &#34;open&#34; for a business date that is not the current date. Think of 24-hour stores that want to &#34;close&#34; the day at 11:00 PM instead of midnight, or the cases when the registers are out of commission. Whatever the reason, it's a feature that customers want and a feature that <strong>T. Ferguson's</strong> company provides in their point-of-sale systems.</p>
<p>Obviously, there's no way for the software to know if a different date is purposeful or accidental; all it can do is default the &#34;open&#34; date to the current date and hope that someone would notice a mistake on the registers, receipts, etc. before the day was &#34;closed&#34; out. The support email was the first &#34;problem&#34; that T.'s company had with this feature since first offering fifteen years ago.</p>
<p>Despite having a nation-wide chain of stores, with each bringing in nearly $500,000/day in sales, this company decided not to go for the extended-hours support contract. With no one to call at 9:30 PM for support, the shift manager ignored the incorrect date and &#34;closed out&#34; the store's point-of-sale system. He left a note for the general manager, who promptly emailed support the next morning.</p>
<p>The general manager also called the support line at 9:01 AM -- just after it opened -- to make sure they got the email. He was very concerned that the error would gravely impact their October reports, forecasting reports, inventory, and just about anything else that relied on that day's transactional data. The support rep assured the general manager that the development team was working on a way to fix the issue.</p>
<p>From a programming perspective, this was actually an easy thing to fix. All of the daily transactions are stored in a single database table, so a simple UPDATE script and a &#34;re-close&#34; should do the trick. They reproduced the &#34;problem&#34; on a test machine, ran the fix script, and watched it worked like a charm. T. called up the store to let the manager know how they planned to resolve the issue.</p>
<p>&#34;But,&#34; the manager asked, &#34;what about when someone makes a return? Their printed receipt will have a different transaction date. Won't the register refuse the return?&#34;</p>
<p>&#34;Nope,&#34; T. replied, &#34;we only use the store number, register number, and transaction number when we validate the receipts for returns.&#34;</p>
<p>&#34;Sounds great,&#34; the manager said in a much less stressful tone, &#34;what a relief! I was really worried about how bad this would be.&#34;</p>
<p>The fix was sent to a technician to fix the problem on site. Before running the script, he noticed one thing that the development team missed: not only was there only one day of faulty data in the database, there was only one day. Period. All the transactional history was gone!</p>
<p>That, of course, would present a problem when trying to process a return. Or receiving merchandise that was ordered in the past. Or verifying an employee's time clock punches. Or tracking special-ordered items. Or knowing whether the store is on pace to meet its weekly sales goal. Or just about any activity of any consequence in retail that ISN'T selling merchandise.</p>
<p>The technician reported this back to the development team. After a bit of digging, they figured out why only the one day of data was left: part of the register closing code purges data that's over three years old. And how does one find three-year old data when the system clock is not a reliable indicator? Why, by taking the business date of the newest transaction and subtracting three years, of course!</p>
<p>The manager's day was about to get much, much worse.<br />
&#160;</p>
<p><a href="http://feedads.g.doubleclick.net/~a/OsdPnAEq4VRa0nFsKGyOezugxqo/0/da"><img src="http://feedads.g.doubleclick.net/~a/OsdPnAEq4VRa0nFsKGyOezugxqo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OsdPnAEq4VRa0nFsKGyOezugxqo/1/da"><img src="http://feedads.g.doubleclick.net/~a/OsdPnAEq4VRa0nFsKGyOezugxqo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=ImMQcqpIx3w:5THfNf4WbYw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/ImMQcqpIx3w" height="1" width="1"/>]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Classic-WTF-Dont-Worry,-Well-Fix-It!.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classic WTF: Keepin&#8217; It Cool</title>
		<link>http://thedailywtf.com/Articles/Classic-WTF-Keepin-It-Cool.aspx</link>
		<comments>http://thedailywtf.com/Articles/Classic-WTF-Keepin-It-Cool.aspx#comments</comments>
		<pubDate>Thu, 05 Nov 2009 14:00:00 +0000</pubDate>
		<dc:creator>Alex Papadimoulis</dc:creator>
				<category><![CDATA[Feature Articles]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[ACH]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[alert]]></category>
		<category><![CDATA[anything]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Bank]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[batch script]]></category>
		<category><![CDATA[blast]]></category>
		<category><![CDATA[bomb]]></category>
		<category><![CDATA[chiller]]></category>
		<category><![CDATA[city]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[company directory]]></category>
		<category><![CDATA[conditioner]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[core processes]]></category>
		<category><![CDATA[couple]]></category>
		<category><![CDATA[crew]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[downtown]]></category>
		<category><![CDATA[elevator]]></category>
		<category><![CDATA[errant]]></category>
		<category><![CDATA[fact]]></category>
		<category><![CDATA[fire]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[general ledger]]></category>
		<category><![CDATA[giant robot]]></category>
		<category><![CDATA[guard]]></category>
		<category><![CDATA[guy]]></category>
		<category><![CDATA[havoc]]></category>
		<category><![CDATA[heat]]></category>
		<category><![CDATA[HVAC]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Keepin]]></category>
		<category><![CDATA[Ledger]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[Mark]]></category>
		<category><![CDATA[mark felt]]></category>
		<category><![CDATA[maximum]]></category>
		<category><![CDATA[maximum amounts]]></category>
		<category><![CDATA[Moments]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[monitoring server]]></category>
		<category><![CDATA[morning]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[norm]]></category>
		<category><![CDATA[nothing]]></category>
		<category><![CDATA[Notification]]></category>
		<category><![CDATA[notification alert]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[October]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[page]]></category>
		<category><![CDATA[pager]]></category>
		<category><![CDATA[part]]></category>
		<category><![CDATA[Phil]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[rare occasions]]></category>
		<category><![CDATA[receiving]]></category>
		<category><![CDATA[redundancy]]></category>
		<category><![CDATA[remote access server]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[Room]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[security guard]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server room]]></category>
		<category><![CDATA[sign]]></category>
		<category><![CDATA[state]]></category>
		<category><![CDATA[story]]></category>
		<category><![CDATA[summer]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[support administrator]]></category>
		<category><![CDATA[sweating]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[team]]></category>
		<category><![CDATA[thing]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[transfer]]></category>
		<category><![CDATA[transfer application]]></category>
		<category><![CDATA[visit]]></category>
		<category><![CDATA[wire]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[wreaking havoc]]></category>

		<guid isPermaLink="false">6702</guid>
		<description><![CDATA[<em>Keepin' It Cool was originally published on October 4, 2006</em>
<hr /><p>A few years ago, <strong>Phil</strong> was working as a developer on a wire transfer application at a large bank. To make sure that nothing technical would prevent the bank from extracting maximum amounts of money from its operations, every part of their system had a redundancy with fast failovers and clustering. In fact, there was even one server (and a backup of that server) whose only function was to monitor the other server and send notifications if anything fell out of the operations norm.</p>
<p>When a system or process failed, the monitoring server would page the on-call support administrator, who would then log in and restore the errant system to its rightful state. On rare occasions, an actual visit to the server room was required.</p>
<p>One summer day, at about two in the morning, the on-call administrator (Mark) was awakened with a Critical Notification Alert that a couple of core processes -- such as the ACH Batch Script and General Ledger Job -- had crashed. Moments later, he was paged again, this time with notification that the fail-over processes had failed.</p>
<p>As Mark attempted to log in to the process control cluster, he received another Critical Notification Alert. And then another. And then several more. The remote access server wasn't responding to his log-in attempts, so Mark got dressed and headed downtown.</p>
<p>About halfway to work, his pager stopped receiving alerts altogether. That was a pretty bad sign, so he dialed into the office to access the company directory and get the numbers of secondary on-call administrators. But the phone lines were dead, too, which could only mean one thing: a bomb, a fire, or a giant robot wreaking havoc throughout the city.</p>
<p>When Mark arrived at work, things were very quiet. He nodded at the security guard and took the elevator to the server room. Mark approached the server room and saw that the automatic secure doors were propped open. As he entered the room, Mark felt a blast of heat and noticed two maintenance employees, both sweating profusely, working on the air conditioner units. This seemed a little strange since Mark should have been the one to call the maintenance crew out there, so he asked how they knew that the air conditioner failed.</p>
<blockquote>
<p><strong>HVAC Guy</strong>: It didn't fail. We're just changing the chiller bars and doing some other preventive maintenance.<br />
<strong>Mark</strong>: But we've got two air conditioners in here, why are they both down?<br />
<strong>HVAC Guys</strong>: We figured it'd be easier to do them both at the same time. Why, is there a problem with that?</p>
</blockquote>
<p>Mark and his team of network administrators spent the next 36 hours or so rebuilding and restoring each server, its backup, and its backup's backup. And as for Phil, the developer who submitted this story, he got the day off. <br />
&#160;</p>
<p><a href="http://feedads.g.doubleclick.net/~a/0kPREE3FJD2fNgum8TlvMCHvqpM/0/da"><img src="http://feedads.g.doubleclick.net/~a/0kPREE3FJD2fNgum8TlvMCHvqpM/0/di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/0kPREE3FJD2fNgum8TlvMCHvqpM/1/da"><img src="http://feedads.g.doubleclick.net/~a/0kPREE3FJD2fNgum8TlvMCHvqpM/1/di" border="0"></img></a></p><div class="feedflare">
<a href="http://syndication.thedailywtf.com/~ff/TheDailyWtf?a=N7LDuOzRzsM:wk4MnzBbWTU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/N7LDuOzRzsM" height="1">]]></description>
		<wfw:commentRss>http://thedailywtf.com/Articles/Classic-WTF-Keepin-It-Cool.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.462 seconds -->
