<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
	<channel>
		<title>The Daily WTF</title> 
		<link>http://thedailywtf.com/</link> 
		<description>Curious Perversions in Information Technology</description> 

		<geo:lat>41.36995</geo:lat><geo:long>-81.862591</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/TheDailyWtf" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: Synchronization by Modal</title> 
			<link>http://thedailywtf.com/Articles/Synchronization-by-Modal.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Mon, 13 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6624</guid> 
			<description>&lt;p&gt;&lt;b&gt;Bryan D&lt;/b&gt; recently started a new contract with a large company that was developing a rich client application with all the latest buzzword technologies: WCF, WPF, BDD, etc. He was brought on to clean up the code and help figure out why the middle tier wasn&amp;rsquo;t so &amp;ldquo;middle&amp;rdquo;. It actually lived in the UI.&lt;/p&gt;
&lt;p&gt;The middle tier seemed pretty straight forward: it was a collection of classes that were designed to be exposed as webservices and then called by the UI. Each service class implemented an abstract Interface that had a pretty straightforward set of method.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
public interface IFindCustomerService
{
    ... snip ...

    IList&amp;lt;ICustomer&amp;gt; ExecuteFindCustomers(string surname);
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Many of the implementation classes, however had modal dialog window contained within. Figuring that to be the cause of the tight coupling between layers, Bryan ripped out the dialogs from the middle tier and watched with horror as the application crashed and burned.&lt;/p&gt;
&lt;p&gt;The problem was that all of the methods on the service were returning null. Digging further Bryan learned that, although the methods appeared synchronous, they used asynchronous calls... and modal dialogs to hold everything together.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
public class FindCustomerService : IFindCustomerService
{
    private ProgressDialog progressDialog;

    ... snip ...

    public IList&amp;lt;ICustomer&amp;gt; ExecuteFindCustomers(string surname)
    {
        dataProxy.OnAsyncCompleted += OnFindCustomerCompleted;
        dataProxy.BeginFindCustomers(surname);
        progressDialog.ShowDialog();    // this call blocks ...
        
        return Customers;
    }

    private void OnFindCustomersCompleted(object sender, EventArgs e)
    {
        Customers = dataProxy.EndFindCustomers();
        progressDialog.Close();        // ... until this call closes the dialog
        dataProxy.OnAsyncCompleted -= OnFindCustomersCompleted;
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, instead of the UI presenting the user with a &amp;quot;please wait...&amp;quot; dialog when a service was called, it relied on the service to display the dialog to the user. Needless to say, the code has since been substantially restructured...&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6624"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6624&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/twazVt0U1FyvgJ8n8g0zoPmPD_8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/twazVt0U1FyvgJ8n8g0zoPmPD_8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/twazVt0U1FyvgJ8n8g0zoPmPD_8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/twazVt0U1FyvgJ8n8g0zoPmPD_8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=HQlWz10VlnE:F_Q0wuUd3IA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=HQlWz10VlnE:F_Q0wuUd3IA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=HQlWz10VlnE:F_Q0wuUd3IA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/HQlWz10VlnE" height="1" width="1"/&gt;</description> 
			<slash:comments>40</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Synchronization-by-Modal.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Sponsor Appreciation, Flushing Logic, Estmate Problems, and More</title> 
			<link>http://thedailywtf.com/Articles/Sponsor-Appreciation,-Flushing-Logic,-Estmate-Problems,-and-More.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Fri, 10 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6622</guid> 
			<description>&lt;p&gt;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&amp;rsquo;m sure you&amp;rsquo;ll find some pretty cool products and services built by like-minded developers and IT professionals.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;table&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=324&amp;amp;AdvertiserID=48&amp;amp;CampaignID=123&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=303559"&gt;&lt;img border="0" alt="Microsoft/web" src="http://img.thedailywtf.com/images/200904/microsoft.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=324&amp;amp;AdvertiserID=48&amp;amp;CampaignID=123&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=303559" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=324&amp;amp;AdvertiserID=48&amp;amp;CampaignID=123&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=303559"&gt;Microsoft/web&lt;/a&gt;&lt;/strong&gt; - We teamed up with Microsoft/web to answer a burning question: with the dizzying array of languages, frameworks, tools, and technologies, what do &lt;em&gt;you&lt;/em&gt; think about web development? It's all finished! Just &lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=324&amp;amp;AdvertiserID=48&amp;amp;CampaignID=123&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=303559"&gt;let us know&lt;/a&gt; if you'd like a copy!&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;!--
        &lt;tr&gt;
            &lt;td colspan="3"&gt;
            &lt;h3 style="padding-bottom: 2px; background-color: #ab332b; margin: 0px; padding-left: 2px; padding-right: 2px; color: #fff; padding-top: 2px"&gt;Develop Better &amp;amp; Smarter&lt;/h3&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=369&amp;amp;AdvertiserID=52&amp;amp;CampaignID=140&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=882724"&gt;&lt;img border="0" alt="Business of Software 2009" src="http://img.thedailywtf.com/images/200905/bos.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=369&amp;amp;AdvertiserID=52&amp;amp;CampaignID=140&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=882724" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=369&amp;amp;AdvertiserID=52&amp;amp;CampaignID=140&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=882724"&gt;Business of Software 2009&lt;/a&gt;&lt;/strong&gt; - interested in building long-term, sustainable and profitable software businesses? Then you &lt;em&gt;need&lt;/em&gt; to go to Business of Software 2009. I went &lt;a href="http://www.businessofsoftware.org/prevyear.aspx"&gt;last year&lt;/a&gt; and will definitely be there in November to learn from speakers like Joel Spolsky, Geoffrey Moore, Donald Norman, Paul Graham, Ryan Carson and many others.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=368&amp;amp;AdvertiserID=50&amp;amp;CampaignID=139&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=473957"&gt;&lt;img border="0" alt="S&amp;ucirc;nnet Beskerming" src="http://img.thedailywtf.com/images/200905/beskerming.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=368&amp;amp;AdvertiserID=50&amp;amp;CampaignID=139&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=473957" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=368&amp;amp;AdvertiserID=50&amp;amp;CampaignID=139&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=473957"&gt;S&amp;ucirc;nnet Beskerming&lt;/a&gt;&lt;/strong&gt; - focued and driven to provide Information Security services. Whether it's through Security Patch Briefing Packs (ever wonder what is in those security patches that your system is bugging you to install?) or Site Guardian (vulnerabilities, attack techniquies, etc. against your website software), S&amp;ucirc;nnet Beskerming can helps you improve your Information Security position today.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
--&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;
            &lt;h3 style="padding-bottom: 2px; background-color: #ab332b; margin: 0px; padding-left: 2px; padding-right: 2px; color: #fff; padding-top: 2px"&gt;Decent Diversions&lt;/h3&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=435&amp;amp;AdvertiserID=59&amp;amp;CampaignID=155&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=225334"&gt;&lt;img border="0" alt="Comic Reader Mobi" src="http://img.thedailywtf.com/images/200907/comicreader.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" width="1" height="1" alt="" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=435&amp;amp;AdvertiserID=59&amp;amp;CampaignID=155&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=225334" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=435&amp;amp;AdvertiserID=59&amp;amp;CampaignID=155&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=225334"&gt;Comic Reader Mobi&lt;/a&gt;&lt;/strong&gt; - I'm not a big comic book guy myself,but Comic Reader Mobi looks like a good way to start. Simply tap any of the text bubbles to magnify; the app automatically detects the size of the text bubble and magnifies that text alone. You can also magnify a small area without expanding the entire page. It is an extremely handy feature that allows you to see the whole page and read the text without zooming in and out.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;
            &lt;h3 style="padding-bottom: 2px; background-color: #ab332b; margin: 0px; padding-left: 2px; padding-right: 2px; color: #fff; padding-top: 2px"&gt;Cool Tools&lt;/h3&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=328&amp;amp;AdvertiserID=24&amp;amp;CampaignID=128&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=982281"&gt;&lt;img border="0" alt="Splunk" src="http://img.thedailywtf.com/images/200810/splunk.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=328&amp;amp;AdvertiserID=24&amp;amp;CampaignID=128&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=982281" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=328&amp;amp;AdvertiserID=24&amp;amp;CampaignID=128&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=982281"&gt;Splunk&lt;/a&gt;&lt;/strong&gt; - Search, navigate, alert and report on all your IT data in real time. Logs, configurations, messages, traps and alerts, script, code, metrics and more. If a machine can generate it -- Splunk can eat it.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=370&amp;amp;AdvertiserID=53&amp;amp;CampaignID=141&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=954870"&gt;&lt;img border="0" alt="Caretta" src="http://img.thedailywtf.com/images/200905/Caretta.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=370&amp;amp;AdvertiserID=53&amp;amp;CampaignID=141&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=954870" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=370&amp;amp;AdvertiserID=53&amp;amp;CampaignID=141&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=954870"&gt;Caretta Software&lt;/a&gt;&lt;/strong&gt; - makers of GUI Design Studio, a specialized software prototyping and User Interface design tool for Desktop, Mobile and Web Applications. Quick and Easy to use, with No Coding! Why not give the 30-day trial a shot?&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=372&amp;amp;AdvertiserID=51&amp;amp;CampaignID=143&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=224535"&gt;&lt;img border="0" alt="TechSmith" src="http://img.thedailywtf.com/images/200905/TechSmith.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=372&amp;amp;AdvertiserID=51&amp;amp;CampaignID=143&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=224535" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=372&amp;amp;AdvertiserID=51&amp;amp;CampaignID=143&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=224535"&gt;TechSmith&lt;/a&gt;&lt;/strong&gt; - the world&amp;rsquo;s leading provider of screen capture and recording software for individual and professional use. Personally, I can't live without &lt;a href="http://www.techsmith.com/screen-capture.asp"&gt;SnagIt&lt;/a&gt;, and am quickly getting addicted to Camtasia. The &lt;a href="http://www.jingproject.com/"&gt;Jing project&lt;/a&gt; is also pretty interesting for instant sharing.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=148&amp;amp;AdvertiserID=5&amp;amp;CampaignID=60&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=50765"&gt;&lt;img border="0" alt="SlickEdit" src="http://img.thedailywtf.com/images/200807/slickedit.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=148&amp;amp;AdvertiserID=5&amp;amp;CampaignID=60&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=50765" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=148&amp;amp;AdvertiserID=5&amp;amp;CampaignID=60&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=50765"&gt;SlickEdit&lt;/a&gt;&lt;/strong&gt; - makers of that very-impressive code editor and some pretty neat Eclipse and VisualStudio.NET tools and add-ins,&amp;nbsp;some of which (Gadgets) are free. Check out this &lt;a href="http://visualstudiohacks.com/screencasts/addins/slickedit-versioning-toolbox-screencast/"&gt;short video&lt;/a&gt; highlighting just one of SlickEdit's Visual Studio integration features.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=265&amp;amp;AdvertiserID=35&amp;amp;CampaignID=103&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=510096"&gt;&lt;img border="0" alt="Software Verification" src="http://img.thedailywtf.com/images/200811/softwareVerification.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=265&amp;amp;AdvertiserID=35&amp;amp;CampaignID=103&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=510096" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=265&amp;amp;AdvertiserID=35&amp;amp;CampaignID=103&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=510096"&gt;Software Verification&lt;/a&gt;&lt;/strong&gt; - 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.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;
            &lt;h3 style="padding-bottom: 2px; background-color: #ab332b; margin: 0px; padding-left: 2px; padding-right: 2px; color: #fff; padding-top: 2px"&gt;Great Components&lt;/h3&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;!--
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=330&amp;amp;AdvertiserID=49&amp;amp;CampaignID=130&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=817336"&gt;&lt;img border="0" alt="Tall Components" src="http://img.thedailywtf.com/images/200904/tc-logo.gif" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=330&amp;amp;AdvertiserID=49&amp;amp;CampaignID=130&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=817336" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=330&amp;amp;AdvertiserID=49&amp;amp;CampaignID=130&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=817336"&gt;Tall Components&lt;/a&gt;&lt;/strong&gt; - makers of PDFKit.NET, a 100% managed .NET component for, reading, creating and manipulating PDF documents and PDF forms on the fly. You can also split, append, stamp, and encrypt PDF documents and forms. If you have to do anything with PDF, you should definitely download the free trial.&lt;/td&gt;
        &lt;/tr&gt;

        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=325&amp;amp;AdvertiserID=47&amp;amp;CampaignID=124&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=930976"&gt;&lt;img border="0" alt="Data Springs" src="http://img.thedailywtf.com/images/200904/datasprings.gif" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=325&amp;amp;AdvertiserID=47&amp;amp;CampaignID=124&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=930976" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=325&amp;amp;AdvertiserID=47&amp;amp;CampaignID=124&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=930976"&gt;Data Springs&lt;/a&gt;&lt;/strong&gt; - offers a whole bunch of DotNetNuke modules and SharePoint WebParts. In addition to their ever-growing list of complementary products, they can also help with just about any of your other DotNetNuke needs or integrations.&lt;/td&gt;
        &lt;/tr&gt;
--&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=151&amp;amp;AdvertiserID=26&amp;amp;CampaignID=63&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=588968"&gt;&lt;img border="0" alt="Mindfusion" src="http://img.thedailywtf.com/images/200810/Mindfusion.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=151&amp;amp;AdvertiserID=26&amp;amp;CampaignID=63&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=588968" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=151&amp;amp;AdvertiserID=26&amp;amp;CampaignID=63&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=588968"&gt;MindFusion&lt;/a&gt;&lt;/strong&gt; - a great source for flow-charting and diagramming components for a variety of platforms including .NET, WPF, ActiveX and Swing&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=371&amp;amp;AdvertiserID=54&amp;amp;CampaignID=142&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=422502"&gt;&lt;img border="0" alt="div elements" src="http://img.thedailywtf.com/images/200905/divelements.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=371&amp;amp;AdvertiserID=54&amp;amp;CampaignID=142&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=422502" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=371&amp;amp;AdvertiserID=54&amp;amp;CampaignID=142&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=422502"&gt;Divelements&lt;/a&gt;&lt;/strong&gt; - developers of WinForms, WPF, and Silverlight controls. Easily integrate the Office 2007 Ribbon Interface, Dockable Windows, and several other interfaces. All products are available with a 30-day trial.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=434&amp;amp;AdvertiserID=60&amp;amp;CampaignID=154&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=757830"&gt;&lt;img border="0" alt="Atlassian" src="http://img.thedailywtf.com/images/200907/Atlassian.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" width="1" height="1" alt="" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=434&amp;amp;AdvertiserID=60&amp;amp;CampaignID=154&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=757830" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=434&amp;amp;AdvertiserID=60&amp;amp;CampaignID=154&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=757830"&gt;Atlassian&lt;/a&gt;&lt;/strong&gt; - the folks behind JIRA (which, in turn inspired &lt;a href="http://thedailywtf.com/Articles/Manual-JIRA-.aspx"&gt;Manual JIRA&lt;/a&gt;) wanted to let you know that they're not a &amp;quot;follow the rules&amp;quot; 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.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;
            &lt;h3 style="padding-bottom: 2px; background-color: #ab332b; margin: 0px; padding-left: 2px; padding-right: 2px; color: #fff; padding-top: 2px"&gt;Solid Hosting&lt;/h3&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=367&amp;amp;AdvertiserID=55&amp;amp;CampaignID=138&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=326672"&gt;&lt;img border="0" alt="go grid" src="http://img.thedailywtf.com/images/200905/gogrid.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=367&amp;amp;AdvertiserID=55&amp;amp;CampaignID=138&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=326672" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=367&amp;amp;AdvertiserID=55&amp;amp;CampaignID=138&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=326672"&gt;Go Grid&lt;/a&gt;&lt;/strong&gt; - the first multi-tier, cloud computing platform that allows you to manage your cloud hosting infrastructure completely on demand through an intuitive, web interface. Get powerful dedicated resources on a cloud computing architecture that you can buy as you need instead of deploying servers and building complex load balanced networks. Get a $50 credit when signing up!&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=329&amp;amp;AdvertiserID=46&amp;amp;CampaignID=129&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=893147"&gt;&lt;img border="0" alt="Cushy CMS" src="http://img.thedailywtf.com/images/200904/cushycms.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=329&amp;amp;AdvertiserID=46&amp;amp;CampaignID=129&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=893147" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=329&amp;amp;AdvertiserID=46&amp;amp;CampaignID=129&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=893147"&gt;Cushy CMS&lt;/a&gt;&lt;/strong&gt; - a hosted CMS built from the ground up with ease of use in mind. It's &lt;em&gt;incredibly&lt;/em&gt; simple to use: no PHP or ASP required. If you can add CSS classes to HTML tags then you can implement CushyCMS. And best of all, it's free. Spend a few minutes and try it out!&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=91&amp;amp;AdvertiserID=13&amp;amp;CampaignID=37&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=623197"&gt;&lt;img border="0" alt="SoftLayer" src="http://img.thedailywtf.com/images/200808/softlayer.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=91&amp;amp;AdvertiserID=13&amp;amp;CampaignID=37&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=623197" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=91&amp;amp;AdvertiserID=13&amp;amp;CampaignID=37&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=623197"&gt;SoftLayer&lt;/a&gt;&lt;/strong&gt; - 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)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;!--
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=314&amp;amp;AdvertiserID=43&amp;amp;CampaignID=120&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=68380"&gt;&lt;img border="0" alt="Peer 1" src="http://img.thedailywtf.com/images/200904/peer1.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=314&amp;amp;AdvertiserID=43&amp;amp;CampaignID=120&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=68380" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://thedailywtf.com/tizes/a.aspx?ZoneID=0&amp;amp;BannerID=314&amp;amp;AdvertiserID=43&amp;amp;CampaignID=120&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=68380"&gt;Peer 1&lt;/a&gt;&lt;/strong&gt; - 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&amp;trade;backbone, PEER 1 delivers one of the highest server performance and network outputs in the industry.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;!--
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="BMP_LINK"&gt;&lt;img alt="SPN_NAME" border="0" src="http://img.thedailywtf.com/images/200811/SPN_NAME.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img src="BMP_IMGLINK" width="1" height="1" border="0"&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="BMP_LINK"&gt;SPN_NAME&lt;/a&gt;&lt;/strong&gt; - TODO&lt;/td&gt;
        &lt;/tr&gt;
--&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;And now, back to our regularly, completely off-topic scheduled program.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPPic3"&gt;&lt;/a&gt;&lt;b&gt;Maxim K&lt;/b&gt; spotted this waterless flushing urinal in Botany Bay National Park, Kurnell, NSW.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPPic4"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/flushing-waterless-urinal.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic5"&gt;&lt;/a&gt;&amp;quot;If they're standing behind it,&amp;quot; &lt;b&gt;Rick Xaver&lt;/b&gt; writes, &amp;quot;they're doing it wrong.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic5"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/lowes_wrong.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic1"&gt;&lt;/a&gt;&amp;quot;I spotted this near Dayton, OH,&amp;quot; writes &lt;b&gt;Roberto Sanchez&lt;/b&gt;, &amp;quot;Incidentally, the same typo appeared on the driver's door, but traffic was moving a little too quickly for me to be able to manage a second picture.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic1"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/200905041624000.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic2"&gt;&lt;/a&gt;&amp;quot;I am part of the emergency response division here at work,&amp;quot; &lt;b&gt;N.A.&lt;/b&gt; wrote, &amp;quot;while planning for outbreaks, plagues, and bioterrorist attacks, we tested out some of the body bags. This one was terrible and, once the heat got to it, the bag started to stretch and give. Out of curiosity, I checked the tag and was surpried at the company's web address.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic2"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/bodybag.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic3"&gt;&lt;/a&gt;&amp;quot;I found this from my (exam-board approved) IT textbook while revising for an upcoming AS exam,&amp;quot; &lt;b&gt;Ross Masters&lt;/b&gt;, &amp;quot;Thankfully I had alternate notes for this section.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic3"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/cpu.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic4"&gt;&lt;/a&gt;&lt;b&gt;Carl Witthoft&lt;/b&gt; was excited: &amp;quot;Boy did I strike it rich with this investment account!&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic4"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/Etrade1cent.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic5"&gt;&lt;/a&gt;&amp;quot;You can use the internet all day for free,&amp;quot; &lt;b&gt;David Kowis&lt;/b&gt; wrote, &amp;quot;or pay $2.95 for 15 minutes ($0.25 for each additional minute). What a deal!&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic5"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/FreeInternet.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic1"&gt;&lt;/a&gt;&amp;quot;Water flakes?&amp;quot; &lt;b&gt;Sam wondered&lt;/b&gt;, &amp;quot;so.... the fish food is snow?&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic1"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/H2O_Flakes_90g.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic3"&gt;&lt;/a&gt;&amp;quot;Assuming an eight character password,&amp;quot; &lt;b&gt;Bob&lt;/b&gt; notes, &amp;quot;they've reduced the key-space by 15 orders of magnitude. Brute-forcing my password would take a few hours on a quad-core.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic3"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/IMG00004.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic2"&gt;&lt;/a&gt;&amp;quot;Apparently,&amp;quot; writes &lt;b&gt;Kevin&lt;/b&gt;, &amp;quot;there was just no way they could say 'closed'?&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic2"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/holiday.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic4"&gt;&lt;/a&gt;&amp;quot;I tried to check hours of my apartment management office,&amp;quot; &lt;b&gt;Konstantin&lt;/b&gt; wrote, you can not argue with a logic like that.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic4"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/IMGP7769.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPPic1"&gt;&lt;/a&gt;&amp;quot;I got a phone call one afternoon, and this wa the called id information,&amp;quot; &lt;b&gt;Rhyss&lt;/b&gt; writes, &amp;quot;Needless to say, I decided not to pick it up.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPPic1"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/photo.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPPic2"&gt;&lt;/a&gt;&amp;quot;This is the sign outside of our wiring closet,&amp;quot; &lt;b&gt;BMP&lt;/b&gt; wrote, &amp;quot;it also doubles as the men&amp;rsquo;s bathroom.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPPic2"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/Pic1.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPPic3"&gt;&lt;/a&gt;&amp;quot;Caution!&amp;quot;, &lt;b&gt;Hae Yu&lt;/b&gt; warns, &amp;quot;Don't Smoking!&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPPic3"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/s/Sep06_002.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6622"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6622&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jFE3wjAR8-3F3N9WmOIwIKjsVqw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jFE3wjAR8-3F3N9WmOIwIKjsVqw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jFE3wjAR8-3F3N9WmOIwIKjsVqw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jFE3wjAR8-3F3N9WmOIwIKjsVqw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=WFAuTi-uR7A:vkdgW_d27fY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=WFAuTi-uR7A:vkdgW_d27fY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=WFAuTi-uR7A:vkdgW_d27fY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/WFAuTi-uR7A" height="1" width="1"/&gt;</description> 
			<slash:comments>80</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Sponsor-Appreciation,-Flushing-Logic,-Estmate-Problems,-and-More.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Slow, Difficult to Code, and Buggy</title> 
			<link>http://thedailywtf.com/Articles/Slow,-Difficult-to-Code,-and-Buggy.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Thu, 09 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6621</guid> 
			<description>&lt;p&gt;Back in 2006, &lt;b&gt;Steve&lt;/b&gt; worked as a developer at mid-sized financial services firm. Like many organizations with central IT operations, departments within Steve&amp;rsquo;s company had the option to &amp;ldquo;buy&amp;rdquo; application development services from IT, or use an outside vendor for their business software needs, provided that the vendor&amp;rsquo;s software met IT&amp;rsquo;s security and technical requirements.&lt;/p&gt;
&lt;p&gt;Generally, getting IT&amp;rsquo;s approval was easy: the purchaser just needed to set up a meeting between the vendor and an &amp;ldquo;integration services&amp;rdquo; developer on Steve&amp;rsquo;s team, and then wait a few days for approval. But every now and then &amp;ndash; such as when the HR department hired GlobalComp to build a web portal &amp;ndash; things get a bit tricky.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;The GlobalComp Review&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;After the GlobalComp sales rep gave his spiel about how wonderful and innovative their web portal technology was, Steve opened with a softball question. &amp;ldquo;Is it secure?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Of course it&amp;rsquo;s secure,&amp;rdquo; the rep said, &amp;ldquo;we at GlobalComp take security very seriously. In fact, our pages are delivered over Secure Socket Lay&amp;mdash;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Wait a sec,&amp;rdquo; Steve, who had been playing around with the web portal during the presentation, cut him off. &amp;ldquo;I think I just broke into your admin console.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Red-faced in embarrassment, the GlobalComp rep stumbled through an apology. It was clear that the developers had never anticipated someone typing &lt;code&gt;' OR ''='&lt;/code&gt; in the password field, and Steve thought it&amp;rsquo;d be a good idea to do a code review to see what else they had missed. The rep hesitantly agreed and set up another meeting.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;A Code Tour&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;Before Steve was permitted to even talk to a developer at GlobalComp, they had him sign a lengthy Non-Disclosure Agreement. As an added security measure, Steve could only review the code while the immaculately-dressed Dave, GlobalComp&amp;rsquo;s lead developer, watched him. &amp;ldquo;You&amp;rsquo;d be surprised,&amp;rdquo; Dave said in a serious tone, &amp;ldquo;there are a lot people who would steal our software ideas.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Steve&amp;rsquo;s first port of call was login.asp. But it wasn&amp;rsquo;t the security snafus or the Microsoft FrontPage meta-tags that caught his eye. Not only were they using Access, but they had come up with a rather interesting way of caching huge amounts (400K+) of user-specific information. They used the ASP Session object.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
&amp;lt;%
set conn=Server.CreateObject(&amp;quot;ADODB.Connection&amp;quot;)
conn.Provider=&amp;quot;Microsoft.Jet.OLEDB.4.0&amp;quot;
conn.Open &amp;quot;c:\inetpub\wwwroot\database.mdb&amp;quot;
set rs = Server.CreateObject(&amp;quot;ADODB.recordset&amp;quot;)
rs.Open &amp;quot;SELECT * FROM Users WHERE Username = '&amp;quot; _
    &amp;amp; Username &amp;amp; &amp;quot;' AND Password = '&amp;quot; &amp;amp; Password &amp;amp; &amp;quot;'&amp;quot;, conn
do until rs.EOF
session(&amp;ldquo;USERNAME&amp;rdquo;) = rs.Fields(&amp;ldquo;username&amp;rdquo;).value
session(&amp;ldquo;COMPANY&amp;rdquo;) = rs.Fields(&amp;ldquo;company&amp;rdquo;).value
session(&amp;ldquo;LOCATION&amp;rdquo;) = rs.Fields(&amp;ldquo;location&amp;rdquo;).value
session(&amp;ldquo;ADDRESS1&amp;rdquo;) = rs.Fields(&amp;ldquo;address1&amp;rdquo;).value
session(&amp;ldquo;ADDRESS2&amp;rdquo;) = rs.Fields(&amp;ldquo;address2&amp;rdquo;).value
session(&amp;ldquo;ADDRESS3&amp;rdquo;) = rs.Fields(&amp;ldquo;address3&amp;rdquo;).value
session(&amp;ldquo;ADDRESS4&amp;rdquo;) = rs.Fields(&amp;ldquo;address4&amp;rdquo;).value
session(&amp;quot;HTML_BLOCK_1&amp;quot;) = rs.Fields(&amp;quot;html1&amp;quot;).value
&amp;hellip;180 columns later&amp;hellip;
session(&amp;ldquo;YET_ANOTHER_FIELD&amp;rdquo;) = Rs.Fields(&amp;ldquo;yet_another_field&amp;rdquo;).value
Rs.MoveNext
loop
rs.close
conn.close
%&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;ldquo;I can&amp;rsquo;t help but notice that this is in ASP,&amp;rdquo; Steve said to Dave. &amp;ldquo;I&amp;rsquo;m curious: why not .NET? Do you have a lot of ASP libraries that you&amp;rsquo;re reusing?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;It&amp;rsquo;s 2006,&amp;rdquo; Dave snapped back, &amp;ldquo;not 2015. Everyone knows that .NET hasn&amp;rsquo;t really taken off yet. It&amp;rsquo;s slow, difficult to code, and very buggy. Maybe in a few years we&amp;rsquo;ll consider it, but until then, ASP is far more quicker and powerful.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Steve quizzically raised an eyebrow, &amp;ldquo;all right. But can you elaborate on what you&amp;rsquo;re doing with the session over here?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Dave smiled. &amp;ldquo;There are many clever things we developed to optimize the performance of the product. This is just one example.&amp;rdquo; v&amp;ldquo;For optimization,&amp;rdquo; Steve commented, &amp;ldquo;wouldn&amp;rsquo;t it have made sense to go with SQL Server? This portal is meant to be used by thousands of users across the country. Do you think Access is up to the job?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;What&amp;rsquo;s wrong with Access?&amp;rdquo; Dave defensively questioned. &amp;ldquo;When I was at Accenture, we used it all the time?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Ummm,&amp;rdquo; Steve responded, &amp;ldquo;you&amp;rsquo;re telling me that Accenture routinely passes over databases like Oracle and SQL Server, and chooses instead to deploy their solutions using Microsoft Access?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Yep,&amp;rdquo; Dave nodded, &amp;ldquo;they certainly do!&amp;rdquo;&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;The Final Verdict&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;After spending a couple hours with Dave, Steve had learned more than enough to write his review report. &amp;ldquo;In light of the numerous performance, security, and data-integrity issues,&amp;rdquo; the executive summary read, &amp;ldquo;we do not approve GlobalComp&amp;rsquo;s web portal software for use in our production environments.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It was the first time that that Steve, or anyone else in his department, had ever given a non-approval for vendor software. They felt relieved that they had successfully acted as the gatekeeper of bad software.&lt;/p&gt;
&lt;p&gt;This was also the first time that Steve learned the consequence of rejecting a vendor. The HR department huffed, puffed, and angrily protested to the CTO. The CTO then overrode the rejection and GlobalComp&amp;rsquo;s software was purchased anyway. C&amp;rsquo;est la vie.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;hr /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Slow, Difficult to Code, and Buggy was originally published in Alex's DevDisasters column in the May, 2009 issue of Visual Studio Magazine. VSM is a &lt;a href="https://subscribe.1105pubs.com/sub/VO?WP=NEWFREE&amp;amp;TC=1&amp;amp;P=IHMVS2"&gt;free magazine&lt;/a&gt; for software architects, senior developers and development managers that includes practical, proven, unbiased how-to articles readers can put to use immediately. &lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6621"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6621&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qzFFn4_3wFDkDlNhwl2ybrYr5Fg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzFFn4_3wFDkDlNhwl2ybrYr5Fg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qzFFn4_3wFDkDlNhwl2ybrYr5Fg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzFFn4_3wFDkDlNhwl2ybrYr5Fg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=BH7Oq0c1_ys:E_6eQ2UwHAo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=BH7Oq0c1_ys:E_6eQ2UwHAo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=BH7Oq0c1_ys:E_6eQ2UwHAo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/BH7Oq0c1_ys" height="1" width="1"/&gt;</description> 
			<slash:comments>170</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Slow,-Difficult-to-Code,-and-Buggy.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Error'd: Planning for the Past</title> 
			<link>http://thedailywtf.com/Articles/Planning-for-the-Past.aspx</link> 
			<category>Error'd</category>
			<pubDate>Wed, 08 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6620</guid> 
			<description>&lt;p&gt;&lt;a name="PPick4"&gt;&lt;/a&gt;&amp;quot;I was very grateful for the letter Virgin sent out &lt;em&gt;the day after&lt;/em&gt; they were here,&amp;quot; &lt;b&gt;Magnus Therning&lt;/b&gt; &amp;quot;That sure helped us planning.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPick4"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/virgin-funny-edited.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPick3"&gt;&lt;/a&gt;&amp;quot;I discovered this super-secret, crazy-awesome, ultra-Beta Gmail Labs feature that somehow bends spacetime and lets you send an email to &lt;em&gt;the future&lt;/em&gt;!&amp;quot; &lt;b&gt;Danny V&lt;/b&gt; writes, &amp;quot;I was all excited until I received an email from my Past Self; it was the exact message that I had sent to my Future Self a few minutes prior.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPick3"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/untitled.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic1"&gt;&lt;/a&gt;&amp;quot;Weird,&amp;quot; &lt;b&gt;Matt&lt;/b&gt; write, &amp;quot;while I am an unregistered visitor, I'm pretty sure I'm not Internal Only. But I will say, I thought I had a higher Tookie value.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic1"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/2009-03-05_fool.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic2"&gt;&lt;/a&gt;&lt;b&gt;Jeremy Fry&lt;/b&gt; received this from his mortgage provider.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic2"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/loan.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic3"&gt;&lt;/a&gt;&lt;b&gt;Chris Wade&lt;/b&gt; notes, &amp;quot;BricsCAD has a setting for every computer-related emotion.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic3"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/muttering.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic4"&gt;&lt;/a&gt;&amp;quot;When there's something straaaange in your render app,&amp;quot; &lt;b&gt;Mike M&lt;/b&gt; sings, &amp;quot;who you gonna call? Pro-GRAM-mers!&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic4"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/omfgerrord.PNG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic5"&gt;&lt;/a&gt;&amp;quot;Generate fewer messages?&amp;quot; &lt;b&gt;Mark Christian&lt;/b&gt; ponders, &amp;quot;perhaps you could have started with that one?&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic5"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/Picture%201.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPick1"&gt;&lt;/a&gt;&amp;quot;The Planning Portal is the site we have to fill in to apply for planning permission,&amp;quot; write &lt;b&gt;Chris Wade&lt;/b&gt;, &amp;quot;Number Null, Null Road is becoming a bit overdeveloped.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPick1"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/Planningportal.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPick2"&gt;&lt;/a&gt;&amp;quot;I'm new to Twitter,&amp;quot; &lt;b&gt;Denilson Figueiredo de S&amp;aacute;&lt;/b&gt; write, &amp;quot;and I don't know exactly what to expect from it. Apparently, the feeling is mutual.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPick2"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/twitter-expectation-failed.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPick5"&gt;&lt;/a&gt;&amp;quot;I needed to check the &lt;a href="http://www.microsoft.com/windowsxp/eula/pro.mspx"&gt;EULA for XP Professional Edition&lt;/a&gt;,&amp;quot; &lt;b&gt;Jenk&lt;/b&gt; write, &amp;quot;to say it's a bit vague is an understatement.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPick5"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200907/errord/xpproeula.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6620"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6620&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j81mNBY7TQqXIrZGOSxpMyYtrKk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j81mNBY7TQqXIrZGOSxpMyYtrKk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j81mNBY7TQqXIrZGOSxpMyYtrKk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j81mNBY7TQqXIrZGOSxpMyYtrKk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=0Ec9tEDK9oY:yTR9hF-ImbM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=0Ec9tEDK9oY:yTR9hF-ImbM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=0Ec9tEDK9oY:yTR9hF-ImbM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/0Ec9tEDK9oY" height="1" width="1"/&gt;</description> 
			<slash:comments>87</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Planning-for-the-Past.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Tales from the Interview: The Ace in the Hole</title> 
			<link>http://thedailywtf.com/Articles/The-Ace-in-the-Hole.aspx</link> 
			<category>Tales from the Interview</category>
			<pubDate>Tue, 07 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6619</guid> 
			<description>&lt;p&gt;After spending his first three years out of college in an entry-level position with Ask.com, Erhen was ready to move on to something with more responsibility. One day, he received a phone call from a company that wanted him to come in for an immediate interview.
&lt;p&gt;The following day, Erhen arrived at the company’s place of business. It was a sports equipment supplier, operating out of a building that might have been built entirely out of asbestos. On the inside, there wasn’t a piece of furniture or decoration that had been built post-cold war.
&lt;p&gt; “It’s great to have you here, Ehren!” a nice older gentlemen in his sixties said. He was the hiring manager. “We’ve been looking for a project manager for this &lt;em&gt;huge&lt;/em&gt; job we have, and it looks like you’ve got the experience we want. Now you say that you’ve worked with the internet before?”
&lt;p&gt;“Well, yes.” Erhen replied, a little put off by how vague the phrase ‘worked with the internet’ was. Technically, one could classify downloading porn as ‘working with the internet.’ Erhen elaborated, “I currently work for Ask.com.”
&lt;p&gt;“I see…” he said. “And what do they do?”
&lt;p&gt;Erhen wasn’t quite prepared for that question. While Ask is hardly a search engine juggernaut, they’re still fairly well known. And he had just assumed that the Ask.com name was the main reason they had interest in hiring him.
&lt;p&gt;“They’re a search engine like Google.”
&lt;p&gt;“Well, you’re going to enjoy the security of working for us,” the manager said. “We’re a ‘real’ company and probably bigger than anything you’ve got experience with. We’ve got almost 60 employees here. How many people work at Ask, 15? 20?”
&lt;p&gt;“Ummm” Erhen paused, “they have a few thousand people working for them.”
&lt;p&gt;“Really?” the sexagenarian questioned, “that doesn’t sound right. I thought most internet companies were run by college students in garages?”
&lt;p&gt;“Well I think that’s how they started,” Erhen replied gently, “maybe, like, fifteen years ago. But they’re pretty big now. They have real offices and everything.”
&lt;p&gt;“That’s great!” he said. “I’m looking for someone who understands the internet, because after voting down my suggestion that our company launch a website each of the past eight years, they’ve finally agreed to let me put one up!”
&lt;p&gt;Erhen let that sink in for a moment. “Your business is supplying sports equipment to companies, schools, and individuals, right? How are you having customers fill out orders now?”
&lt;p&gt;“Oh, we do everything by catalogue and mail,” he responded, “the board has let me try out having a website as a way of supplementing our current ordering system. But I have this hunch that we’ll be able to save money on printing and postage if we use the internet. The idea is to have people check our catalogue through the web, print out order forms, and then mail them in.”
&lt;p&gt;Erhen checked his watch. Yes, it was still 2007 and there hadn’t been a time-warp.
&lt;p&gt;“That’s where you come in,” the interviewer smiled, “we need someone to take this idea and run with it. The board has designated a budget of almost two &lt;em&gt;thousand&lt;/em&gt; dollars. You’d be in charge of using those funds to build us a top-of-the-line website!”
&lt;p&gt;He just stared in disbelief; by that point, Erhen was waiting for a candid camera crew to jump out and yell “surprise!”
&lt;p&gt;“And” he added, leaning in. “I have this idea that’s kind of our ace-in-the-hole.”
&lt;p&gt;Erhen blinked. It was the only response he could think of that wouldn’t convey his opinion of him, the board and the interview. He fully expected to hear the manager explain his invention of horseless carriages that would one day put the railroads out of business.
&lt;p&gt;“I want our site not only to have an up-to-date catalogue of our products available for free, but I think that we could figure out a way to have people order products and pay for them online as well. Think about it: we could be the first sporting-equipment supplier in the world to offer this service.”
&lt;p&gt;Erhen decided not to take that job.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6619"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6619&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5necJVP7BlIJQ8fMujdboJMycQk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5necJVP7BlIJQ8fMujdboJMycQk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5necJVP7BlIJQ8fMujdboJMycQk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5necJVP7BlIJQ8fMujdboJMycQk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=0hd3C_H3DAE:6UfcdRzU610:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=0hd3C_H3DAE:6UfcdRzU610:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=0hd3C_H3DAE:6UfcdRzU610:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/0hd3C_H3DAE" height="1" width="1"/&gt;</description> 
			<slash:comments>138</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Ace-in-the-Hole.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: The Four Dutchmen</title> 
			<link>http://thedailywtf.com/Articles/The-Four-Dutchmen.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Mon, 06 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6618</guid> 
			<description>&lt;p&gt;&amp;quot;It's some nice code,&amp;quot; smiled the software architect at &lt;b&gt;Petr Valasek's&lt;/b&gt; company, &amp;quot;it needed refactoring before it was ever written. But the good news is, you get to refactor it now.&amp;quot;&lt;/p&gt;
&lt;p&gt;And just like that, Petr was a new father. His baby was the bastard child known as the GIS Hardware Monitoring module. It wasn't pretty, but Petr knew it had potential and was excited to refactor the code. One of the first things he came across was this.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
switch ( nState )
{
   case GIS_NEEDLE_STATE_ERROR:
     Diederick;
     break;

   case GIS_NEEDLE_STATE_UNKNOWN:  
     Jan; 
     break;

   case GIS_NEEDLE_STATE_INSERTED:
     Piet;
     break;

  case GIS_NEEDLE_STATE_RETRACTED:
     Kees; 
     break;

}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Who are these four dutchmen&lt;/em&gt;, Petr wondered, &lt;em&gt;and what are they doing in my code?&lt;/em&gt; Digging a bit further, he found how the dutchmen were #defined:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
/*case GIS_NEEDLE_STATE_RETRACTED:*/
#define Kees (m_nlGISRetracted &amp;amp;= ~(1 &amp;lt;&amp;lt; nIndex))

/*case GIS_NEEDLE_STATE_UNKNOWN:        */
#define Jan (m_nlGISRetracted |= 1 &amp;lt;&amp;lt; nIndex)

/*case GIS_NEEDLE_STATE_INSERTED:       */
#define Piet (m_nlGISRetracted |= 1 &amp;lt;&amp;lt; nIndex)

/*case GIS_NEEDLE_STATE_ERROR:  */
#define Diederick (m_nlGISRetracted |= 1 &amp;lt;&amp;lt; nIndex)&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;As for refactoring, Petr considered combining Jan, Piet and Diederick into a single person (&amp;quot;Hans&amp;quot; seemed like a good name), but was a bit concerned that it might create some &amp;quot;multi-personality issue.&amp;quot; Of course, not that it mattered because all GIS hardware is considered &amp;quot;retracted&amp;quot; when and only when m_nlGISRetracted equals zero.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6618"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6618&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gakr3L1pos2qtlBXN187F2oVt7o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gakr3L1pos2qtlBXN187F2oVt7o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gakr3L1pos2qtlBXN187F2oVt7o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gakr3L1pos2qtlBXN187F2oVt7o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=7_1cKLhwo4w:fK6L29inaNE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=7_1cKLhwo4w:fK6L29inaNE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=7_1cKLhwo4w:fK6L29inaNE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/7_1cKLhwo4w" height="1" width="1"/&gt;</description> 
			<slash:comments>86</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Four-Dutchmen.aspx</comments>
		</item>
	
		<item>
			<author>Mark Bowytz</author> 
			<title>The Confidential Upgrade</title> 
			<link>http://thedailywtf.com/Articles/The-Confidential-Upgrade.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Thu, 02 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6615</guid> 
			<description>&lt;p&gt;Twenty five years ago, when &lt;strong&gt;Steve W.&lt;/strong&gt; worked for a military subcontractor, he'd often roll his eyes when meetings were denoted &amp;quot;CONFIDENTIAL&amp;quot;. It's not that he didn't take confidentiality seriously, it's just that &lt;em&gt;everything&lt;/em&gt; they did was confidential. By labeling most everything &amp;quot;CONFIDENTIAL&amp;quot;, there was no way of knowing when some things &amp;ndash; like performance reviews and should-we-fire-so-and-so discussions &amp;ndash; were really, &lt;em&gt;really&lt;/em&gt; confidential. At least, not until you were actually in the meeting.&lt;/p&gt;
&lt;p&gt;At one meeting, it was was really, &lt;em&gt;really&lt;/em&gt; confidential. It was a one-on-one and across the table from Steve sat &lt;u&gt;the&lt;/u&gt; Project Manager. These kind of solitary meetings took place either because you're doing something very wrong... or you're getting canned.&lt;/p&gt;
&lt;p&gt;&amp;quot;Hey Steve,&amp;quot; the project manager started, &amp;quot;I need a fresh set of eyes on a performance problem we've been facing with the EC Unit.&amp;quot;&lt;/p&gt;
&lt;p&gt;Steve perked up at this. And not just because he wasn't getting fired, but because the EC Unit &amp;mdash; EC being short for Electrical Capabilities &amp;mdash; was a pretty big deal as of late. It was a &amp;quot;switch&amp;quot; on one of their new automated testing stations with hundreds of relays configurable to variety of electrical ratings: 50 Milliamps at 0.01 Volts, 400 Volts at 200 Amps, you name it. Being about the size of a VW Bug and having a panel of blinking indicator lights which actually meant something, it was an impressive sight... and had an equally impressive budget to boot.&lt;/p&gt;
&lt;p&gt;The project manager continued, &amp;quot;it's taking in the neighborhood of eight hours to run through an engineer test script and that is &lt;em&gt;really&lt;/em&gt; hurting us on turnaround. If you can crack this nut, you just might be the hero of the project.&amp;quot;&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;A HERO'S WORK&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;Eagerly, Steve got to work on familiarizing himself with the EC's software. Basically, the idea behind the program was that, as part of a test, the engineer would write a statement like &amp;quot;Apply X amps at Y volts to circuit C with waveform...&amp;quot; and the program would compute the least electrically expensive path.&lt;/p&gt;
&lt;p style="margin-top: 0px"&gt;Developed by the primary contractor, the code weighed in at about 5,000 lines of Pascal and, with a myriad of functions and high math, it was certainaly no picnic. For days, he poured through the logic. After single stepping though the program and creating enough flow charts and flow diagrams to cover two walls, nothing jumped out at him. However, when Steve added a global counter in every function in the application (as there was no profiler available), he hit paydirt.&lt;/p&gt;
&lt;p&gt;While most functions were called proportionally to the number of connections to be analyzed, the following worst offending function was called over a billion times.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
function eval_strings_are_equal(s1:string[255], s2:string[255]):Integer

    &amp;laquo;reasonably efficient string compare function implementation here&amp;raquo;
end&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;The funny thing about that innocent looking function was how the program handled the parameters. Can you see it? No matter what the size of the string data &amp;mdash; even as few as two characters &amp;mdash; the program would copy two 255 byte sequences to the stack, one byte at a time. Steve found that if he changed the parameter declaration to the *even* number 256, the parameters would be copied to the stack *two* bytes at a time and reduced the runtime by half!&lt;/p&gt;
&lt;p&gt;But, was 256 bytes...overkill? Steve looked further and found that the longest strings ever passed would only be 8 bytes long - he reduced the parameter length to match. The end result: an analysis that would ordinarily take an entire business day would be done in a half hour.&lt;/p&gt;
&lt;p&gt;No doubt about it - Steve was the man. And better yet, it wasn't even his company's fault: the primary contractor was responsible for that particular module.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;AFTERMATH&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;At their next &amp;quot;CONFIDENTIAL&amp;quot; meeting, the Project Manager started without a word of small talk. &amp;quot;So do you have something for me?&amp;quot;&lt;/p&gt;
&lt;p&gt;Steve smirked and nodded, with a smug &lt;em&gt;Yeah, you better believe I do! &lt;/em&gt;and handed over the documentation with a very nice &amp;quot;before and after&amp;quot; graph on the first page.&lt;/p&gt;
&lt;p&gt;&amp;quot;WOW!&amp;quot; the project manager was shocked, &amp;quot;This is good!...REALLY GOOD!&amp;quot;&lt;/p&gt;
&lt;p&gt;Before Steve could even explain how he did it, the project manager jumped in again. &amp;quot;However,&amp;quot; he said slowly, &amp;quot;we're going to have to sit on this for now. We can't tell them about this.&amp;quot;&lt;/p&gt;
&lt;p&gt;Steve shot back a quizzical look as the project manager explained. As it turned out, there was a big political fight going on with the primary contractor about the project. The primary was blaming Steve's company for overall Electrical Capabilities slowness and Steve's company was blaming the hardware supplied by the primary. Not that it really mattered, because there was a planned upgrade to the Electrical Capabilities system that, among other things, promised much higher performance.&lt;/p&gt;
&lt;p&gt;&amp;quot;It's only a single line code change,&amp;quot; Steve implored, &amp;quot;it would take all of five seconds to explain. Then the users would be up and run-&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Yeah, yeah,&amp;quot; he brushed off, &amp;quot;we'll keep it as our 'ace in the hole' in case they complain about slowness after the upgrade. We'll show 'em that we're not the ones who are causing all the problems.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;But isn't the upgrade several months away?&amp;quot; Steve rhetorically asked, &amp;quot;we can get them to implement it now and save thousands of client man hours in the mean time.&amp;quot;&lt;/p&gt;
&lt;p&gt;The project manager glared, &amp;quot;you're &lt;em&gt;not&lt;/em&gt; going to share the patch information. It's &lt;em&gt;confidential&lt;/em&gt;.&amp;quot;&lt;/p&gt;
&lt;p&gt;As the planned upgrade date came closer and closer, the likelihood of actually upgrading seemed less and less likely. When the date had come and gone, the upgrade project was &amp;quot;put on hold until next quarter&amp;quot;. And it stayed on hold for quarter after quarter after quarter.&lt;/p&gt;
&lt;p&gt;Five years later, when it came time for budget cuts, the entire Electrical Capabilities project &amp;mdash; military personnel and all &amp;mdash; was cut for good. Apparently, the auditors weren't too thrilled that engineers just sat around all day, waiting for some program to run.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6615"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6615&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/s-6aq2AqVNxuk7twxl-6MNtf7Fg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s-6aq2AqVNxuk7twxl-6MNtf7Fg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/s-6aq2AqVNxuk7twxl-6MNtf7Fg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s-6aq2AqVNxuk7twxl-6MNtf7Fg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=9peE-wpn_fc:AYTk1wYmfUI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=9peE-wpn_fc:AYTk1wYmfUI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=9peE-wpn_fc:AYTk1wYmfUI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/9peE-wpn_fc" height="1" width="1"/&gt;</description> 
			<slash:comments>108</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Confidential-Upgrade.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>The Program Accelerator</title> 
			<link>http://thedailywtf.com/Articles/The-Program-Accelerator.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Wed, 01 Jul 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6617</guid> 
			<description>&lt;p&gt;As a postgrad in the late '80s, &lt;b&gt;Neil Bowers&lt;/b&gt; made some extra book money by acting as a helper in the computing lab. At the time, undergrads were all working on a grindingly slow VAX-11/780, and Neil and his fellow postgrads were posted there for hands-on help. This tended to be focused at the start of the year, when there were groups discovering Unix and programming for the first time.&lt;/p&gt;
&lt;p&gt;One time, an Irish girl asked Neil for some help, saying that she couldn&amp;rsquo;t understand what was going on: she thought her program looked right, but for some reason, each time she ran it she got partial output, and varying amounts of output each time. The homework assignment she was working on involved writing a program that generated various values and wrote the results in ascii tabular form to a file.&lt;/p&gt;
&lt;p&gt;Neil went over to her workstation and had a look at her source code. Everything looked fine. She showed him the file generated by her last run, and indeed, it looked truncated. Hmmm. &amp;quot;Ok,&amp;quot; Neil asked, &amp;quot;can you run your program for me, so I can see what happens?&amp;quot;.&lt;/p&gt;
&lt;p&gt;She typed &lt;code&gt;./a.out&lt;/code&gt; and hit return. Her left hand darted to the keyboard and she hit Control-C. Neil was still mentally processing this when she cat'd the output, and turned to say, &amp;quot;See!&amp;quot; It did indeed contain partial output. Again.&lt;/p&gt;
&lt;p&gt;&amp;quot;Um,&amp;quot; he paused, &amp;quot;can you just run it again please?&amp;quot; Neil figured that he must have not seen right. But once again she typed &lt;code&gt;./a.out&lt;/code&gt;, hit return, then &lt;em&gt;whap!&lt;/em&gt; she hit Control-C. Neil asked her why she hit Control-C every time she ran her program.&lt;/p&gt;
&lt;p&gt;&amp;quot;Well,&amp;quot; she said confidently, &amp;quot;I discovered that Control-C makes the % prompt come up quicker!&amp;quot;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6617"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6617&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qeaeKaa2sGc9aEueT-kAGfur368/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qeaeKaa2sGc9aEueT-kAGfur368/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qeaeKaa2sGc9aEueT-kAGfur368/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qeaeKaa2sGc9aEueT-kAGfur368/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=g_8cTYyQW78:2XGqEJPc2jk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=g_8cTYyQW78:2XGqEJPc2jk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=g_8cTYyQW78:2XGqEJPc2jk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/g_8cTYyQW78" height="1" width="1"/&gt;</description> 
			<slash:comments>142</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Program-Accelerator.aspx</comments>
		</item>
	
		<item>
			<author>Jake Vinson</author> 
			<title>A Systematic Approach</title> 
			<link>http://thedailywtf.com/Articles/A-Systematic-Approach.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Tue, 30 Jun 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6613</guid> 
			<description>&lt;p&gt;It was the early 1990s and &lt;strong&gt;Frank&lt;/strong&gt; was living the dream &amp;ndash; unshaven, in pajama bottoms and his favorite hockey jersey, having just woken up at 12:18 PM, was now working in the dim light of his basement on one of his freelance projects. Just as he was sipping a cup of coffee, the phone rang.&lt;/p&gt;
&lt;p&gt;Frank tried fruitlessly to fight an unexpected open-mouthed yawn when he picked up the receiver. &amp;quot;&lt;em&gt;OOOOAAAaaahhhh...&lt;/em&gt; hello?&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Hi, Frank. We have a &lt;em&gt;very&lt;/em&gt; exciting opportunity for a qualified individual like you. Interested?&amp;quot; Odd that this caller hadn't even identified what company he was with, Frank thought. After sleepily getting some of the details, yeah, Frank was mildly interested, and he agreed to an interview in 30 minutes... at a bagel shop that was 25 minutes away.&lt;/p&gt;
&lt;p&gt;Ten minutes late and having not changed at all aside from putting on non-pajama pants and shoes, he was immediately flagged over by a man in a nice suit. &amp;quot;You have the look like a computer genius, I already know you're perfect for this,&amp;quot; he said without a hint of sarcasm. He asked lots of vague questions about computers; stuff like &amp;quot;So you know computers? What about, like, servers?&amp;quot; Frank had all the traits of a young man in IT &amp;ndash; beyond his physical appearance, he was brash, overconfident, and narcissistic. Throughout the brief interview, he didn't restrain any of these traits, but still, he was only vaguely interested in the position, so he winged all the questions. Ten minutes later, the man pulled out a marker, wrote something on a napkin, and slid it across the table. &amp;quot;That's what your hourly rate would be.&amp;quot; The man arched his eyebrow. &amp;quot;Interested?&amp;quot;&lt;/p&gt;
&lt;p&gt;Frank was already pulling in some respectable bank, but this was &lt;em&gt;more than twice&lt;/em&gt; what he was currently making. Gears started turning in his brain while he mulled it over. &lt;em&gt;Well, I guess if I was to take this jo-&lt;/em&gt;&amp;quot;YES.&amp;quot; On his way home from the interview, Frank picked up a razor, stopped for a haircut, and generally got himself kempt.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;The Job&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;The day after the interview, he was sitting opposite the Executive Vice President of Data Processing, who was giving a second interview. &amp;quot;Let's say I asked you to consolidate twelve server facilities into one. How would you do it?&amp;quot; Ahh, &lt;a href="http://thedailywtf.com/articles/riddle-me-an-interview.aspx"&gt;a riddle question&lt;/a&gt;, like &amp;quot;how would you move a mountain to the other side of a village?&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Well,&amp;quot; Frank started, winging his second interview in as many days, &amp;quot;I'd take a systematic approach. Figure out where everything was, how the different systems were integrated, how they communicate, and gradually migrate servers over.&amp;quot;&lt;/p&gt;
&lt;p&gt;The Bank Boss was clearly impressed since Frank was given a contract on the spot; no references or background checks. And not just that, Frank was given keycard access to &lt;em&gt;everything&lt;/em&gt; &amp;ndash; all of the different datacenters and various facilities. He didn't encounter &lt;em&gt;anything&lt;/em&gt; his keycard didn't give him access to (though he never tried the bank's vault). He was also given passwords to every sensitive system, including the money transfer system, responsible for transferring money in the range of around one &lt;em&gt;trillion&lt;/em&gt; dollars every day.&lt;/p&gt;
&lt;p&gt;It quickly became clear that the interview question wasn't a hypothetical, and Frank was dealing with the impossible. And maybe that's why they hired him &amp;ndash; he was an idealistic hard worker, a badass who could do &lt;em&gt;anything&lt;/em&gt;. What he lacked in experience then he'd make up for in tenacity. At least that's what Frank was having a harder and harder time reminding himself.&lt;/p&gt;
&lt;p&gt;And for better or for worse, he'd effectively be on his own. As it turned out, his team and the man that hired him were electricians. Back in those days, the bank (and, more importantly, their union contract) considered moving servers to be &amp;quot;electrical work&amp;quot; and, therefore, &lt;em&gt;only&lt;/em&gt; union electrician companies were allowed to do it. Or those that the electricians hired.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;The Problem&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;In short, the bank had a dozen VAX datacenters that they wanted as a single cluster in a new building. Everything communicated over DECnet, which was a network protocol not too dissimilar from TCP/IP. One of the nice things about DECnet was the ability to route datagrams (packets) around the network in different ways to avoid failures, a fact which later proved to be useful.&lt;/p&gt;
&lt;p&gt;The problem with the banks infrastructure was that either no one knew everything that was running in each datacenter, how it all worked, or how they'd work together in a single facility. Even worse, the people at the datacenters didn't want to talk to Frank, as the sooner Frank finished &lt;em&gt;his&lt;/em&gt; job, the sooner they'd lose theirs.&lt;/p&gt;
&lt;p&gt;The visits to the various datacenters always left Frank in a worse mood. All of them were in various states of disrepair &amp;ndash; dirty, perhaps a flickering light, disorganized, but one stood above the others. Its floor was almost completely torn up due to a major renovation project following an asbestos contamination. All of the systems in this room were caked with dust, so much so that the labels were completely illegible. Only one system had lights blinking on its network port; so Frank brushed the dust off its label. &amp;quot;VDL-23 &amp;ndash; Maintenance Test Box.&amp;quot; &lt;em&gt;Why does that sound so familiar?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Earlier that morning, Frank had done some network analysis, and found that all redundant links between the Money Transfer System and the other datacenters (aside from VDL-23) had been down for quite a while. Since DECnet routed around the failures and no one had thought to set-up network monitoring, no one had noticed that all of the other links had gone down. And before Frank discovered it, no one knew (or no one would tell him) where the box was physically. Immediately, Frank got cracking on a plan to bring the redundancy back online while keeping VDL-23 up, thanking the stars that the architecture of DECnet prevented the network from going down with all of the other servers. Still, something told him that the twisted, crushed, mistreated cables strewn across the floor might not remain reliable for transfers of $1T/day for long...&lt;/p&gt;
&lt;p&gt;His watch alarm went off before he finished, it was a reminder that he had a mandatory meeting for all staff involved in the migration &amp;ndash; about two hundred people in total. Frank rushed back to the main office, taking shortcuts using his everything-access keycard, and arriving just as the meeting was starting.&lt;/p&gt;
&lt;p&gt;&amp;quot;Thank you all for coming,&amp;quot; the executive vice president said, voice quivering, with a sweaty brow. &amp;quot;We're required to migrate the network to TCP/IP by the communications standard director.&amp;quot; Frank winced.&lt;/p&gt;
&lt;p&gt;The VP of communications chimed in, equally nervous. &amp;quot;Well... it's DECnet... it uses the non-routable LAT protocol. I... *ahem* &lt;em&gt;we&lt;/em&gt; may need to push the deadline out...&amp;quot; The executive VP frowned, and asked for an update from the apps team.&lt;/p&gt;
&lt;p&gt;The VP of Applications looked equally nervous, stammering out &amp;quot;we're still gathering information on the applications... and... we're not totally sure if we can actually run this all in one system...&amp;quot;&lt;/p&gt;
&lt;p&gt;In a hushed tone, the executive VP took the floor again. &amp;quot;You're telling me we're going to miss our deadline. The board is &lt;em&gt;very&lt;/em&gt; firm about our deadline. I'm &lt;em&gt;not&lt;/em&gt; happy.&amp;quot;&lt;/p&gt;
&lt;p&gt;Frank craned his neck and looked around the room, everyone was staring at the floor. &lt;em&gt;This was his moment.&lt;/em&gt; Once again feeling like a badass he rose from his seat dramatically, and in his most heroic voice, he boomed &amp;quot;&lt;em&gt;There is a way.&lt;/em&gt;&amp;quot;&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;Success!&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;Three months later, a beautifully appointed datacenter hummed along, processing transfers and perfectly replicating all of the functionality from the former twelve separate datacenters. Pristine rows of computers and neatly arranged drive controllers worked dutifully, everything in perfect order. The board came through the datacenter to inspect the work, and left with no complaints. It had been completed on schedule and was looking great, everyone was happy.&lt;/p&gt;
&lt;p&gt;Under the raised floor, the tangle of cables told the real story. What was &lt;em&gt;really&lt;/em&gt; in that room was the original twelve datacenters, all of the systems sitting pretty on the raised floor, underneath which were piles of cables connected exactly the same way they'd always been connected, and with back-hauled communication lines running between the systems. As they say, out with the old, in with the old.&lt;/p&gt;
&lt;p&gt;And off in one corner, on upgraded hardware, was VDL-23; still responsible for routing all of the money transfer traffic, now safely sitting in a datacenter where it would remain unperturbed.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6613"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6613&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jS5csuWTg9lvVdIquOuc4ggp8gU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jS5csuWTg9lvVdIquOuc4ggp8gU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jS5csuWTg9lvVdIquOuc4ggp8gU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jS5csuWTg9lvVdIquOuc4ggp8gU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=L8CvgxL_RH8:j4_obeoLMTs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=L8CvgxL_RH8:j4_obeoLMTs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=L8CvgxL_RH8:j4_obeoLMTs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/L8CvgxL_RH8" height="1" width="1"/&gt;</description> 
			<slash:comments>98</slash:comments> 
			<comments>http://thedailywtf.com/Comments/A-Systematic-Approach.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Error'd: Loyalty Rewarded</title> 
			<link>http://thedailywtf.com/Articles/Loyalty-Rewarded.aspx</link> 
			<category>Error'd</category>
			<pubDate>Mon, 29 Jun 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6616</guid> 
			<description>&lt;p&gt;&lt;a name="Pic4"&gt;&lt;/a&gt;&amp;quot;This coupon increased the chances of me trading in my car by about 0.79%,&amp;quot; &lt;b&gt;Josh&lt;/b&gt; notes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic4"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/Funny%20Coupon0001.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic1"&gt;&lt;/a&gt;&amp;quot;The rent looks okay to me,&amp;quot; &lt;b&gt;Stephan Rose&lt;/b&gt; writes, &amp;quot;but I'd be a bit unsure about being able to do the deposit.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic1"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/apartment.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic2"&gt;&lt;/a&gt;&amp;quot;I know manufactures and consumers are demanding more out of today's batteries,&amp;quot; &lt;b&gt;Frank&lt;/b&gt; writes, &amp;quot;but this seems a little extreme.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic2"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/battery.PNG" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic3"&gt;&lt;/a&gt;&amp;quot;I received this on a birthday card,&amp;quot; &lt;b&gt;Ralph Nevins&lt;/b&gt; wrote, &amp;quot;I wonder how many tests they run?&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic3"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/canceled.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="Pic5"&gt;&lt;/a&gt;&amp;quot;I saw &lt;a href="http://www.amazon.com/SAS-Dummies-Computer-Tech/dp/B001O0EH6S/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1236131800&amp;amp;sr=1-1#reader"&gt;this&lt;/a&gt; on Amazon,&amp;quot; wrote &lt;b&gt;Ed Burnette&lt;/b&gt;, &amp;quot;but what if I want the Paperback edition?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic5"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/paperback.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic1"&gt;&lt;/a&gt;&amp;quot;Apparently my last name is not appropriate,&amp;quot; &lt;b&gt;Andrew Young&lt;/b&gt; wrote, &amp;quot;the completely fake address I put is just fine though.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic1"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/Picture%20101.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic2"&gt;&lt;/a&gt;&amp;quot;I'm glad to know an error couldn't have happened,&amp;quot; writes &lt;b&gt;Ben Wyatt&lt;/b&gt;, &amp;quot;otherwise, I might think there was a reason I couldn't print that document.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic2"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/Picture__1.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic3"&gt;&lt;/a&gt;&amp;quot;Such a deal,&amp;quot; &lt;b&gt;Angus Scott-Fleming&lt;/b&gt; said, &amp;quot;Pay $12/yr for 1 year, or $20/yr for 2 years, or $28/yr for three!&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic3"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/PopSci3yrSavings.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic4"&gt;&lt;/a&gt;&amp;quot;I don't know if checking the box puts DHS onto me,&amp;quot; noted &lt;b&gt;George&lt;/b&gt;, &amp;quot;but I figured that life's short enough as it is. I'd rather not influence the purchase of malware as much as its donation.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic4"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/wtf--2.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a name="PPic5"&gt;&lt;/a&gt;&amp;quot;The BBC website recently ran a report on children with weird names,&amp;quot; &lt;b&gt;Edd&lt;/b&gt; comments, &amp;quot;but I didn't expect them to actually employ one of the story's protagonists.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#PPic5"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/200906/errord/wtf-1.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6616"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6616&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rudOW5c6k4aJisT8vL-XPULxfp8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rudOW5c6k4aJisT8vL-XPULxfp8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rudOW5c6k4aJisT8vL-XPULxfp8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rudOW5c6k4aJisT8vL-XPULxfp8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=dcfVKs9I4dI:_oNLIsN2okY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=dcfVKs9I4dI:_oNLIsN2okY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=dcfVKs9I4dI:_oNLIsN2okY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/dcfVKs9I4dI" height="1" width="1"/&gt;</description> 
			<slash:comments>104</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Loyalty-Rewarded.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Death by Delete</title> 
			<link>http://thedailywtf.com/Articles/Death-by-Delete.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Thu, 25 Jun 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6614</guid> 
			<description>&lt;p&gt;&lt;b&gt;Rick &lt;/b&gt;worked for a regional ISP that provided hosting services. The customer base consisted primarily of consumers and small businesses, so the ISP offered a lot of &amp;quot;a la carte&amp;quot; services for things like SSL, authentication and database access.&lt;/p&gt;
&lt;p&gt;A small chain of pet stores in the tri-state area, MegaPetCo, approached Rick's company because it was trying to expand into other cities and states. Having outgrown its current provider, MegaPetCo wanted Web space, a database and a few e-mail boxes. After careful consideration, it opted for the $74.99/ month Advanced Package that included a 10MB database, 100MB of disk space and 100GB of bandwidth.&lt;/p&gt;
&lt;p&gt;After the switchover, it became apparent that what MegaPetCo needed far exceeded what it had ordered. For starters, its database ballooned to several gigabytes within the first month. On top of that, its Web traffic was far higher than the company's allotted bandwidth and other Web sites on the shared server were getting bogged down.&lt;/p&gt;
&lt;p&gt;MegaPetCo opted to pay for overages, and its first monthly bill was astronomical: $4,281.32. Assuming that no one received the automated daily overage warning e-mails, the customer service rep offered to discount the bill and advised MegaPetCo to switch to a dedicated server. The owners of MegaPetCo, however, suspected the rep was &amp;quot;trying to pull a fast one&amp;quot; and instead opted to pay the bill, overages and all.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;Behind the Scenes&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;MegaPetCo had no problem paying outrageous hosting bills, but the company was upset that its Web site ran incredibly slow. Although Rick's company had long since dedicated a &amp;quot;shared&amp;quot; hosting server for MegaPetCo, it would still take upward of a couple seconds for a page to load.&lt;/p&gt;
&lt;p&gt;Rick decided to look at MegaPetCo's code. He was surprised that the company's Web site, which required a several-gigabyte database, was very small. As it turned out, there was a good reason for that: it was a very simple PHP-based framework that housed virtually everything -- including other PHP files -- in the database.&lt;/p&gt;
&lt;p&gt;Further investigation found that 98 percent of all the company's requests came from one set of IP addresses, which turned out to be its stores and home offices. Rick guessed that MegaPetCo had kiosks for something and perhaps ran some of its sales traffic through the database.&lt;/p&gt;
&lt;p&gt;How little he really knew. The shared database for this Web site -- a 10MB file which was meant to power nothing more than a couple of blogs and small-traffic forums -- was the database for the entire company. The Web site itself accounted for less than 5 percent of the total data in MegaPetCo's database. The rest was home-office stuff, including POP sales registers, payroll, HR, inventory, tax records, and a kind of dynamic storage for invoices and maintenance tickets.&lt;/p&gt;
&lt;p&gt;The database was incredibly simple: a single table with hundreds of columns. It probably had humble beginnings as a spreadsheet and organically grew into a vast monolith over the seven or so years that MegaPetCo was in business. If MegaPetCo wanted to find out what insurance it gave a truck driver five years ago, it was in the same table as the one serving up pictures of bird seeds for sale. All told, the database had millions and millions of rows -- had being the operative word.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;Uh Oh&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;One day, a developer was optimizing the database and removing records that MegaPetCo no longer needed. All it took was a single, poorly formed delete query to wipe out each and every row in the database table.&lt;/p&gt;
&lt;p&gt;To say the developer panicked is akin to describing a quadruple amputation as a mere flesh wound. MegaPetCo's sales immediately ground to a halt. Along with everything else. Payroll, logistics, reporting, purchasing, you name it. Its Web site didn't work -- but that was the least of the company's worries. The status of its backups was bleaker still: None. Zip. Zilch. Nada.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;The Aftermath&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;MegaPetCo blamed Rick's company. There was nothing the ISP could do, other than remind MegaPetCo that it had repeatedly advised the company to change services.&lt;/p&gt;
&lt;p&gt;That didn't stop MegaPetCo from filing a lawsuit against Rick's company. Of course, it proved to be a bit of a challenge to sue without knowing how much money MegaPetCo actually had, so it simply withdrew the suit.&lt;/p&gt;
&lt;p&gt;Unfortunately, the single delete query proved to be far more than MegaPetCo could bear. Within a few months, the company filed for bankruptcy and was forced to close every one of its stores -- laying off several hundred people along the way.&lt;/p&gt;
&lt;p&gt;&lt;hr /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Death by Delete was originally published in the January 2009 issue of Redmond Developer News.&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6614"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6614&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b6jlDwCycczGyusk-CnNF0FBuqA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b6jlDwCycczGyusk-CnNF0FBuqA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/b6jlDwCycczGyusk-CnNF0FBuqA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b6jlDwCycczGyusk-CnNF0FBuqA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=NHOGQ7TttQ0:0wRA0BJEir8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=NHOGQ7TttQ0:0wRA0BJEir8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=NHOGQ7TttQ0:0wRA0BJEir8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/NHOGQ7TttQ0" height="1" width="1"/&gt;</description> 
			<slash:comments>237</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Death-by-Delete.aspx</comments>
		</item>
	
		<item>
			<author>Mark Bowytz</author> 
			<title>The Dead Guy's Password</title> 
			<link>http://thedailywtf.com/Articles/The-Dead-Guys-Password.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Wed, 24 Jun 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6608</guid> 
			<description>&lt;p&gt;&lt;img style="margin: 5px; float: right" class="wtf_imgfloatright" alt="Anyone seen my car keys?" src="http://img.thedailywtf.com/images/mark/computer_junk.jpg" /&gt;&amp;quot;Is this campus tech support?,&amp;quot; the caller said before &lt;strong&gt;Michael&lt;/strong&gt; even had a chance to say hello, &amp;quot;I hope this isn't a recording because we have a &lt;em&gt;serious&lt;/em&gt; problem with one of the detectors here. It won't open files!!&amp;quot;&lt;/p&gt;
&lt;p&gt;Used to working with the frantically confused user, Michael replied in a calming voice, &amp;quot;Now calm down, let's start out with your user id and&amp;mdash;&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;THERE'S NO TIME FOR THOSE STUPID FORMALITIES!&amp;quot; the caller barked, &amp;quot;just make your way over to G-Building and go to B2. I'll meet you when you arrive. And, hurry!&amp;quot;&lt;/p&gt;
&lt;p&gt;After the user hung up, Michael just stared at the receiver for a second before replacing it. G-Building was the chemistry department's and the basement levels (especially B2) was where the university had their &lt;em&gt;real&lt;/em&gt; labs. The ones where all the researchers produced results that got published in various scientific journals.&lt;/p&gt;
&lt;p&gt;Beside the fact that the entire building had their own dedicated support staff as a result of the occasional semi-secret stuff they did over there, it was 10:30 PM on a Sunday and they were calling about a problem with a... detector? That somehow wasn't able to open files?&lt;/p&gt;
&lt;p&gt;Ordinarily, Michael would have deferred to a senior technician, but because of the late hour and the urgency in the caller's voice, he decided to go ahead and check into the problem himself. Michael prepared himself to face either the worst disaster... or the most outlandish IT related prank of his college career.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;Getting Down and Dirty&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;As the elevator doors opened, Michael finally met &amp;mdash; or rather, was seized by &amp;mdash; his frantic caller, a bookish grad student in his late-20s named Jeffrey. &amp;quot;Thank goodness you're here,&amp;quot; he huffed, &amp;quot;the lab's right around the bend, follow me!&amp;quot;&lt;/p&gt;
&lt;p&gt;Michael had never been in the B2 level of Building-G and, as he followed Jeffrey, he started to wonder if that was a good thing. The dimly-lit, labyrinth-like corridors were lined with the occasional bright-red drum bearing various warnings with skull-and-crossbones insignia.&lt;/p&gt;
&lt;p&gt;As they turned the corner towards another hallway with flickering and humming florescent lights, a large overhead sign flashed CONTAMINATED over and over again. &amp;quot;Don&amp;rsquo;t worry about that,&amp;quot; Jeffrey said casually, &amp;quot;that's just the alpha radiation detector. It's been malfunctioning all week.&amp;quot; It wasn't all that reassuring.&lt;/p&gt;
&lt;p&gt;A few moments later, they arrived at a vault-like steel door labeled &amp;ldquo;Nuclide Laboratory.&amp;rdquo; The door opened with a loud creaking noise and revealed little more than a shabby room that seemed to double as a depot for discarded technology. Amidst the 386s and handful of Commodore 64s, another graduate student was sitting down, working on some papers.&lt;/p&gt;
&lt;p&gt;Jeffrey explained that he and his lab mate were working on their dissertation which involved something about the detection of nuclear materials inside of a shipping container. During the course of several weeks, they had amassed all the data they would need, but had no way of retrieving it because the crotchety installation of Windows NT simply refused to recognize their USB pen drive. With their lab time running out, and no way to get their data off the PC, they were in panic mode.&lt;/p&gt;
&lt;p&gt;After settling in, Michael recognized the computer immediately &amp;ndash; it was a fairly vanilla model from about 8 years ago that he had owned before college. It had onboard USB and a good ol' Ethernet card. &lt;em&gt;Piece of cake, &lt;/em&gt;he figured, however...it wasn't.&lt;/p&gt;
&lt;p&gt;For starters, so far as he could tell, the installation of Windows NT4 on this particular gem was completely virgin and without any of the Service Packs applied. The maximum resolution was trapped at a visually nauseating 640x480x16, and, worse still, as indicated by a handful of error pop-ups after booting that basically said &amp;quot;Hey buddy! You've got the wrong device drivers installed!&amp;quot; the OS appeared to have been a forced transplant into the computer after first being installed on another PC.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;Obiit Cum Tessera&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;Although there was no access to the university&amp;rsquo;s network within the bowels of Building-G, Michael came prepared with a netbook PC and an Ethernet patch cable. He figured that at the very least it MUST have a working network card and that he&amp;rsquo;d be in and out with no issues, but instead, he quickly discarded that idea.&lt;/p&gt;
&lt;p&gt;He attempted to run a hardware scan, but noticed that his login did not have administrative privileges. Fortunately, the Building-G network administrator was on call, so Michael dialed him up to get the system&amp;rsquo;s admin account.&lt;/p&gt;
&lt;p&gt;&amp;quot;I have absolutely no idea,&amp;quot; the network administrator confessed, &amp;quot;I didn't even realize that mutant NT PC even existed.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Well then,&amp;quot; Michael countered, &amp;quot;would you mind if I 'cracked the case' and take the hard drive back to the office and...&amp;quot;&lt;/p&gt;
&lt;p&gt;The admin cut Michael off, &amp;quot;Actually, no offense, but I do mind&amp;quot; and went on further to explain that a lot of the equipment down there was held together with duct tape and wire (sometimes, quite literally), and was known to be &amp;quot;uniquely sensitive&amp;quot;. &amp;quot;Moreover,&amp;quot; he said in a hushed whisper, &amp;quot;when your primary users are semi-paranoid, fully tenured professors, having equipment (even temporarily) disappear, or worse, appear &lt;em&gt;different &lt;/em&gt;- you can find how far clout can carry and make your life difficult and make your job disappear.&amp;quot;&lt;/p&gt;
&lt;p&gt;Instead, he advised Michael to contact the former Building-G admin: a recently-retired professor who likely still lived in the area. &amp;quot;Chances are,&amp;quot; he added, &amp;quot;that old coot will remember the password.&amp;quot;&lt;/p&gt;
&lt;p&gt;However, there was a problem with the admin&amp;rsquo;s suggestion - Michael had attended the professor's funeral two weeks earlier.&lt;/p&gt;
&lt;h3 style="margin-bottom: 0px"&gt;Brute Force Tactics&lt;/h3&gt;
&lt;p style="margin-top: 0px"&gt;Having neither a Ouija board nor a shovel, Michael was down to very few options and even less patience. The first and most obvious solution was to use his trusty Knoppix boot CD to extract the files off the NTFS drive, but some sort of strange, third-party encryption pretty much eliminated that option. One way or another, he'd have to login to the admin account.&lt;/p&gt;
&lt;p&gt;Frustrated, Michael returned to the tech support offices and looked for alternate solutions. After some quick Googling found himself a promising, and very &amp;quot;L337 HAX0R&amp;quot; sounding, solution - he would use the Knoppix boot CD to download the password registry from the old PC, crack the admin pasword, and nurse it to health enough to pull the files off!&lt;/p&gt;
&lt;p&gt;After burning the CD, he rushed back to the lab, pulled the password files off of the hard disk and took them home. Eager that the solution he found, so elegant in its simplicity, would help him, Michael started in with some of the dictionaries and rainbow tables (including some crazy foreign language ones). Nothing. Then it dawned on him - since the professor was likely an absolute genius (he was a nuclear scientist, for crying out loud) - the password was likely &lt;em&gt;L&amp;amp;28A34G#$%GH1&lt;/em&gt; or worse, something insane that somehow used non-printable ASCII characters. Finally feeling beaten and defeated, Michael figured he was at last out of options and decided, &lt;em&gt;What the hell..With any luck, maybe it'll be done by next term&lt;/em&gt;, and put his computer to brute-forcing the &amp;gt;10 character password and went to sleep.&lt;/p&gt;
&lt;p&gt;The next morning, Michael turned on his monitor was surprised, or perhaps shocked, to actually find the password displayed in the cracking software. What would be the lost admin password, what would be the code that he had, in a manner of speaking, pulled from the dead professor's head?&lt;/p&gt;
&lt;p&gt;It was pretty simple: &amp;quot;spiderman911&amp;quot;.&lt;/p&gt;
&lt;p&gt;As quickly as possible, Michael gathered together all the NT patches and drivers he could think of, burned them onto a few CDs and raced to the Chemistry building. But this time, when Jeffrey let him through the B2 level, the grungy halls and rooms were filled with dozens of professors and grad students frantically working on their projects.&lt;/p&gt;
&lt;p&gt;Remembering the lab admin describing the &amp;quot;peculiar&amp;quot; and regular users, Michael paused and decided not to install the updates Instead, he pulled out his Knoppix CD and booted up, and downloaded the data files onto the USB pen drive.&lt;/p&gt;
&lt;p&gt;Before leaving, Michael decided to &lt;em&gt;anonymously&lt;/em&gt; leave the CD on the computer desk with a short note describing how he had used it to save the data onto the USB drive. Hopefully, it'd come in handy for the next poor soul who needed to use a virtual crowbar to pry their data out of the dead professor's computer.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6608"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6608&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RIAViAgFCBsrbGH-WKf5W9Cctz0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RIAViAgFCBsrbGH-WKf5W9Cctz0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RIAViAgFCBsrbGH-WKf5W9Cctz0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RIAViAgFCBsrbGH-WKf5W9Cctz0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=hZ59qQ6XTnQ:6OjsLvUrTa0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=hZ59qQ6XTnQ:6OjsLvUrTa0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=hZ59qQ6XTnQ:6OjsLvUrTa0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/hZ59qQ6XTnQ" height="1" width="1"/&gt;</description> 
			<slash:comments>130</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Dead-Guys-Password.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Tales from the Interview: The Winds of Recession, A Doomed Interivew, and Oops!</title> 
			<link>http://thedailywtf.com/Articles/The-Winds-of-Recession,-A-Doomed-Interivew,-and-Oops!.aspx</link> 
			<category>Tales from the Interview</category>
			<pubDate>Tue, 23 Jun 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6612</guid> 
			<description>&lt;p&gt;&lt;b&gt;&lt;u&gt;The Winds of Recession&lt;/u&gt;&lt;/b&gt; (from Juan Seul) &lt;br /&gt;
Among other things, my job description at a certain Austrian software company includes interviewing candidates for project manager, developer, and other IT positions. In all my years conducting interviews, I&amp;rsquo;ve never had one that was all too crazy, and to this day, I still haven&amp;rsquo;t. But I think I was pretty close.&lt;/p&gt;
&lt;p&gt;One day, I had an applicant scheduled for an 11:00 AM interview. She had been downsized a few months ago from a local manufacturing company, and seemed pretty excited at the opportunity to work with my company.&lt;/p&gt;
&lt;p&gt;As the time neared by, I took a break from what I was doing and waited for the front desk to call. The clock turned eleven. Then it turned five past. And then ten past. Finally, at quarter after, the front desk rang to say that the candidate had just cancelled the appointment.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;I asked when she&amp;rsquo;d be available for a reschedule,&amp;rdquo; the receptionist explained, &amp;ldquo;but she said she was no longer interested in the position. Apparently, she had walked halfway through the parking lot and found that it was far too windy for her. She just couldn&amp;rsquo;t see herself going to work through that kind of weather each day.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;A Doomed Interview&lt;/u&gt;&lt;/b&gt; (from John) &lt;br /&gt;
Times have been tough, so I've been looking just about evernwhere for work. Buried in the last page of the local newspaper, I found a tiny job ad seeking a candidate with several technologies I had experience with. Against my better judgment, I called the number and, after a few minutes of small talk, was invited to an interview. Not the next day, not the next week, but right then and there. Within hours, I found myself on a backwater industrial parkway, standing in front of a non-descript building.&lt;/p&gt;
&lt;p&gt;Stepping through the front door was like entering a DooM level: dark as hell, a creepy bad atmosphere, and a slight fear that a giant spider was lurking around the corner. As my eyes adjusted to the gloom, it took all of three seconds to realize that I didn't want to work there. Against my better judgment, I headed in and up a dimly lit staircase.&lt;/p&gt;
&lt;p&gt;The office was decrepit, devoid of people, and looked like a dingy basement with clutter, files, and junk strewn everywhere.&lt;em&gt;What kind of a person would work here&lt;/em&gt;, I asked myself. Against my better judgment, I tapped on the door and called out &amp;quot;Hello?&amp;quot;.&lt;/p&gt;
&lt;p&gt;Within seconds, a podgy man wearing an ill-fitting shirt and high pants scuffled out from an office behind me. Introducing himself as the managing director, he offered to take me to the tech staff for an interview.&lt;/p&gt;
&lt;p&gt;The managing director led me through some more cluttered areas, all which were barely illuminated with flickering bulbs. The atmosphere of silence and despair was overpowering, and no-one seemed to be around. That is, until and Bob appeared.&lt;/p&gt;
&lt;p&gt;Tim was a ratty fellow, and Bob a bespectacled introvert who avoided eye contact. There was instant tension, the sort that arises when you intuitively know you have almost nothing in common. The interview started with awkward small talk &amp;ndash; they didn&amp;rsquo;t like sports, they didn&amp;rsquo;t know what the weather was like, and they had no plans for the upcoming summer months &amp;ndash; which lead into a rather long moment of uncomfortable silence.&lt;/p&gt;
&lt;p&gt;During this I noticed an unnerving event. Oblivious to the interview, Tim froze for a few seconds and stared intently at an invisible point about two feet from his face. Suddenly, he scrunched his face like he'd eaten the sourest thing in the world. It was almost as if his face was collapsing inwards. Then he shook his head and returning to the interview.&lt;/p&gt;
&lt;p&gt;Silence. Then Bob leaned over with a question: &amp;quot;How is your C++, like, are you good?&amp;quot;&lt;/p&gt;
&lt;p&gt;I got out an answer about how I had been developing in C++ for years and felt very comfortable with it. And then another uncomfortable silence descended.&lt;/p&gt;
&lt;p&gt;Just as I was about to mention STL, Tim asked when I would be available to start, to which I replied &amp;ldquo;within a week.&amp;rdquo; The interview ended after that question, and somehow I managed not to run from the office.&lt;/p&gt;
&lt;p&gt;Needless to say, once outside, I drove away very quickly. Months later a letter arrived, apologizing for forgetting to inform me of the outcome of the interview. Somehow, I didn't get offered the job...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Oops!&lt;/u&gt;&lt;/b&gt; (from Drew S) &lt;br /&gt;
Having been laid off recently, I interviewed for a developer job at a local pyramid scheme matrix marketing Vacation Company. Within a few minutes of meeting Ray, the company&amp;rsquo;s COO, he told me that my university degree and six years of prior programming experience were meaningless. Especially when compared with their head IT guy, Phil.&lt;/p&gt;
&lt;p&gt;It must have been my lucky day, because not only had Phil graced the office with his presence that afternoon, but was willing to grant me an audience. Shortly after Ray called him, Phil entered the conference room and nodded hello.&lt;/p&gt;
&lt;p&gt;Phil began by asked me a few technical questions and then inquired if I had a portfolio available. As a matter of fact I did, so I proceeded to show him my online portfolio, which included all sorts of different code examples and libraries I had written.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Whooooa there,&amp;rdquo; Phil stooped me, &amp;ldquo;we don&amp;rsquo;t do oop here.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m sorry,&amp;rdquo; I said, trying to figure out what &amp;ldquo;oop&amp;rdquo; meant, &amp;ldquo;you don&amp;rsquo;t do&amp;hellip; oop? What do you&amp;ndash; wait, do you mean object oriented programming.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Yah,&amp;rdquo; Phil responded, &amp;ldquo;it doesn&amp;rsquo;t really fit our business model&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Wait,&amp;rdquo; I was a bit confused, &amp;ldquo;you guys use ASP.NET; that&amp;rsquo;s an object-oriented framework.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Phil scoffed and stood up. &amp;ldquo;I gotta get back,&amp;rdquo; he announced. Looking at me, he added &amp;ldquo;let me know if you have any non-oop code you can show. Then we&amp;rsquo;ll chat.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Ray&amp;rsquo;s eyes intently followed Phil as he exited the conference room. &amp;ldquo;See what I mean,&amp;rdquo; he said in a mesmerized tone, &amp;ldquo;that guy is really hard core.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I let the sound of silence be my response.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Get him some code,&amp;rdquo; Ray said, looking back at me, &amp;ldquo;he might be willing to take you under his wing. But I&amp;rsquo;ll have to look at the books and see what makes sense from a hiring standpoint.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I never got around to sending any &amp;ldquo;non-oop&amp;rdquo; code, but I did see their name on the local news a few months later. Something about deceptive sales practices, fraud, investigation, and that sort of thing. They&amp;rsquo;re not really around anymore, and I can&amp;rsquo;t say I&amp;rsquo;m upset by that.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6612"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6612&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rTPTkRUzr8vuhW1vY1b_jXhA3CM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rTPTkRUzr8vuhW1vY1b_jXhA3CM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rTPTkRUzr8vuhW1vY1b_jXhA3CM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rTPTkRUzr8vuhW1vY1b_jXhA3CM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=F0CEnAXZ2rY:6Ysji34_ovI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=F0CEnAXZ2rY:6Ysji34_ovI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=F0CEnAXZ2rY:6Ysji34_ovI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/F0CEnAXZ2rY" height="1" width="1"/&gt;</description> 
			<slash:comments>155</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Winds-of-Recession,-A-Doomed-Interivew,-and-Oops!.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: What Could Be Easier Than XML?</title> 
			<link>http://thedailywtf.com/Articles/What-Could-Be-Easier-Than-XML.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Mon, 22 Jun 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6611</guid> 
			<description>&lt;p&gt;&lt;b&gt;JT Klopcic&lt;/b&gt; could not believe his eyes. It was supposed to be a simple assignment. The length of some data field was changing, so he needed to walk through the import process and make sure that all the associated data sizes would accommodate the new length.&lt;/p&gt;
&lt;p&gt;JT was unfamiliar with the process, so he took a look at the import file. Thankfully, it was all well-formed XML. &lt;em&gt;This should be rather easy&lt;/em&gt;, he thought. And then he stumbled over this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
// parse the XML data file
if (File.Exists(StdFileName))
{
    // opens file for header data extraction.
    _sr = new StreamReader(StdFileName);

    FindHeaderString(_sr);

    // First line 
    oHeader.FixABC = Convert.ToDouble(m_Textline.Substring(11, 6));
    oHeader.FixDEF = Convert.ToDouble(m_Textline.Substring(19, 6));
    oHeader.XYZ = Convert.ToDouble(m_Textline.Substring(26, 6));
    oHeader.PDQs = Convert.ToDouble(m_Textline.Substring(33, 6));
    oHeader.ChkIn = Convert.ToDouble(m_Textline.Substring(41, 6));
    oHeader.DblFix = Convert.ToDouble(m_Textline.Substring(49, 6));
    oHeader.DblUnload = Convert.ToDouble(m_Textline.Substring(57, 6));
    oHeader.DblLoad = Convert.ToDouble(m_Textline.Substring(65, 6));

    // Reads the next line and find the header string.
    if ((m_Textline = _sr.ReadLine()) != null)
    {
	FindHeaderString(_sr);
	// 2nd line 
	oHeader.DelAdj = Convert.ToDouble(m_Textline.Substring(73, 6));
	oHeader.PSPPerSt = Convert.ToDouble(m_Textline.Substring(82, 6));
	oHeader.PSPPerPk = Convert.ToDouble(m_Textline.Substring(91, 6));
	oHeader.PSPPerPg = Convert.ToDouble(m_Textline.Substring(100, 6));
	oHeader.PSPPerSetup = Convert.ToDouble(m_Textline.Substring(108, 6));
	oHeader.OffProp = Convert.ToDouble(m_Textline.Substring(117, 6));
	oHeader.OnProp = Convert.ToDouble(m_Textline.Substring(126, 6));&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;It was not going to be as easy as he thought.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6611"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6611&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H5R4Gju4iFDPQ5qEfKYI6nGghmQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H5R4Gju4iFDPQ5qEfKYI6nGghmQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H5R4Gju4iFDPQ5qEfKYI6nGghmQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H5R4Gju4iFDPQ5qEfKYI6nGghmQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=oW7WROEq7k4:CWcKJqP1bZA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=oW7WROEq7k4:CWcKJqP1bZA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=oW7WROEq7k4:CWcKJqP1bZA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/oW7WROEq7k4" height="1" width="1"/&gt;</description> 
			<slash:comments>145</slash:comments> 
			<comments>http://thedailywtf.com/Comments/What-Could-Be-Easier-Than-XML.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>A Long Way to the Top</title> 
			<link>http://thedailywtf.com/Articles/A-Long-Way-to-the-Top.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Fri, 19 Jun 2009 13:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6610</guid> 
			<description>&lt;p&gt;Matt was excited: he had landed his first real web development job. Granted, it pretty far down on the totem pole &amp;ndash; webmaster for a local wholesaler &amp;ndash; but it was a foot in the door. Next job he might have the opportunity to do a little bit of PHP. And the job after that, maybe some MySQL. Soon enough, he&amp;rsquo;d be a full-fledged developer with a r&amp;eacute;sum&amp;eacute; overflowing with buzzwords from AJAX to Zend.&lt;/p&gt;
&lt;p&gt;But for now, his job was to maintain the wholesaler&amp;rsquo;s website. Several years prior, the company had spent a bundle ($20K +) to have the site professionally designed by some local web development shop, and had been managing it in-house ever since.&lt;/p&gt;
&lt;p&gt;As a whole, the website looked pretty decent&amp;hellip; so long as you viewed it at 800x600. And used Internet Explorer 6. And didn&amp;rsquo;t scroll down before the page finished loading. Any deviation &amp;ndash; such as browsing at 1024x768 &amp;ndash; and the JavaScript-based navigation menu would throw the dropdown menu about four inches to the left of the page&amp;rsquo;s body. Or the right. Or, really, anywhere it felt like at the time, including out of view.&lt;/p&gt;
&lt;p&gt;One of the main issues behind this was they had built the entire site with nested tables set to 757 pixels wide. The homepage, for example, had 19 tables nested within the main table, some of which had a width set to 1200 pixels. Naturally, that lead to all sorts of weird wrapping which would only be noticed if you happened use something other than IE6 at 800x600.&lt;/p&gt;
&lt;p&gt;As for Matt, his first assignment was to tweak the layout so that it would work at other resolutions. And to do so without tearing up too much of the warped HTML code that the company had paid so much for.&lt;/p&gt;
&lt;p&gt;His first attempt at fixing the layout was to use Dreamweaver: just paste everything in to a properly formatted table, nice and neat. After hitting CTRL-V, Dreamweaver threw up the hourglass for about five minutes and then finally exploded:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/200906/really_big_table.jpg" /&gt;&lt;/blockquote&gt;
&lt;p&gt;A few days later, while re-scripting the menus instead of reformatting the evil tables, Matt found a style sheet buried in an include file. It's filename? crm_useless.css. It also happened to live in a directory that Matt had not seen before, and where he found a full copy of the entire site, file for file.&lt;/p&gt;
&lt;p&gt;It was definitely going to be a long way to the top.&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Brought to you by the &lt;a href="http://jobs.thedailywtf.com/1001/browse.aspx"&gt;Non-WTF Job Board&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://jobs.thedailywtf.com/1001/rsslink.ashx?PubPostId=6610"&gt;&lt;img border="0" src="http://jobs.thedailywtf.com/1001/img.ashx?PubPostId=6610&amp;Record=False" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wp7XfLOQMHa0ONoa1FCVV_mLTXk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wp7XfLOQMHa0ONoa1FCVV_mLTXk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Wp7XfLOQMHa0ONoa1FCVV_mLTXk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wp7XfLOQMHa0ONoa1FCVV_mLTXk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=FfapmwEWSqw:vUvplhKTyYI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?i=FfapmwEWSqw:vUvplhKTyYI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDailyWtf?a=FfapmwEWSqw:vUvplhKTyYI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDailyWtf?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheDailyWtf/~4/FfapmwEWSqw" height="1" width="1"/&gt;</description> 
			<slash:comments>129</slash:comments> 
			<comments>http://thedailywtf.com/Comments/A-Long-Way-to-the-Top.aspx</comments>
		</item>
		
	</channel>
</rss>
