<?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://syndication.thedailywtf.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> 

		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://syndication.thedailywtf.com/TheDailyWtf" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="thedailywtf" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>41.36995</geo:lat><geo:long>-81.862591</geo:long><item>
			<author>Alex Papadimoulis</author> 
			<title>Error'd: 19999 Below</title> 
			<link>http://thedailywtf.com/Articles/19999-Below.aspx</link> 
			<category>Error'd</category>
			<pubDate>Fri, 27 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7254</guid> 
			<description>&lt;p&gt;&lt;a name="Pic1"&gt;&lt;/a&gt;&amp;quot;Mac OS X has an odd definition of gigabyte,&amp;quot; writes &lt;b&gt;Kevin Kelly&lt;/b&gt;.&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/12/01/err3/Pic1.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic2"&gt;&lt;/a&gt;&amp;quot;I saw this when on holiday to Barcelona,&amp;quot; writes Greig Hamilton, &amp;quot;it was a huge screen on La Rambla, the busiest street in Barcelona&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/12/01/err3/Pic2.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic3"&gt;&lt;/a&gt;&lt;b&gt;Drake&lt;/b&gt; wonders, &amp;quot;just what would I be saying 'Yes' or 'No' to?&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/12/01/err3/Pic3.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic4"&gt;&lt;/a&gt;&amp;quot;Well, apparently it actually is possible to get colder than 0 Kelvin,&amp;quot; &lt;b&gt;Dorian H&lt;/b&gt;, &amp;quot;and of course I'm right there.&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/12/01/err3/Pic4.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic5"&gt;&lt;/a&gt;&amp;quot;In the end,&amp;quot; &lt;b&gt;Mark&lt;/b&gt; wrote, &amp;quot;I just ended up spelling out 'thirteen'.&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/12/01/err3/Pic5.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic6"&gt;&lt;/a&gt;&lt;b&gt;Bryan Scott&lt;/b&gt; writes &amp;quot;at least it doesn't charge me when they give me thanks for choosing Dell.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic6"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/12/01/err3/Pic6.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic7"&gt;&lt;/a&gt;&amp;quot;I tried to resolve a simple bug submitted to our tracker,&amp;quot; writes &lt;b&gt;Michael&lt;/b&gt;, &amp;quot;and it clearly didn't appreciate the ease with which this bug was quashed.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic7"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/12/01/err3/Pic7.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_PXP4lnQmF8nsaqZEW2FkHqNZ3Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_PXP4lnQmF8nsaqZEW2FkHqNZ3Y/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/_PXP4lnQmF8nsaqZEW2FkHqNZ3Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_PXP4lnQmF8nsaqZEW2FkHqNZ3Y/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=EUrePh8y86k:GgnueXcIHQw: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/EUrePh8y86k" height="1" width="1"/&gt;</description> 
			<slash:comments>109</slash:comments> 
			<comments>http://thedailywtf.com/Comments/19999-Below.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Sketchy Skechers.com</title> 
			<link>http://thedailywtf.com/Articles/Sketchy-Skecherscom.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Thu, 26 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7252</guid> 
			<description>&lt;p&gt;Imagine yourself as an eager, young developer. After many long months of self-study, you&amp;rsquo;ve carefully honed your craft and have skillfully mastered virtually all development technologies from enterprisey to hipster. Your twelve-page r&amp;eacute;sum&amp;eacute; could land you a job anywhere, and as it would happen, the job &lt;em&gt;you&lt;/em&gt; decided to take was at a highfalutin consultancy filled with like-minded developers who were almost as skilled as you.&lt;/p&gt;
&lt;p&gt;You and you cohorts could build anything. Literally, anything: a software cure for cancer; a software cure engine that could dynamically load cure plug-ins at runtime to cure anything; or even a software engine factory that could dynamically create engines that could dynamically load plug-ins that could do anything.&lt;/p&gt;
&lt;p&gt;And as it so happened, your virtually unbounded skillset was desperately needed to solve an otherwise unsolvable problem: build &lt;a href="http://skechers.com/"&gt;skechers.com&lt;/a&gt;. The requirements for the shoe company&amp;rsquo;s website were mind-bogglingly complex: retrieve product information from some enterprisey ERP system, format it prettily on the web, and let people place orders online.&lt;/p&gt;
&lt;p&gt;Although no one in the history of software development had ever undertaken a project of such scale, you were prepared for anything. In fact, even before hearing what the website would be for, you had already spec&amp;rsquo;d-out the architecture: use XML-based XSL to transform server-generated XML into XHTML and JavaScript.&lt;/p&gt;
&lt;p&gt;Hopefully now you can appreciate the mindset that the developer(s) of Skechers&amp;rsquo; website must have had. Their masterpiece can be seen by a simple view-source of skechers.com:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/12/01/skechers.png" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&amp;rsquo;s the XML data sent by the server when visiting &lt;a href="http://skechers.com/"&gt;http://skechers.com/&lt;/a&gt;. Your browser then spends a bit of time transforming into HTML and JavaScript using the following XSL:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/12/01/skechers-xsl.png" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While the idea of building a website like this in XML and then transforming it using XSL is absurd in and of itself, digging through the code is a treasure trove of WTF. I&amp;rsquo;m sure there are at least three levels of Hell that are more pleasant than having to maintain this JavaScript-generating XSL code:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
	var skxProduct = {}; var skxStyle = '&amp;lt;xsl:value-of select=&amp;quot;$style/@code&amp;quot;/&amp;gt;';
	&amp;lt;xsl:for-each select=&amp;quot;$style/product&amp;quot;&amp;gt;
	  skxProduct['&amp;lt;xsl:value-of select=&amp;quot;@color&amp;quot;/&amp;gt;'] = {
	  color: '&amp;lt;xsl:value-of select=&amp;quot;@primary-color&amp;quot;/&amp;gt;&amp;lt;xsl:if test=&amp;quot;@secondary-color&amp;quot;&amp;gt;
		/ &amp;lt;xsl:value-of select=&amp;quot;@secondary-color&amp;quot;/&amp;gt;
	  &amp;lt;/xsl:if&amp;gt;',
	  images: [
	  &amp;lt;xsl:for-each select=&amp;quot;media&amp;quot;&amp;gt;

		&amp;lt;xsl:sort data-type=&amp;quot;number&amp;quot; select=&amp;quot;@view&amp;quot;/&amp;gt;
		&amp;lt;xsl:if test=&amp;quot;position() &amp;amp;lt; 7&amp;quot;&amp;gt;
		  '&amp;lt;xsl:value-of select=&amp;quot;@image&amp;quot;/&amp;gt;'
		  &amp;lt;xsl:if test=&amp;quot;position() != 7&amp;quot;&amp;gt;,&amp;lt;/xsl:if&amp;gt;
		&amp;lt;/xsl:if&amp;gt;
	  &amp;lt;/xsl:for-each&amp;gt;
	  ],
	  inventory: [
	  &amp;lt;xsl:for-each select=&amp;quot;sku&amp;quot;&amp;gt;
		&amp;lt;xsl:sort data-type=&amp;quot;number&amp;quot; select=&amp;quot;@pos&amp;quot;/&amp;gt;

		{
		size: '&amp;lt;xsl:value-of select=&amp;quot;@size&amp;quot;/&amp;gt;',
		&amp;lt;xsl:if test=&amp;quot;@type&amp;quot;&amp;gt;
		  type: '&amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot;/&amp;gt;',
		&amp;lt;/xsl:if&amp;gt;
		stock: '&amp;lt;xsl:value-of select=&amp;quot;@in-stock&amp;quot;/&amp;gt;',
		&amp;lt;xsl:if test=&amp;quot;@disc&amp;quot;&amp;gt;
		  disc: '&amp;lt;xsl:value-of select=&amp;quot;@disc&amp;quot;/&amp;gt;',
		&amp;lt;/xsl:if&amp;gt;
		price: '&amp;lt;xsl:value-of select=&amp;quot;@price&amp;quot;/&amp;gt;',
		upc: '&amp;lt;xsl:value-of select=&amp;quot;@upc&amp;quot;/&amp;gt;'
		}
		&amp;lt;xsl:if test=&amp;quot;position() != last()&amp;quot;&amp;gt;,&amp;lt;/xsl:if&amp;gt;

	  &amp;lt;/xsl:for-each&amp;gt;
	  ]
	  };
	&amp;lt;/xsl:for-each&amp;gt;
  &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;I shudder at the thought of how labyrinthine the server-side code generating this must be.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve preserved (well, after some indentation/formatting) some of the files for posterity. Just right-click download, then view in your favorite text editor for best experience.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://img.thedailywtf.com/images/12/01/skechers.xml"&gt;skechers.xml&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://img.thedailywtf.com/images/12/01/skechers-xsl.xml"&gt;skechers-xsl.xml&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://img.thedailywtf.com/images/12/01/skechers-xsl-secure.xml"&gt;skechers-xsl-secure.xml&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://img.thedailywtf.com/images/12/01/skechers.js"&gt;skechers.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;m sure there&amp;rsquo;s plenty more fun examples to be found at all levels of skechers.com; feel free to &lt;a href="http://thedailywtf.com/Comments/Sketchy-Skecherscom.aspx"&gt;share them in the comments&lt;/a&gt; or &lt;a href="http://thedailywtf.com/contact.aspx"&gt;send them to me&lt;/a&gt; if you think they&amp;rsquo;d deserve an article of their own.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V-7fjcy-zNTP0DzkcL_WpU6wnTc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V-7fjcy-zNTP0DzkcL_WpU6wnTc/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/V-7fjcy-zNTP0DzkcL_WpU6wnTc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V-7fjcy-zNTP0DzkcL_WpU6wnTc/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=nR8PoClbypU:xgDDJAqV0Ws: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/nR8PoClbypU" height="1" width="1"/&gt;</description> 
			<slash:comments>161</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Sketchy-Skecherscom.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Tales from the Interview: The Storage Warehouse, The Most Ethical, and The Customizer</title> 
			<link>http://thedailywtf.com/Articles/The-Storage-Warehouse,-The-Most-Ethical,-and-The-Customizer.aspx</link> 
			<category>Tales from the Interview</category>
			<pubDate>Tue, 24 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7250</guid> 
			<description>&lt;p&gt;&lt;b&gt;&lt;u&gt;The Storage Warehouse&lt;/u&gt;&lt;/b&gt; (from Grig)&lt;br /&gt;
The first recession I remember was in the early 1990&amp;rsquo;s, and I remember it so well because I was looking for a job. The want ads listed an opening for a UNIX admin &amp;ndash; something which was right up my alley &amp;ndash; so I gave the company a ring.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Ye-LLO!&amp;rdquo; was the greeting after a couple of rings. In the background, it sounded like John Philip Sousa March music was playing on a 1960s AM transistor radio.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Um&amp;hellip; I am calling about the want ad in the paper for a UNIX admin?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Yeah yeah, sure sure,&amp;rdquo; he responded enthusiastically.&lt;/p&gt;
&lt;p&gt;After a long pause, I asked &amp;ldquo;is the position still available?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Uh nuh.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Another long pause led me to ask &amp;ldquo;So it is?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Yah.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Would you like me to come in for an interview?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Nah, I can do it over the phone,&amp;rdquo; the sound of a chair squeaking came through the line and the music stopped playing, &amp;ldquo;Okay&amp;hellip; I am looking for someone who can program UNIX. Also, has to know PASCAL pretty well. Processor design. Vast familiarity with X.25 protocol. Some BASIC, ALGOL, Lisp, Borland, relational databases, Lotus spreadsheets, VAX administration, PC repair, all those sorts of things. Oh, and also, have a degree in engineering and computer programming.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Um, really? Processor design? What kind of job is this?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Well, it&amp;rsquo;s an assistant manager of a storage warehouse.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;You mean, like a data center?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;No, no,&amp;rdquo; he chuckled, &amp;ldquo;self-storage. You know, like U-Haul and EZ-Storage.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;So why would an assistant manager of a storage place need all those skills?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;They don&amp;rsquo;t. I am just sick of getting dumbass applicants. I thought I&amp;rsquo;d raise the bar a little and only get smart college guys and the like.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I didn't know what to say. I wished him well, and hung up. That ad was up for nearly a year in the want ads.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;The Customizer&lt;/u&gt;&lt;/b&gt; (from D Lewis)&lt;br /&gt;
When I walked in for my interview, I saw that the receptionist was on the phone so I smiled at her to make my presence known and waited quietly near the back of the room. Looking around, I admired the outdated wallpaper falling off the walls and the non-framed artwork Scotch-taped to the wallpaper. I also couldn&amp;rsquo;t help but overhear the receptionist&amp;rsquo;s conversation; it definitely wasn&amp;rsquo;t business related.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;They better give me my raise,&amp;rdquo; she said with an attitude, &amp;ldquo;it&amp;rsquo;s been three years and I am well overdue.&amp;rdquo; A few moments later, &amp;ldquo;mmmkay, well I&amp;rsquo;ll talk to you later then, I gotta go anyway.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The experience didn&amp;rsquo;t inspire a lot of confidence. Eventually, the receptionist let them know I had arrived and the development manager lead me to the board room. She boasted that the company made three million last year, and they were really on a growth path. As she described their application portfolio, she kept mentioning that they&amp;rsquo;re doing all of their work in Microsoft Access.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;But this is something you&amp;rsquo;re looking to move away from,&amp;rdquo; I said inquisitively, &amp;ldquo;as part of the expansion?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Oh no no,&amp;rdquo; she replied, &amp;ldquo;Microsoft Access is by far the best model for our company. Here, let me show you why.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;She then pulled out her laptop and navigated to a folder on her drive that had a hundred or so different Access databases. Each was for a different customer and was slightly customized to have proper label names, field names, form fields, etc. A large part of my job would be rolling out &amp;ldquo;product wide&amp;rdquo; features to each and every database.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;You know, a .NET-based solution using SQL Server would scale much better,&amp;rdquo; I explained, &amp;ldquo;you could use plug-ins, templates, or all sorts of things to keep each customer&amp;rsquo;s database unique but share a common code base.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Well,&amp;rdquo; she responded, &amp;ldquo;they already do, we just make sure to copy and paste the same module code across each database. Everyone&amp;rsquo;s familiar with it, so we&amp;rsquo;re sticking with Access.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Shortly after that, the HR Manager walked to discuss other aspects of the job. When he opened up his briefcase, a Knife, Fork and Spoon fell out onto the table, making a loud clanking noise. &amp;ldquo;The cleaner has a habit of stealing silverware,&amp;rdquo; he quipped, &amp;ldquo;so, I tend to bring my own.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;By this point, I had decided there was no way I&amp;rsquo;d ever work at such a place. Of course, I was too shy to walk out, so I let the HR manager give his spiel.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;We have had a problem with people leaving prematurely,&amp;rdquo; he said, &amp;ldquo;so you would need to sign an agreement that you&amp;rsquo;ll work here for two years.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I said nothing.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;But after that, we give great raises.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;The URL Rewriter&lt;/u&gt;&lt;/b&gt; (from Jon)&lt;br /&gt;
Despite overseas developers getting some bad press now and then, one has to feel sorry for the working conditions they must have to put up with. According to this guy's CV not only did he have to code on paper, but they also made him stand in for the web server some of the time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
Responsibilities:
  * Coding in C#.net (asp.net).
  * Written Java Script functions, bug fixing.
  * Url rewriting.&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;The Most Ethical&lt;/u&gt;&lt;/b&gt; (from Fred Rosenberger)&lt;br /&gt;
&amp;ldquo;We&amp;rsquo;re different than all the rest,&amp;rdquo; the smiling account manager at a recruiting agency told me, &amp;ldquo;we pride ourselves on being the most honest and the most ethical of all placement firms.&amp;rdquo; That same line was repeated by nearly everyone I met at the organization: the technical interviewer, the senior headhunter, and even the president himself.&lt;/p&gt;
&lt;p&gt;They all seemed nice enough, but in a nice used car salesman sort of way. As we reviewed different job openings they were trying to fill, one in particular was seeking a candidate with an Electrical Engineering degree who had moved over into software.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;You mentioned that your father was an Electrical Engineering professor for thirty-five years, right?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I nodded, not sure where that was going.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Well, I&amp;rsquo;m sure in all those years you learned a thing or two about Electrical Engineering? I mean, how could you not with your father talking about it so much.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I furrowed my brow a little bit.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Let&amp;rsquo;s figure out a way to get your father&amp;rsquo;s experience in Electrical Engineering on your resume &amp;ndash; that&amp;rsquo;ll certainly get you past HR and score an actual interview.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I almost laughed out loud. Not wanting to get in an argument with them, I made some excuses that I didn&amp;rsquo;t want to drive that far. In retrospect, they still may have been the most honest and the most ethical of all placement firms.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EXp7YNk4FdRl3Gl8KGPlZ8kz5B8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EXp7YNk4FdRl3Gl8KGPlZ8kz5B8/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/EXp7YNk4FdRl3Gl8KGPlZ8kz5B8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EXp7YNk4FdRl3Gl8KGPlZ8kz5B8/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=l6exxHhZWQY:EFHa-8vPTcM: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/l6exxHhZWQY" height="1" width="1"/&gt;</description> 
			<slash:comments>138</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Storage-Warehouse,-The-Most-Ethical,-and-The-Customizer.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: Globally Coupled</title> 
			<link>http://thedailywtf.com/Articles/Globally-Coupled.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Mon, 23 Jan 2012 16:15:00 GMT</pubDate> 
			<guid isPermaLink="false">7249</guid> 
			<description>&lt;p&gt;&amp;quot;I work on a team maintaining a large and enterprisey PHP system,&amp;quot; writes &lt;b&gt;Amber&lt;/b&gt;, &amp;quot;and as such, my job mostly involves doing enhancements and fixing bugs.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;It sounds normal enough, if not for the fact that almost all variables are globals and each of them might or might not be initialized in the same way, or the same place, as seen in this screenshot.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/12/01/search.png" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;quot;That's tolerable, but the real problem arises when I need to reuse a function in a different location. I've added line breaks and formatting to make some sense of things...&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
global $dbCon;
  $dbCon-&amp;gt;InitOpen($cf_db, 'db1');

.... snip a few hundred lines ....

function getRanking () {

  global $dbCon, $dbCon_test, $dbCon2, $cf_db;
  include '../rtuser/rtutil.php';
  $dbCon_test-&amp;gt;
  InitOpen($cf_db, 'db2'); 

  ..... snip ....

  /* rt_rank() requires $dbCon as db connection to testdb
   * in this context, $dbCon currently points to Db1 thus
   * temporarily pointing $dbCon to testdb is necessary (fred)
   */

  $tempdbConDb1 = $dbCon;
  //assign $dbCon_test to $dbCon to have testdb connection
  $dbCon = $dbCon_test;       
  
  $memcacheKey = 'hof_ranking_' . $cntr . ':' . $offset;
  
  //call rtutil.php's getrtRank()
  // cache db r in memcache for 5 minutes
  $r = unserialize(getMemCache($dbCon2, $memcacheKey, '5 minute', 'getrtRank', $args));                                                      

  //swap back $dbCon so that the code relying on $dbCon pointing to Db1 won't be affected
  $dbCon = $tempdbConDb1;      

  include '../rateuser/rateutil.php';

  ... snip ...

  /* rate_rank() requires $sql as db connection to testdb
   * in this context, $sql currently points to gm thus
   * temporarily pointing $sql to testdb is necessary (fred)
   */

  $tempSqlGm = $sql;

  //assign $sql_test to $sql to have testdb connection
  $sql = $sql_test;       
  $memcacheKey = 'hof_ranking_' . $cntr . ':' . $offset;
  
  //call rateutil.php's getRateRank()
  $result = unserialize(getCacheInfo($sql2, $memcacheKey, '5 minute', 'getRateRank', $args));
  list($uidlist, $nicks, $votes, $imageIds, $genders) = $result;                                                      

  //swap back $sql so that the code relying on $sql pointing to gm won't be affected
  $sql = $tempSqlGm;      
//....
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Amber continues, &amp;quot;what happened here was that, in file A, a global database link identifier pointed to database 1 but in the include file B, the same variable was supposed to point to database 2. What I did was to swap out the link identifier whenever a function in file B was involved, then swap back whenever a function in file A was involved. Injection was not an option as the Globals were so deeply and variably coupled that decoupling them needs to be done on a case-by-case basis. And that was just one place...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E4ZY6e89rhGiegHHw-B9hMPpFJI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E4ZY6e89rhGiegHHw-B9hMPpFJI/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/E4ZY6e89rhGiegHHw-B9hMPpFJI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E4ZY6e89rhGiegHHw-B9hMPpFJI/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=S_Vr60a5puc:C09uCU9sH9A: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/S_Vr60a5puc" height="1" width="1"/&gt;</description> 
			<slash:comments>96</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Globally-Coupled.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Error'd: Sponsor Appreciation, SQL Scourge, and More Error'd</title> 
			<link>http://thedailywtf.com/Articles/Sponsor-Appreciation,-SQL-Scourge,-and-More-Errord.aspx</link> 
			<category>Error'd</category>
			<pubDate>Fri, 20 Jan 2012 15:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7248</guid> 
			<description>&lt;p&gt;We've got some great companies that sponsor &lt;em&gt;The Daily WTF&lt;/em&gt;. And all they ask in return... just take a moment or two to check out what they do. It's some pretty cool stuff.&lt;/p&gt;
&lt;blockquote&gt;
&lt;table&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td colspan="3"&gt;
            &lt;h3 style="padding-bottom: 2px; background-color: rgb(171,51,43); margin: 0px; padding-left: 2px; padding-right: 2px; color: rgb(255,255,255); padding-top: 2px"&gt;TDWTF Sponsors&lt;/h3&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://www.singlehop.com/cloud-hosting/public-cloud-promo-1.php?promo=cloud-1stmo1usd&amp;amp;utm_campaign=dailywtf&amp;amp;utm_source=dailywtf"&gt;&lt;img border="0" alt="Singlehop Logo" src="http://img.thedailywtf.com/images/12/01/singlehop.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
            &lt;td&gt;&lt;b&gt;&lt;a href="http://www.singlehop.com/cloud-hosting/public-cloud-promo-1.php?promo=cloud-1stmo1usd&amp;amp;utm_campaign=dailywtf&amp;amp;utm_source=dailywtf"&gt;SingleHop Cloud Instances 98% off&lt;/a&gt;&lt;/b&gt; - Design, deploy and manage your cloud instance on the public cloud for only $1 for your 1st month (normally $50/month!) Use your Cloud Instnace to test new code, experiment with new software or gain extra development time...it's your choice! Try it today with coupon code &amp;quot;CLOUD1&amp;quot;.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=163&amp;amp;AdvertiserID=25&amp;amp;CampaignID=73&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=72927"&gt;&lt;img border="0" alt="New Relic" src="http://img.thedailywtf.com/images/200904/NewRelic.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=163&amp;amp;AdvertiserID=25&amp;amp;CampaignID=73&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=72927" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=163&amp;amp;AdvertiserID=25&amp;amp;CampaignID=73&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=72927"&gt;New Relic&lt;/a&gt;&lt;/strong&gt; is basically a magical, real-time performance and user monitoring tool that works on virtually any web platform: Java, Ruby, PHP, .net, Python, Ruby on Rails. I'm not sure how it works (magic?), but it's incredibly easy to use and is pretty inexpensive. Remember: &lt;a href="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=163&amp;amp;AdvertiserID=25&amp;amp;CampaignID=73&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=72927"&gt;performance is a must-have feature&lt;/a&gt;!&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=181&amp;amp;AdvertiserID=28&amp;amp;CampaignID=84&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=882891"&gt;&lt;img border="0" alt="New Relic" src="http://img.thedailywtf.com/images/201111/spon/monetate_logo.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=181&amp;amp;AdvertiserID=28&amp;amp;CampaignID=84&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=882891" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=181&amp;amp;AdvertiserID=28&amp;amp;CampaignID=84&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=882891"&gt;Monetate&lt;/a&gt;&lt;/strong&gt; - their testing, targeting and personalization platform for online retailers is used on leading websites like Best Buy, Sports Authority and Urban Outfitters. If you&amp;rsquo;re a problem-solver who is passionate about rich web applications, scaling Internet applications to billions of page views, and working with big data, then you&amp;rsquo;re a perfect fit for our close-knit and agile team.!&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=164&amp;amp;AdvertiserID=14&amp;amp;CampaignID=74&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=446434"&gt;&lt;img border="0" alt="BuildMaster" src="http://img.thedailywtf.com/images/201107/inedo.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;img border="0" alt="" width="1" height="1" src="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=164&amp;amp;AdvertiserID=14&amp;amp;CampaignID=74&amp;amp;Task=Get&amp;amp;Mode=TEXT&amp;amp;SiteID=1&amp;amp;RandomNumber=446434" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;&lt;a target="_Blank" href="http://please-support.thedailywtf.com/a.aspx?ZoneID=0&amp;amp;BannerID=164&amp;amp;AdvertiserID=14&amp;amp;CampaignID=74&amp;amp;Task=Click&amp;amp;SiteID=1&amp;amp;RandomNumber=446434"&gt;Inedo&lt;/a&gt;&lt;/strong&gt; - the makers of BuildMaster, the &lt;b&gt;free&lt;/b&gt;, and easy-to-use, web-based deployment and release management tool. Going far beyond Continuous Integration, BuildMaster delivers a series of robust features unparalleled by other build-promote-deploy-distribute tools. Oh, did I mention it's free?&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;a href="http://aws.amazon.com/dynamodb/?utm_source=WTF&amp;amp;utm_medium=text&amp;amp;utm_campaign=BA_WTF_DynDB&amp;amp;UTM_content=sponsor_link&amp;amp;trk=BA_WTF_DynDB"&gt;&lt;img border="0" alt="Singlehop Logo" src="http://img.thedailywtf.com/images/12/01/amazon.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
            &lt;td&gt;&lt;b&gt;&lt;a href="http://aws.amazon.com/dynamodb/?utm_source=WTF&amp;amp;utm_medium=text&amp;amp;utm_campaign=BA_WTF_DynDB&amp;amp;UTM_content=sponsor_link&amp;amp;trk=BA_WTF_DynDB"&gt;Amazon DynamoDB&lt;/a&gt;&lt;/b&gt; - is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. With a few clicks in the AWS Management Console, you can launch a new Amazon DynamoDB database table, scale up or down request capacity for the table without downtime or performance degradation, and gain visibility into resource utilization and performance metrics.&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;And now for our regularly scheduled program...&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name="Pic1"&gt;&lt;/a&gt;&amp;quot;When filling out a web health assessment, I'm pretty sure I didn't mention the scourge of %_SQL_TEXT that runs in my family,&amp;quot; writes &lt;b&gt;Josh Ward&lt;/b&gt;, &amp;quot;it's an embarrassing condition, to be sure!&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/12/01/err2/Pic1.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic2"&gt;&lt;/a&gt;&amp;quot;I knew Ikea carried a lot of stuff, but a Petabyte is bigger than I expected,&amp;quot; &lt;b&gt;Nero Imhard&lt;/b&gt;, &amp;quot;still, I waited until I was within WiFi reach before proceeding.&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/12/01/err2/Pic2.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic3"&gt;&lt;/a&gt;&amp;quot;I got this while trying to start DBArtisan,&amp;quot; writes &lt;b&gt;Willy&lt;/b&gt;, &amp;quot;is it telling me or asking me?&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/12/01/err2/Pic3.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic4"&gt;&lt;/a&gt;&amp;quot;I read that the HTC Thunderbolt has great download speeds but poor battery life,&amp;quot; &lt;b&gt;Andrew&lt;/b&gt; writes, &amp;quot;but I noticed that the clocks are a little out of sync. Maybe I can find an app that syncs both clocks to the correct time.&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/12/01/err2/Pic4.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;Erkki Laite&lt;/b&gt; found this in his local paper, the Finnish &lt;em&gt;Turun Sanomat&lt;/em&gt; on 02.11.2011.&lt;/p&gt;
&lt;p&gt;&lt;a name="pic5"&gt;&lt;/a&gt;&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/12/01/err2/pic5.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic6"&gt;&lt;/a&gt;&lt;b&gt;Jim Moyle&lt;/b&gt; spotted this on the front page of booking.com.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic6"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/12/01/err2/Pic6.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic7"&gt;&lt;/a&gt;&amp;quot;I guess if someone at the mall searched to find where multi(0)disk(0)rdisk(0)partition(1) was, the directory would have been correct,&amp;quot; writes &lt;b&gt;Darin Rousseau&lt;/b&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic7"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/12/01/err2/Pic7.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2_yPJK57ahJsogbI-HDFqBcYuZM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2_yPJK57ahJsogbI-HDFqBcYuZM/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/2_yPJK57ahJsogbI-HDFqBcYuZM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2_yPJK57ahJsogbI-HDFqBcYuZM/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=tKql0h5_LaI:THSqneBkiRA: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/tKql0h5_LaI" height="1" width="1"/&gt;</description> 
			<slash:comments>73</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Sponsor-Appreciation,-SQL-Scourge,-and-More-Errord.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: Pluralized!</title> 
			<link>http://thedailywtf.com/Articles/Pluralized!.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Thu, 19 Jan 2012 17:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7247</guid> 
			<description>&lt;p&gt;&amp;quot;When digging through some code that was on the refactor list, I came accross some validation logic that checks if the user selected enough options on the form,&amp;quot; writes &lt;b&gt;Chris Osgood&lt;/b&gt;, &amp;quot;if enough options weren't selected, you'd get an error message along that said something like 'at least 3 options are required'.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;It took a little bit of coding to get that validate message. The '3' was obviously dynamic, and if there was only one missing selection, then 'are' was replaced with 'is'. As for the word 'option'...it was is PLURALIZED!&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
/// &amp;lt;summary&amp;gt;
/// Changes a singular string to plural e.g. &amp;quot;Monkey&amp;quot; =&amp;gt; &amp;quot;Monkeys&amp;quot;.
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&amp;quot;text&amp;quot;&amp;gt;The text to PLURALIZE!&amp;lt;/param&amp;gt;
/// &amp;lt;returns&amp;gt;A plural string.&amp;lt;/returns&amp;gt;
public static string Pluralize(string text)
{
    if (text.Length == 0)
    {
        return text;
    }

    string result = text;

    if (result.Equals(&amp;quot;sheep&amp;quot;, StringComparison.OrdinalIgnoreCase))
    {
        return &amp;quot;sheep&amp;quot;;
    }
    else if (result.Equals(&amp;quot;leaf&amp;quot;, StringComparison.OrdinalIgnoreCase))
    {
        return &amp;quot;leaves&amp;quot;;
    }
    else if (result.Equals(&amp;quot;thief&amp;quot;, StringComparison.OrdinalIgnoreCase))
    {
        return &amp;quot;thieves&amp;quot;;
    }
    else if (result.Equals(&amp;quot;potato&amp;quot;, StringComparison.InvariantCultureIgnoreCase))
    {
        return &amp;quot;potatoes&amp;quot;;
    }
    else if (result.EndsWith(&amp;quot;y&amp;quot;, StringComparison.InvariantCultureIgnoreCase) &amp;amp;&amp;amp;
        !result.EndsWith(&amp;quot;ey&amp;quot;, StringComparison.InvariantCultureIgnoreCase))
    {
        // Don't pluralize &amp;quot;by&amp;quot;
        if (result.Length &amp;gt; 2 &amp;amp;&amp;amp; !result.EndsWith(&amp;quot; by&amp;quot;, StringComparison.InvariantCultureIgnoreCase))
        {
            result = result.Truncate(result.Length - 1) + &amp;quot;ies&amp;quot;;
        }
    }
    else if (result.EndsWith(&amp;quot;us&amp;quot;, StringComparison.InvariantCultureIgnoreCase))
    {
        // http://en.wikipedia.org/wiki/Plural_form_of_words_ending_in_-us
        result += &amp;quot;es&amp;quot;;
    }
    else if (result.EndsWith(&amp;quot;x&amp;quot;, StringComparison.InvariantCultureIgnoreCase))
    {
        result += &amp;quot;es&amp;quot;;
    }
    else if (!result.EndsWith(&amp;quot;s&amp;quot;, StringComparison.InvariantCultureIgnoreCase))
    {
        result += &amp;quot;s&amp;quot;;
    }

    return result;
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Chris continued, &amp;quot;naturally, this was the only usage of this otherwise highly useful function. We could have easily utilized this function to pluralize things like foots, tomatos, boies, wifes, and etc.!&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I9u-l5tVErnSUDd-LBqLDJX_2iA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I9u-l5tVErnSUDd-LBqLDJX_2iA/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/I9u-l5tVErnSUDd-LBqLDJX_2iA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I9u-l5tVErnSUDd-LBqLDJX_2iA/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=-WywS0EAneE:SViXapvlURo: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/-WywS0EAneE" height="1" width="1"/&gt;</description> 
			<slash:comments>157</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Pluralized!.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Support The Daily WTF in Supporting the Support SOPA Movement</title> 
			<link>http://thedailywtf.com/Articles/Support-The-Daily-WTF-in-Supporting-the-Support-SOPA-Movement.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Wed, 18 Jan 2012 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7246</guid> 
			<description>&lt;p&gt;&lt;img style="margin: 5px; float: right" class="wtf_imgfloatright" alt="" src="http://img.thedailywtf.com/images/12/01/support-sopa.png" /&gt;It&amp;rsquo;s January 18, 2012 and, while most of the internet has decided to blackout their sites in opposition to the Stop Online Piracy Act (SOPA), we&amp;rsquo;re taking an opposite stance and are whiting-out &lt;em&gt;The Daily WTF&lt;/em&gt; in support of SOPA supporters.&lt;/p&gt;
&lt;p&gt;If there&amp;rsquo;s one thing that &lt;a href="https://sites.google.com/site/boycottsopasponsors/home/list-of-supporters-and-sponsors"&gt;SOPA proponents&lt;/a&gt; like myself and SOPA opponents can agree on, it&amp;rsquo;s that &lt;strong&gt;PROTECT-IP&lt;/strong&gt; and the &lt;strong&gt;Stop Online Piracy Act&lt;/strong&gt; have little to do with protecting intellectual property and stopping online piracy.&lt;/p&gt;
&lt;p&gt;After all, those who choose to &lt;a href="http://motherboard.vice.com/2012/1/16/copyright-king-why-the-i-have-a-dream-speech-still-isn-t-free"&gt;steal creative works&lt;/a&gt; like the &amp;ldquo;I Have a Dream&amp;rdquo; speech from artists like Martin Luther King Jr. can already be sued and prosecuted under existing United States copyright laws. IP thieves living overseas can &lt;a href="http://www.bbc.co.uk/search/news/?q=tvshack"&gt;already be extradited&lt;/a&gt; to face justice in our federal courts. And the Department of Homeland Security can already &lt;a href="http://www.wired.com/threatlevel/2011/07/domain-seizures-defended/"&gt;arbitrarily seize domain names&lt;/a&gt; that fit its arbitrary standard of violating national something-or-other.&lt;/p&gt;
&lt;p&gt;While these laws will make such acts &lt;em&gt;more&lt;/em&gt; illegal (and therefore reduce infringement), they&amp;rsquo;re doing something much, much more important: helping dismantle DNS and the internet as we know it. And that&amp;rsquo;s something that we firmly support and can stand by.&lt;/p&gt;
&lt;p&gt;You see, back in the day, if you wanted to get online and access electronically-stored information like digitized photographs, electronic bulletin boards, and informational databanks, there was only one thing you needed: a telephone number. You&amp;rsquo;d simply fire up your favorite telecommunications program (mine was &lt;a href="http://www.telix.com/"&gt;Telix&lt;/a&gt;), have it dial that phone number, and after a refreshing symphony of beeps and hisses, you were online.&lt;/p&gt;
&lt;p&gt;Each phone number transported you to a quaint, peaceful community that was almost entirely self-sufficient. There was no &amp;ldquo;hyperlinking&amp;rdquo; between systems: you simply wrote down the phone number, signed-off of the current system, and then dialed into the new system. And let me tell you, there are few experiences in life that can parallel the utter bliss of discovering a new phone number and a new electronic resource.&lt;/p&gt;
&lt;p&gt;And then the Information Superhighway &amp;ndash; and its tightly integrated Domain Name System &amp;ndash; came along, decimating these peaceful, independent communities. The bulletin boards of old were ground up and churned in the giant &amp;ldquo;dot com&amp;rdquo; machine, leaving an interconnected web of domain names. There&amp;rsquo;s no more &amp;ldquo;going online&amp;rdquo; &amp;ndash; you&amp;rsquo;re already online &amp;ndash; and if you want to access an electronic resource, you can use a &amp;ldquo;domain name&amp;rdquo; like TheDailyWTF.com.&lt;/p&gt;
&lt;p&gt;Domain names are highly confusing in that they not only describe &lt;em&gt;what&lt;/em&gt; the electronic resource is, but &lt;em&gt;where&lt;/em&gt; it is as well. Nothing else in the world works like this for obvious reasons. Could you imagine the complete confusion in day-to-day things like getting a phone number? Is that &amp;ldquo;jenny eighty-six dot com&amp;rdquo; or &amp;ldquo;jenny eighty-six dot net&amp;rdquo;? We would be in complete chaos.&lt;/p&gt;
&lt;p&gt;SOPA and PROTECT-IP offer hope in returning to the golden age of telecommunications, and to the days before the Information Superhighway polluted the online culture with this domain name nonsense. Let the Domain Name System a natural death and prepare yourself for the Internet Protocol Number (IPN) renaissance. All you need to do is start a notebook that lists electronic resource names and their corresponding IPN. And let the first entry in your notebook be&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
The Daily WTF      &lt;a href="http://74.50.110.120/"&gt;74.50.110.120&lt;/a&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;We can only hope that our legislators introduce common sense guidelines to ban HTTP (and HTML/JavaScript) as well so we can all return to the more sensible GOPHER standard.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;Update 2012-01-19 00:01&lt;/b&gt; - thank you all for supporting the &lt;em&gt;Support The Daily WTF in Supporting the Support SOPA Movement&lt;/em&gt; article! In case you missed it, any request simply to content on thedailywtf.com served up this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/12/01/whiteout2.png" /&gt;&lt;/p&gt;
&lt;p&gt;Things should be restored to normal (in theory), and note that the server IP did actually change from 74.50.106.245 to 74.50.110.120. If you are still hitting the old server, your DNS is a little behind in catching up to the change.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zHPuWeGLC7s_CPgRl02q1AW7UlI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zHPuWeGLC7s_CPgRl02q1AW7UlI/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/zHPuWeGLC7s_CPgRl02q1AW7UlI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zHPuWeGLC7s_CPgRl02q1AW7UlI/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=Db4GInvrSKI:74pWFPorXDk: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/Db4GInvrSKI" height="1" width="1"/&gt;</description> 
			<slash:comments>338</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Support-The-Daily-WTF-in-Supporting-the-Support-SOPA-Movement.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Terrorists!</title> 
			<link>http://thedailywtf.com/Articles/Terrorists!.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Tue, 17 Jan 2012 17:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7245</guid> 
			<description>&lt;p&gt;&amp;ldquo;She&amp;rsquo;s convinced that terrorists have compromised her computer,&amp;rdquo; &lt;b&gt;Tom Davidson&amp;rsquo;s&lt;/b&gt; colleague &amp;ndash; a front-line helpdesk technician &amp;ndash; reported, &amp;ldquo;best I can tell, it&amp;rsquo;s some sort of virus problem, or something. It&amp;rsquo;s is a bit out of my league, but I&amp;rsquo;m hoping you can help.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;As a junior sysadmin for a mid-sized university, Tom found himself playing second-tier helpdesk support more often than not. He didn&amp;rsquo;t mind &amp;ndash; it was certainly better than first-tier, after all &amp;ndash; and he appreciated solving the unique problems that were escalated to him. The terrorist virus was definitely one such problem, and it was nothing he had heard of before.&lt;/p&gt;
&lt;p&gt;He opened up the ticket the ticket report to see what sort of troubleshooting the technician was able to do.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
******************************************************
* TICKET #APX-914321      *OPEN*          2001-05-13 *
******************************************************
*                                                    *
* ASSIGNED  : Tom Davidson                           *
* DEPT CODE : T2-SUP                                 *
* CUSTOMER  : Wendy G------                          *
* HARDWARE  : Standard Desktop D8-AM6                *
* RESOLUTION:                                        *
*                                                    *
*                                                    *
* __ ISSUE __                                        *
*                                                    *
*   The user reports that her computer may have been *
*   compromised by hackers or terrorists.            *
*                                                    *
* __ TROUBLESHOOTING __                              *
*                                                    *
*   #2001-05-13 9:33 AM #                            *
*   For the last few days, whenever she is using any *
*   Microsoft product -- Word, Outlook, even Excel - *
*   her screen will suddenly start filling up with   *
*   text. Most of it will be gibberish, but there    * 
*   are frequent references to guns and bombs and    *
*   terrorists. She believes it's a person and not a *
*   virus, as there are sometimes were weird ref-    *
*   erences to local news.                           *
*                                                    *
*   Her computer is currently turned off. Perhaps    *
*   sensibly, she will not turn anything on until a  *
*   technician physically disconnects it from the    *
*   network. I will visit ASAP.                      *
*                                                    *
*                                                    *
*   #2001-05-13 11:18 AM #                           *
*   When I arrived, the computer was still turned on *
*   but the monitor was turned off. She left open    *
*   Microsoft Word, and there was indeed lots of     *
*   gibberish on the screen. I shut down and ran a   *
*   full scan off boot. No problems reported. I      *
*   could not find any evidence of any problems, and *
*   the problem would not appear when I was there.   *
*                                                    *
*                                                    *
*   #2001-05-16 10:03 AM #                           *
*   The user called again, and said that the problem *
*   started happening again in Microsoft Excel. I    *
*   advised her to not touch a thing, and I headed   *
*   over immediately. I was able to observe the      *
*   problem first-hand. After disconnecting network, *
*   problem still occurred. I opened up Notepad, and *
*   noticed text continued to be entered. Most is    *
*   gibberish, but the intelligible text and words   *
*   implies that it's not bad keyboard, etc.         *
*                                                    *
******************************************************&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tom was intrigued. He called up the end user to say that he&amp;rsquo;d be over in just a bit. He wandered down to her office, one of those cozy professorial spaces packed tight with decades of accumulated unlabeled folders and empty tea tins, and tried repeatedly and unsuccessfully to reproduce the problem. The soft instrumental music on the radio soothed him a bit, but he definitely was getting a little frustrated. She felt it, too, and practically shouted: &amp;ldquo;I&amp;rsquo;m not crazy! I don&amp;rsquo;t understand! Usually whenever I open anything, they start right up!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;And at that moment, the words appeared. &amp;ldquo;Stand, you silly. We never eye a penny thing they start. Dry up.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The classical piece on the radio came to a conclusion, and the announcer let listeners know that they had been listening to Bach. So did Notepad, although it spelled it &amp;ldquo;Bock&amp;rdquo; and said something about the &amp;ldquo;fast circling wagons&amp;rdquo; instead of &amp;ldquo;last symphony&amp;rdquo;. and it otherwise did a pretty good job.&lt;/p&gt;
&lt;p&gt;It took another couple of minutes to figure out how to turn off Speech Recognition, since it wasn&amp;rsquo;t a feature that Tom &amp;ndash; or quite obviously the user &amp;ndash; had knowingly used before.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Thf5G5ump0Hpr2g0ngW__lR21T8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Thf5G5ump0Hpr2g0ngW__lR21T8/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/Thf5G5ump0Hpr2g0ngW__lR21T8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Thf5G5ump0Hpr2g0ngW__lR21T8/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=FlXqVsK7wf4:jeAfoICHDik: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/FlXqVsK7wf4" height="1" width="1"/&gt;</description> 
			<slash:comments>83</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Terrorists!.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Coded Smorgasbord: Schizophrenic Haiku Comments and More</title> 
			<link>http://thedailywtf.com/Articles/Schizophrenic-Haiku-Comments-and-More.aspx</link> 
			<category>Coded Smorgasbord</category>
			<pubDate>Mon, 16 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7244</guid> 
			<description>&lt;p&gt;&amp;quot;I found a schizophrenic comment that either intentionally or unintentionally happens to be a haiku,&amp;quot; wrote &lt;b&gt;Ben Vanik&lt;/b&gt;, &amp;quot;svn blame says this single line is the work of 3 different people across 3 years of coding.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
// should delete the temp files here, no cannot because, we havent read it in yet!&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;I'm modifying some firmware for a product that has a serial connection,&amp;quot; &lt;b&gt;Fahrzin Hemmati&lt;/b&gt; writes, &amp;quot;this was found in the method that translates the incoming data into useful bytes.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
//Clear it, or it, smack it, flip it, rub it down 
//(Oh nooooo...)		
mem[iAddress] &amp;amp;= ucClearBit;
mem[iAddress] |= ucAssignBit;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;How do you feel when you see this code on the first day of your job?&amp;quot; wonders &lt;b&gt;Ritesh&lt;/b&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
#define EIGHTY 256&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;I found this piece of java code in our corporate directory,&amp;quot; writes &lt;b&gt;Peter S&lt;/b&gt;, &amp;quot;two of our JUnit test classes end in this method. I do not know if these were intended phuns/easter eggs.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
@Test
public void testNothing() {
   assertTrue(&amp;quot;Assert just to keep JUnit happy!&amp;quot;, true); }&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;When debuging some client code I came across this,&amp;quot; wrote &lt;b&gt;Blair&lt;/b&gt;, &amp;quot;tmpnum8 was wrong. Now I just have to figure out what all the other tmpnums are...&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
tmpnum6 = tmpnum2 + tmpnum * (tmpnum4 - tmpnum2);
tmpnum7 = tmpnum3 + tmpnum * (tmpnum5 - tmpnum3);
tmpnum8 = tmpnum6 + tmpnum1 * (tmpnum7 - tmpnum6);&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;The previous developer on our OBIEE environment had some interesting ways of developing queries,&amp;quot; wrote &lt;b&gt;Bart&lt;/b&gt;, &amp;quot;not only did he not know about Oracle functions like NVL(), requiring him to write everything using lengthy CASE statements, also using joins seemed out of the question. This code is een excerpt from a _large_ view unioning large blocks of codes like this to eachother. I also like how he did code reuse, he copied large pieces of code to different views.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
SELECT decode(authorization_kd,
 3,3,    4,3,    6,3,    7,3,    34,3,
 55,3,   57,3,   58,3,   24,4,   10,4,
 11,4,   21,4,   71,4,   36,4,   37,4,
 38,4,   13,4,   14,4,   84,4,   53,4,
 15,4,   33,4,   31,4,   32,4,   09,5,
 12,6,   52,6,   54,7,   19,8,   20,8,
 79,8,   99,8,   9) process_kd
FROM   dossier
WHERE  authorization_kd NOT IN (1, 30, 35, 85, 86, 87, 16, 17, 18)&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;Starting a work in a project is always a kind of challenge,&amp;quot; notes &lt;b&gt;Wiadran&lt;/b&gt;, &amp;quot;if the project is developed for years and written mostly in ASP classic... it might become a nightmare. Nevertheless, projects developed for years have some bright side as well: parts of not-understandable code and commentaries.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
For intI = 7450 To 7450
'Now lets go and create the f*&amp;amp;ker
   ... snip...
Next &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Jimmi&lt;/b&gt; found yet another wrapper for the illusive '!' operator.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
private static bool InvertBool(bool org)
{
	bool returnValue = false;
	if (org)
	{
		returnValue = false;
	}
	if (!org)
	{
		returnValue = true;
	}

	return returnValue;            
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;How many naming conventions can you find in the following line of code?&amp;quot; writes &lt;b&gt;Malcom&lt;/b&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
StandardResponse UnSubscribeNewsletterUserAccount(
  string opTinGUID,string email, 
  string sellingRegion, string source, 
  DateTime opt_out_date, string strevent, string reason);&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;While diving through some old code I'm maintaining, I found this jewel,&amp;quot; &lt;b&gt;Frank&lt;/b&gt; writes from the &lt;a href="http://inedo.com/downloads/submit-to-wtf"&gt;Submit-To-WTF Visual Studio Add-In&lt;/a&gt;, &amp;quot;Not only is this snippet a part of a rather intricate XML merge system, but it also merges the XML by string operations. To add insult to injury, the XML is not possible to define in a schema (as elements have to occur in certain patterns, while the name of the only valid elements in the XML 'schema' is either FLD or REC. The types of REC depends on the NAME attribute, and it is the NAME attribute that ultimately decides the order of the REC elements in the document. In other words, a truly fubar mess.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
// Dear future developer(s): 
// I have no idea who actually came up with such a glorious violation of the 
// XML definition, but legacy systems being legacy systems means that we can't 
// switch this. 
// I feel for you, young padawan; I'd rahter kiss a wookie than mess with this.
if (line.IndexOf(&amp;quot;REC NAME=\&amp;quot;Hovedniv&amp;aring;\&amp;quot;&amp;quot;) &amp;lt;= -1) continue;
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ug4bA5uRvRwLHEsLbV_hSbP3400/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ug4bA5uRvRwLHEsLbV_hSbP3400/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/ug4bA5uRvRwLHEsLbV_hSbP3400/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ug4bA5uRvRwLHEsLbV_hSbP3400/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=A3uZhSMNzao:Hla6MXilgn4: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/A3uZhSMNzao" height="1" width="1"/&gt;</description> 
			<slash:comments>107</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Schizophrenic-Haiku-Comments-and-More.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Classic WTF: Rutherford, Price, Atkinson, Strickland, and Associates Dentistry, Inc</title> 
			<link>http://thedailywtf.com/Articles/Classic-WTF-Rutherford,-Price,-Atkinson,-Strickland,-and-Associates-Dentistry,-Inc.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Thu, 12 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7243</guid> 
			<description>&lt;p&gt;&lt;em&gt;I'm at &lt;a href="http://codemash.org/"&gt;CodeMash&lt;/a&gt; today (stop by the &lt;a href="http://inedo.com/"&gt;Inedo&lt;/a&gt; booth if you're there!), so I thought it'd be a great time for this classic. Rutherford, Price, Atkinson, Strickland, and Associates Dentistry, Inc was originally published on January 30th, 2008.&lt;/em&gt; &lt;hr /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img style="margin: 5px; float: right" class="wtf_imgfloatright" alt="Dr. Rutherford" src="http://img.thedailywtf.com/images/200801/dentist.jpg" /&gt; July 19th, 2004 marked a new chapter in New Portlandopolis&amp;rsquo;s rich dentistry history. It was on that day that the bitter rivalry between Dr. Rutherford, DDS; Dr. Price, DMD, DDS; Dr. Atkinson, DMD; and Dr. Strickland, DDS/DDS-PhD, had finally come to an end. Though there&amp;rsquo;s much debate on what exactly started the feud, everyone knows what brought the dentists together: the nationwide &amp;ldquo;denta-corps&amp;rdquo; that can out-price, out-service, and out-anything their small, family dental practices.&lt;/p&gt;
&lt;p&gt;Although the partnership talks had begun years before, July 19th was their agreed-upon D-Day, wherein the four separate practices would officially combine to be Rutherford, Price, Atkinson, Strickland, and Associates Dentistry, Inc. In the months leading up to D-Day, and after much bickering and debate, the four dentists got everything ready from new signage to new logoed toothbrushes. The only thing that remained was combining their computer systems. That task was left to &lt;strong&gt;Aaron B&lt;/strong&gt;, an IT consultant who had the pleasure of working with each office through many of the &amp;ldquo;ugly years.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Fortunately for Aaron, each of the dentists used the same practice management system: Beaglesoft&amp;rsquo;s Practice EnterprisePlus. It certainly wasn&amp;rsquo;t the &lt;em&gt;best&lt;/em&gt; software, but it was among the most expensive. Perhaps more-importantly, Beaglesoft offered all sorts of outrageously-priced add-ons that the dentists could buy to one-up one another. For example, a wand-shaped oral camera required a $7,000-per-site &amp;ldquo;camera driver,&amp;rdquo; in addition to the ungodly amount the camera cost in the first place. When Aaron plugged the camera into his laptop (which didn&amp;rsquo;t have any Beaglesoft software running), it was recognized as a plug-and-play camera and immediately started streaming video.&amp;nbsp;Not that&amp;nbsp;it mattered though; as soon as Dr. Price had his installed, the other three dentists had to get one as well.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;While our prices might seem high,&amp;rdquo; a Beaglesoft rep once told Aaron, &amp;ldquo;keep in mind that you&amp;rsquo;re paying for quality. Our products are rigorously tested to work in today&amp;rsquo;s and &lt;em&gt;tomorrow&amp;rsquo;s&lt;/em&gt; high-tech dental office.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;And for that reason, Aaron wasn&amp;rsquo;t too worried about Beaglesoft&amp;rsquo;s portion of the D-Day migration. They assured him on several occasions that their latest and greatest &amp;ndash; Beaglesoft Practice EnterprisePlus Elite with Networking &amp;ndash; could network a &amp;ldquo;virtually unlimited&amp;rdquo; number of practices. The four Aaron was linking together was &amp;ldquo;chump change&amp;rdquo; compared to what the system could do.&lt;/p&gt;
&lt;p&gt;When Friday, July 16th &amp;ndash; the weekend before D-Day &amp;ndash; had finally come, the dentists were ready. They closed their offices at noon and, per Beaglesoft&amp;rsquo;s instructions, initiated the migration process. Over the next twelve hours, so the plan went, each practice&amp;rsquo;s system would upload its data to the Central Server at Dr. Strickland&amp;rsquo;s office. Naturally, none of the other dentists were too thrilled about having a &amp;ldquo;Central Server&amp;rdquo;, especially one at Dr. Strickland&amp;rsquo;s.&lt;/p&gt;
&lt;p&gt;Aaron arrived at Dr. Strickland&amp;rsquo;s office early Saturday morning to find a surprising message on the server: &amp;ldquo;Migration Completed Successfully.&amp;rdquo; He ran through some initial smoke tests and it appeared that the migration did, in fact, complete successfully. After a trip to the other three dentist offices, Aaron verified that he could access any patient&amp;rsquo;s file from any office. He called up the four dentists to share the good news: come Monday, they should be in business.&lt;/p&gt;
&lt;p&gt;Monday came and, shortly thereafter, the four offices were out of business. The system had completely grinded to a halt. Every click of the mouse was met with a several-minute delay, and every delayed response was met with more clicking. Aaron, who happened to be on-site &amp;ldquo;just in case,&amp;rdquo; immediately suspected the newly-installed T1 lines.&lt;/p&gt;
&lt;p&gt;Aaron called up the phone company. They ran a few diagnostics on their end, only to find that each office&amp;rsquo;s T1 line was completely pegged. Most certainly, the technician claimed, the problem was on their end. Perhaps a router gone haywire?&lt;/p&gt;
&lt;p&gt;Aaron checked and rechecked the switches, the hardware, the ports, and the routers. He rebooted once, twice, and thrice. Everything seemed functional, aside from the fact that the Central Server was firing packets off non-stop.&lt;/p&gt;
&lt;p&gt;Not sure what else to do, Aaron bridged his laptop between the Central Server and its switch. Within seconds, he logged hundreds of megabytes of data, far too much for anyone to go through in the middle of such a crisis. He had no choice but to take the &amp;ldquo;satellite&amp;rdquo; dentists offline to investigate the problem. They grew suspicious of this and, of course, Dr. Strickland, and demanded that there was foul-play involved.&lt;/p&gt;
&lt;p&gt;With only a couple users accessing the Beaglesoft system, Aaron was able to get a handle on the traffic. As he assuaged the other dentists over the phone, Aaron noticed that a lot of the data seemed to be coming from SQL Server. Specifically, it was from queries like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;SELECT * FROM Patients&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Digging further, Aaron figured out that, whenever a user wanted to look up a patient, the program would run &amp;ldquo;SELECT * FROM Patients&amp;rdquo; query, returning the &lt;em&gt;entire&lt;/em&gt; Patients table to the client computer.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s worse, the query would run any time a character was typed in the patient search box. Searching for just his first name &amp;ndash; A-A-R-O-N &amp;ndash; resulted in five SELECT * queries.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s &lt;em&gt;still&lt;/em&gt; worse, the same method of client-side filtering was used for appointments. It wouldn&amp;rsquo;t just get, say, today&amp;rsquo;s appointments. Or this week&amp;rsquo;s. Or, say, any that haven&amp;rsquo;t happened yet. It would query for every appointment that they ever had or would have in the future. That&amp;rsquo;s about 100,000 rows.&lt;/p&gt;
&lt;p&gt;And since each appointment involved a patient, it&amp;rsquo;d have to fire off queries for each appointment to download and filter information about the patient.&lt;/p&gt;
&lt;p&gt;It was apparent that Beaglesoft&amp;rsquo;s &amp;ldquo;rigorous testing&amp;rdquo; of &amp;ldquo;Practice EnterprisePlus Elite with Networking&amp;rdquo; involved, perhaps, a single computer and two, maybe three patient records. He immediately called Beaglesoft to report their issues and a demand a resolution.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/200801/todowtf.png" /&gt;&lt;br /&gt;
(an actual screenshot from Beaglesoft&amp;rsquo;s install directory)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Within a few hours, three of Beaglesoft&amp;rsquo;s finest were on a plane to New Portlandopolis. When they arrived, two of them split off to work on &amp;ldquo;de-migrating&amp;rdquo; the system into the original four databases. The other Beaglesoftie, a product manager, worked on &amp;ldquo;damage control&amp;rdquo; &amp;ndash; and boy did she have a lot of damage to control.&lt;/p&gt;
&lt;p&gt;By that time &amp;ndash; ten hours into Rutherford, Price, Atkinson, Strickland, and Associates Dentistry, Inc&amp;rsquo;s first day &amp;ndash; the dentists were at each other&amp;rsquo;s throats. Dr. Price blamed the mess on Dr. Strickland who was &amp;ldquo;online the entire time, &amp;rdquo; while Dr. Strickland was convinced that Dr. Atkinson had somehow &amp;ldquo;spiked the T1s,&amp;rdquo; while Dr. Rutherford believed that Dr. Price &amp;ldquo;wanted to retire, and was bringing everyone else down.&amp;rdquo; Eventually, Dr. Atkinson stormed out and&amp;nbsp;tore down the new &amp;quot;Rutherford, Price, Atkinson, Strickland, and Associates Dentistry, Inc&amp;quot; sign. As he stomped the sign into pieces, he vowed never to work together again. Things pretty much went downhill from there.&lt;/p&gt;
&lt;p&gt;After things cooled down a bit with the dentists, the product manager met with Aaron. Angered that his future prospects looked like a repeat of the &amp;ldquo;ugly years&amp;rdquo;, he lambasted Beaglesoft&amp;rsquo;s latest and greatest, and asked why, oh why, they couldn&amp;rsquo;t have done some client-side caching. Or, at the very least, use the magical WHERE clause.&lt;/p&gt;
&lt;p&gt;She was astonished by Aaron&amp;rsquo;s technical knowledge and eagerly asked more questions on &amp;ldquo;WHERE clauses and other optimization techniques.&amp;rdquo; Near the end of their conversation, she actually offered Aaron a job as a Lead Developer at Beaglesoft.&lt;/p&gt;
&lt;p&gt;Aaron ended up declining the position. He figured that they&amp;rsquo;d never be willing to tar and feather the existing development staff. That, and after the Beaglesoft Fiasco of 2004 (as it&amp;rsquo;s called today), he&amp;rsquo;d have a lot of cleaning up and intra-dentist diplomacy to do. Besides, how could he miss taking part in the latest exciting chapter in the dentistry history of New Portlandopolis?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ohp8DTiyIeu2N7huHVQukla_o_Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ohp8DTiyIeu2N7huHVQukla_o_Y/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/ohp8DTiyIeu2N7huHVQukla_o_Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ohp8DTiyIeu2N7huHVQukla_o_Y/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=O9g806ETDNA:MAzDN2yUdS4: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/O9g806ETDNA" height="1" width="1"/&gt;</description> 
			<slash:comments>140</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Classic-WTF-Rutherford,-Price,-Atkinson,-Strickland,-and-Associates-Dentistry,-Inc.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: The XML Escape</title> 
			<link>http://thedailywtf.com/Articles/The-XML-Escape.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Wed, 11 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7242</guid> 
			<description>&lt;p&gt;&amp;quot;One day, our logistics analysis vendor interface completely broke down,&amp;quot; wrote &lt;b&gt;Ben Davis&lt;/b&gt;, &amp;quot;that's a Bad Thing&lt;sup&gt;TM&lt;/sup&gt;, as our primary focus is to provide logistical services to our clients.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Fortunately, it didn't take too long to track the problem down. Our vendor was sending over unescaped ampersands in their XML API.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
&amp;lt;customer_name&amp;gt;Brandon &amp;amp; Sons&amp;lt;/customer_name&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;quot;When I reported the problem to them, they responded rather curiously: &lt;em&gt;technically, we are sending back valid XML as the ampersand does not necessarily need to be escaped.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;quot;I pointed them to the XML specification along with a simple request to encode their XML properly. Instead, they responded with this. &lt;em&gt;Is there something else we can switch it to on our side that you could look for and replace on yours? I.e. some kind of flag character we use in place of an ampersand? What about a $ symbol? So, if there's a $ sign in the name, you could convert that to an ampersand. On our side, we'll convert the ampersand to a $ sign and pass it over like that. Then your piece would do a search/replace on the account name and replace the $ with an ampersand?&lt;/em&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Long story short, it was absolutely impossible for them to do a multi-character replacement... and somehow none of this is an issue for any of their other users. Oh, and now I'm replacing $ with ampersands in our code.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0synJZdnY0mDWRV0MC9TGK4Bdx8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0synJZdnY0mDWRV0MC9TGK4Bdx8/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/0synJZdnY0mDWRV0MC9TGK4Bdx8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0synJZdnY0mDWRV0MC9TGK4Bdx8/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=F7qluL8ylSE:1Ptf0jjbWnU: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/F7qluL8ylSE" height="1" width="1"/&gt;</description> 
			<slash:comments>176</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-XML-Escape.aspx</comments>
		</item>
	
		<item>
			<author>Remy Porter</author> 
			<title>The Shredder</title> 
			<link>http://thedailywtf.com/Articles/The-Shredder.aspx</link> 
			<category>Feature Articles</category>
			<pubDate>Tue, 10 Jan 2012 15:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7240</guid> 
			<description>&lt;p&gt;The company break room was, well, a company break room. Dull grey walls, acoustical tile dropped ceiling, burned coffee and a motivational poster featuring a sun setting over a beach. &lt;b&gt;Leo&lt;/b&gt; sipped his coffee, pulled a face at the bitter taste, and muttered to Mike, "This sucks." &lt;!-- Look, if you guys cleaned out the carafes once in a blue moon, your coffee wouldn't taste like overcooked ass --&gt;
&lt;/p&gt;&lt;p&gt;
The Carribean island of Curaçao is known for sandy beaches, oil refining and open-air brothels. &lt;!-- Thank you, wikipedia! I learn so much! [Citation Needed] --&gt; It's also notable for being a key junction where fiber lines from around the world branch off through the Americas. That last bit means that it's a popular location for running global datacenters. Leo's employer was a global business, and had not one, but &lt;i&gt;two&lt;/i&gt; datacenters located on the island. The production datacenter handled millions of dollars of transactions every day. The backup datacenter didn't- in fact, it was being decomissioned, starting on this particular Monday.
&lt;/p&gt;&lt;p&gt;
Leo had been looking forward to decomissioning for months. The company scheduled a week for someone to run a disk shredder and pack the machines away into boxes. That basically amounted to a week long Carribean vacation, and Leo had seniority- in theory, that cushy gig was his.
&lt;/p&gt;&lt;p&gt;
It was a wonderful theory, but having seniority also meant having real work. Leo only loitered in the breakroom for a moment, dreaming of Curaçao, and then got back to the work of administering the IT resources of a global company. Leo, and his aides Mike, Rafe, and Don, &lt;!-- Because his name was Raffelo, not Raphael. Also, "Venus de Milo", really? Nobody involved in creating that character had heard of Artemesia Gentileschi? At least she was actually an artist, even if she was more in Caravaggio's style--&gt; were far too busy to jaunt off for a week in the Carribean. Instead, they needed to send someone they could spare. Someone who had nothing to contribute to their daily operations, but who could handle the simple task of booting machines off a thumb drive, waiting on a beach, and then boxing them up, and then waiting. On a beach.
&lt;/p&gt;&lt;p&gt;
They needed James Avery (A+, NET+, Security+, MCSE, MCSE+I, MCP, &lt;span onclick="cornify_add();return false;" title="click me!"&gt;CCNA&lt;/span&gt;&lt;script type="text/javascript" src="http://www.cornify.com/js/cornify.js"&gt;&lt;/script&gt;, CCNP). &lt;!-- I have seriously known people who felt the need to include their certifications in their signature. I would do this, but I only have a Hungarian Union General Education and a Bachelor of Science --&gt;James had "worked" for the company since before Leo started, and would likely continue to "work" there long after. He was that peculiar class of over-certified dead weight that burrowed into an IT organization like a &lt;i&gt;candiru&lt;/i&gt;. James was the sort of guy that felt putting the SQL Server Databases on the Internet-facing side of the firewall was fine- Windows security was really strong! He couldn't explain the difference between TCP and UDP, but he could hang every certification he ever got on the wall of his cube. &lt;!-- If you take the same test enough times, you will eventually pass. The law of averages and all that. --&gt;
&lt;/p&gt;&lt;p&gt;
In its own weird way, sending James off to Curaçao was a bit of a vacation. Sure, Leo was stuck in the office, commuting into work in the dead of winter, but at least he didn't have to clean up after James's mess. For a week, James couldn't cause a single problem, because he'd be destroying HDDs in the backup datacenter. &lt;!-- At this point, the astute reader should already know how this story ends. --&gt;
&lt;/p&gt;&lt;p&gt;
Leo's phone dinged. He set his coffee down and checked his SMS alert. Before he even had it out of his pocket, it dinged three more times. A flood of texts from their monitoring system paralyzed his phone. Servers were going down, left and right. &lt;i&gt;All&lt;/i&gt; of them.
&lt;/p&gt;&lt;p&gt;
Leo called the production DC even as Mike called the backup DC. James had never arrived at the backup DC, Mike learned. But he had &lt;i&gt;definitely&lt;/i&gt; showed up at the production datacenter. James Avery (A+, Net+, Security+, MCSE, MCSE+I, MCSA, MCP, MOS, CCNA, CCNP, CCDE, SCSAS) had gone to the wrong address. He had flashed his ID badge, and without thinking once, let alone twice, he had started rebooting everything in a rackmount using the disk-shredding thumbdrive he brought with him.
&lt;/p&gt;&lt;p&gt;
The end result was a 24 hour outage, and a new nickname for James Avery (A+, Net+, Security+, RHCSA, MCSE, MCSE+I, MCSA, MCT, MCP, MOS, CCNA, CCNP, CCDE, SCSAS): "The Shredder". "The Shredder" didn't lose his job, but his co-workers didn't let him live down the mistake. They made it a habit of relocating the office paper shredder to his cube. He made a habit of complaining to HR about it.
&lt;/p&gt;&lt;p&gt;
Eventually, "The Shredder" had enough of this treatment, and left the company. He now adminsters the Windows network at the local nuclear power plant.&lt;/p&gt;
&lt;!-- Easy Reader Version: See James. James is glowing, because he works at a nuclear power plant. You are also glowing, because he works at a nuclear power plant. Oops. --&gt;
&lt;!-- If I could have worked Krang into this story, I would have. That would have been awesome. --&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KqSE0_Mx0NZl-mpxk4bgXa9PQ1Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KqSE0_Mx0NZl-mpxk4bgXa9PQ1Q/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/KqSE0_Mx0NZl-mpxk4bgXa9PQ1Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KqSE0_Mx0NZl-mpxk4bgXa9PQ1Q/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=ncBQFermFyY:NHsXEzp3ET0: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/ncBQFermFyY" height="1" width="1"/&gt;</description> 
			<slash:comments>143</slash:comments> 
			<comments>http://thedailywtf.com/Comments/The-Shredder.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: Troubling Trouble Ticketing</title> 
			<link>http://thedailywtf.com/Articles/Troubling-Trouble-Ticketing.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Mon, 09 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7241</guid> 
			<description>&lt;p&gt;&amp;quot;I'm not sure how he did it,&amp;quot; writes &lt;b&gt;Joey&lt;/b&gt;, &amp;quot;but one of my colleagues convinced management that we needed a trouble ticketing system. Since we had been using email and post-it notes for many years, it was a welcome addition to the team. Well, at least it would have been... had it not been a home-grown system written by Chad.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;The good news was that Chad had previous experience building such a system. The masterpiece of his previous job was a trouble ticketing system written entirely in VBScript that ran inside of Excel. After several attempts to make it work for us (it had a bad habit of only working on very specific versions of Excel) he decided to start clean using PHP and MySQL. A web-based system was a welcome alternative to a spreadsheet... at least, it would have been had Chad not recently learned about a 'new technology' called AJAX.&lt;/p&gt;
&lt;p&gt;&amp;quot;As it turned out, his 'week or two' estimate was a little too optimistic, and it took a solid eight months of mostly full-time work on the system before it was ready for production. Well, his definition of ready. It had countless odd bugs like forms disappearing, lists not populating correctly, edits not actually saving, and so on. After a few weeks of trying to use Chad's software, we just went back to the old email and post-it note system.&lt;/p&gt;
&lt;p&gt;&amp;quot;Eventually, Chad left the company, and the higher ups asked me what it would take to make the system actually useful. I told them I would look at the code and see if I could help. One of the first bits I found was this.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
function stateChangedbb()
{
  try
  {
    if(xmlHttpx.readyState==4)
	  document.getElementById(&amp;quot;txtresponse&amp;quot;).innerHTML=xmlHttpx.responseText; 
  } catch (e) {
  }
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;quot;The function name was a bit curious, and I noticed there were several similarly named functions. So I looked a little deeper.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
$ grep -i &amp;quot;function statechanged&amp;quot; *

ajaxlogin.js:function stateChangedcc()
ajaxlogin.js:function stateChanged()
CreateTicketMenu.js:function stateChangedf()
CreateTicketMenu.js:function stateChangedsss()
CreateTicketMenu.js:function stateChangedg()
CreateTicketMenu.js:function stateChangedbb()
CreateTicketMenu.js:function stateChangede()
EquipmentMenu.js:function stateChangedr()
EquipmentMenu.js:function stateChangeds()
EquipmentMenu.js:function stateChangedt()
EquipmentMenu.js:  function stateChangedu()
functions.js:function stateChangedd()
functions.js:function stateChangedk()
functions.js:function stateChangeduu()
functions.js:function stateChangedoo()
functions.js:function stateChangedmm()
functions.js:function stateChangedc()
functions.js:function stateChangedsu()
functions.js:function stateChangedst()
functions.js:function stateChangedsv()
functions.js:function stateChangedrr()
functions.js:function stateChangedb()
functions.js:function stateChangeda()
LocationsMenu.js:function stateChangedl()
LocationsMenu.js:function stateChangedm()
LocationsMenu.js:function stateChangedn()
LocationsMenu.js:function stateChangedo()
LocationsMenu.js:function stateChangedp()
LocationsMenu.js:function stateChangedq()
SaveNewTicket.js:function stateChangedh()
SaveNewTicket.js:function stateChangedi()
SaveNewTicket.js:function stateChangedj()
viewTicket.js:function stateChangeddd()
viewTicket.js:function stateChangedee()&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;quot;The only difference between any of the functions was that the &lt;code&gt;xmlHttp&lt;/code&gt; variable had a similar 'add a letter' naming convention: &lt;code&gt;xmlHttpa&lt;/code&gt;, &lt;code&gt;xmlHttpb&lt;/code&gt;, etc. As with the function names, when he ran out of letters, he added a second. &lt;code&gt;aa&lt;/code&gt;, &lt;code&gt;ab&lt;/code&gt;, etc. And just for fun, the letters in the variable name very rarely matched the letters in the function name, so the function &lt;code&gt;stateChangeda()&lt;/code&gt; used the variable &lt;code&gt;xmlHttpop&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;quot;I told management that there was nothing worth saving, and we have yet to switch from email and post-it notes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1tr-yKnrR71HNexqlJQgXsLcLw0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1tr-yKnrR71HNexqlJQgXsLcLw0/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/1tr-yKnrR71HNexqlJQgXsLcLw0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1tr-yKnrR71HNexqlJQgXsLcLw0/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=SfevZxlSZ0g:V1BYN8a9zeQ: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/SfevZxlSZ0g" height="1" width="1"/&gt;</description> 
			<slash:comments>126</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Troubling-Trouble-Ticketing.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>Error'd: Calories Math, Exacting Password Requirements, and More</title> 
			<link>http://thedailywtf.com/Articles/Calories-Math,-Exacting-Password-Requirements,-and-More.aspx</link> 
			<category>Error'd</category>
			<pubDate>Fri, 06 Jan 2012 14:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7239</guid> 
			<description>&lt;p&gt;&lt;a name="Pic1"&gt;&lt;/a&gt;&lt;b&gt;Cob&lt;/b&gt; spotted this in his local weekly flier.&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/12/01/err/Pic1.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic2"&gt;&lt;/a&gt;&amp;quot;I got this error when I entered an incorrect password on Verizon's internet account management site,&amp;quot; writes &lt;b&gt;Cary&lt;/b&gt;, &amp;quot;my password did contain letters (just not the right ones), but really Verizon- I don't have that kind of time, and my keyboard doesn't easily support Runic or Cryllic.&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/12/01/err/Pic2.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic3"&gt;&lt;/a&gt;&amp;quot;I have this clever 'Noom' app on my Android that tracks my workouts, what I eat, and so on,&amp;quot; writes &lt;b&gt;Daniel &amp;quot;Smedegaard&amp;quot; Buus&lt;/b&gt;, &amp;quot;but lately it's been tracking my movements rather erratically. Yesterday, taking a walk around a lake, it apparently tracked me as taking a quick detour around Africa's Horn, and then returning immediately. That's the first WTF, the second one is that I knew avocados were pretty fatty, but I had no idea they contained THAT much energy.&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/12/01/err/Pic3.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic4"&gt;&lt;/a&gt;&amp;quot;As you might expect, this came from a government website,&amp;quot; &lt;b&gt;Steve&lt;/b&gt; wrote, &amp;quot;which may explain why it was vague and unhelpful.&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/12/01/err/Pic4.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic5"&gt;&lt;/a&gt;&amp;quot;They really, deep down in the cockles of your heart, wanted me to write down my password, right?&amp;quot; writes &lt;b&gt;Joseph Gordon&lt;/b&gt;, &amp;quot;Because if it has to be an EXACT character count, that's EXACTly what I did.&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/12/01/err/Pic5.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic6"&gt;&lt;/a&gt;&amp;quot;I spotted this in Time Square (NYC) on the way to work,&amp;quot; &lt;b&gt;Daniel Boland&lt;/b&gt; commented, &amp;quot;I even risked looking like a tourist to take this photo.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic6"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/12/01/err/Pic6.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a name="Pic7"&gt;&lt;/a&gt;&amp;quot;While we all love mindless compulsory corporate training,&amp;quot; &lt;b&gt;Mike P&lt;/b&gt; writes, &amp;quot;asking us to complete non-causal slideshows required far too much thought.&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="#Pic7"&gt;&lt;img border="0" alt="" src="http://img.thedailywtf.com/images/12/01/err/Pic7.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t96lKodr8K8fhApAMpSG8tHP7qI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t96lKodr8K8fhApAMpSG8tHP7qI/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/t96lKodr8K8fhApAMpSG8tHP7qI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t96lKodr8K8fhApAMpSG8tHP7qI/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=2rtU6l5NZMw:iDfZcTWj7aU: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/2rtU6l5NZMw" height="1" width="1"/&gt;</description> 
			<slash:comments>120</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Calories-Math,-Exacting-Password-Requirements,-and-More.aspx</comments>
		</item>
	
		<item>
			<author>Alex Papadimoulis</author> 
			<title>CodeSOD: Nondeterministic Months</title> 
			<link>http://thedailywtf.com/Articles/Nondeterministic-Months.aspx</link> 
			<category>CodeSOD</category>
			<pubDate>Thu, 05 Jan 2012 17:00:00 GMT</pubDate> 
			<guid isPermaLink="false">7238</guid> 
			<description>&lt;p&gt;&amp;quot;There's been a lot of talk that 2012 will exclude the month of December,&amp;quot; writes &lt;b&gt;Jon-Paul Murrow&lt;/b&gt;, &amp;quot;you know, end of world, Mayan calendar, Nostradamus, and all that. Even if this doesn't happen, there's no guarantee that future years will have twelve months.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Fortunately, I found this snippet of JavaScript in our codebase at work that will find the number of months in any given year (that's right, &lt;em&gt;any&lt;/em&gt;, year).&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;
function getMonthCountForSelectedYear()
{
  return 12;
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jon-Paul continues, &amp;quot;I particularly like the way you don't even have to pass in the selected year to still get the correct return value. It's such a shame this guy has left now as I need to write a function that calculates the number of days in any given week and he could've helped.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pBIK3za3xKYx53_Pk9R9-54VkgY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pBIK3za3xKYx53_Pk9R9-54VkgY/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/pBIK3za3xKYx53_Pk9R9-54VkgY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pBIK3za3xKYx53_Pk9R9-54VkgY/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://syndication.thedailywtf.com/~ff/TheDailyWtf?a=gbxPm2hU72U:W4Bch3tARiM: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/gbxPm2hU72U" height="1" width="1"/&gt;</description> 
			<slash:comments>111</slash:comments> 
			<comments>http://thedailywtf.com/Comments/Nondeterministic-Months.aspx</comments>
		</item>
		
	</channel>
</rss>

