Recent Articles

Mar 2009

More or Less Random

by in Feature Articles on

My personal fave 2600 game, hands down.Chris J's manager had just returned from a meeting with The Admirals and called for an impromptu debriefing with the team. As everyone gathered, they noticed he wasn't wearing his we finally sign-off face.

"Overall," the manager said in a serious tone, "the Navy is very pleased with the application. There weren't any data problems on their side, and they were satisfied with the quantity and quality of documentation. Even the number of manhours we spent on the project was well within their acceptable limits."


Wosl'd Besu Saodwici

by in Error'd on

"Actually," writes Greg Buhtz, "my lunch at SUCWAY SAODWICIES was rather enjoyable."


Technically, It's Still GIF Animation

by in CodeSOD on

I'll be honest. Code submissions come into our queue sometimes and I have to read them a few times before I can identify the WTF. When Alex asked me to write this one up, I had to read it over line-by-line for almost an hour and figure out what was wrong with it.

This was sent in anonymously, with the note that it's designed to display a pretty, spinning "now loading" image while a report is created.


Sponsor Appreciation, Real Ingredients, and More

by in Feature Articles on

Without our sponsors' support, The Daily WTF simply wouldn't be. Please show your support by visiting these fine companies and checking out their products & services. Or by sending in a cool souvenir. Or by even buying me a beer. But the first one's probably the easiest.

 

Resolver Systems   Resolver Systems - developers of Resolver One, an Excel-compatible spreadsheet designed for reliability that's programmable in Python, easily integrates with .NET, and comes with a built-in Web server. Give it a shot, make an awesome spreadsheet, and send it in to win the $25,000 Resolver One Challenge!
Mindfusion   MindFusion - a great source for flow-charting and diagramming components for a variety of platforms including .NET, WPF, ActiveX and Swing
Software Verification   Software Verification - software engineering tools for memory leak detection, code coverage, performance profiling, thread lock contention analysis and thread deadlock detection, flow tracing and application replay on the Windows Vista, 2003, XP, 2000 and NT platforms.
Mosso   Mosso - massively scalable hosting for .NET (2,3,3.5) PHP, Ruby, etc., with unlimited sites & mailboxes, simple online provisioning, and an enterprise clustered platform that's supported by real people.
SlickEdit   SlickEdit - makers of that very-impressive code editor and some pretty neat Eclipse and VisualStudio.NET tools and add-ins, some of which (Gadgets) are free. Check out this short video highlighting just one of SlickEdit's Visual Studio integration features.
SoftLayer   SoftLayer - serious hosting provider with datacenters in three cities (Dallas, Seattle, DC) that has plans designed to scale from a single, dedicated server to your own virtual data center (complete with racks and all)
WTF   The Non-WTF Job Board - Powered by HiddenNetwork, it features some great job opportunities like:

I Wish I Worked for PEDANT

by in Feature Articles on

Photo Credit: 'Steve Parker' @ FlickrWhen Steven saw that there was an opening in the Plant & Enterprise Dashboard Activity New Technology group, he jumped at submitting his application and, much to his delight, was accepted. PEDANT was an elite group within the IT organization that was responsible for the system that ran the large plasma status screens spread throughout the plant and corporate offices. At a glance, one could see everything from the number of new orders entered for the day, the thoroughput of the shipping department, the current stock trading price, employee-related news, and even the five-day forecast.

In recent years, the system was updated to support RSS feeds so that, say, Hank in accounting could see everything from the internal pressure of Liquid Nitrogen Tank #4 to news that Barb in HR was getting married in June, all from the comfort of his desk. Being responsible to an application visible to everybody from the CEO to the night janitor granted the PEDANT folks a kind of celebrity status. As a result of this, and the fact that the system was so very much appreciated, project funding flowed in. While the rank-and-file was used to 1970's lime green chairs, the PEDANT developers were racing around in Aeron chairs between private, windowed offices. And best of all for them, every day was free-donuts-in-the-breakroom day.


A Nasty Error

by in Error'd on

"I saw this error message on one of Air Canada's back-of-the-seat terminals," Adrian Petrescu writes, "what a comfortable error message to be reading 11,000 feet in the air."

 


The Executive Summit

by in Feature Articles on

photo credit: minxlabs @ flickr It took him twenty years of playing corporate politics and climbing his way up, but Scott had finally made it to the top. Not the tippy-top, but close. He was the Director of Applications Management at an international, ten-thousand employee, forty-billion dollar company and was responsible for running a department of a few hundred people.

Long gone were the days of doing anything technical or even supervisory. Instead, Scott focused on positioning, synergy, mindshare, projection, and everything else you’d expect to see in Buzzword Bingo. He also played an important role in the “$100 million initiative to streamline and centralize global processes across key, strategic applications.” Or, in other words, build and/or buy a bunch of enterprise software to help the company run better.


Just a Small Change to the Invoice

by in CodeSOD on

When Yaniv started at his new job, he was replacing a developer who had quickly left for undisclosed "personal" reasons. Bypassing any training, his first assignment was meant to be an easy hands-on task where all he needed to do was to adjust the comments on the company's invoice over just a little bit so that it didn't spill over the edge of the paper.

"None of our customers have ever really complained about it, but we do get the occasional call where the CSR has to read the notes section of their order to confirm what we entered," said Yaniv's manager, "I figure that you'll just open the template for the invoice, change the field width, and be done!"


O Misfortuna

by in Feature Articles on

Cabe B. closed his eyes tightly and sighed. His pager was vibrating and beeping a sad interpretation of O Fortuna. And yet again, their most important server had gotten precipitously hot. If the situation wasn't remedied, XDISP1 would shut down.

It was the early 2000s and Cabe was working for a small startup. And for all the freedom, responsibility, and opportunities to get creative that his position afforded, it was a little frustrating that the budget for the "datacenter" wasn't larger. It was a claustrophobic little room with walls and shelves holding mostly repurposed workstations that were acting as servers and telecom equipment. The A/C was unreliable, and would die several times each month. As such, the equipment was always on the brink of overheating. With a ladle and water to pour over the servers, it could've been converted into a decent little steam room. Cabe wanted to stay on top of all these issues, so he set up some monitoring tools that would page him the moment one of the servers reached a certain temperature.


Tax Broke

by in Error'd on

"I received this in the mail a little while back," Vinny writes, "it seems the UK Chancellor is obviously doing his bit for the nation by charging £0.00, rather than the threatened £100."


Where the Wild Web Things Are

by in CodeSOD on

"Working for Opera Software's QA department gives you in-depth perspectives on the web's wild and varied coding practises," writes Hallvord R. M. Steen. "I still wasn't prepared for the curious solutions that power the menu on the new Israel Railways website."

"The coding is unbelievable," Hallvord continues. "Diving into the website's source code shows that its coders must have fallen asleep during the what's the point of XSLT lesson. It's more like an XML parser/serializer stress test than a production site."


Code Ownership Gone Awry

by in CodeSOD on

"Here at Company X," Jay Smith writes, "we have a senior programmer who, through the years, has developed a terrifying combination of complete code control issues and an image with the owners that makes his decisions right (despite real life implications)."

"This is the programmer who hates to use freely available libraries like STL, boost, or any third party API that could make his (and his team's) world simpler. He rewrites data structures per project, drags around a custom XML parser when others would suffice, reinvented the wheel so many times he may actually may own the patent by now. He has such code ownership problems, if you propose a solution that doesn't involve his code, hissy fits ensue complete with resultant silence treatment.


Hairdress Replication

by in Feature Articles on

MonsterCharge!Credit card companies push around gobs and gobs of data every single day, and MonsterCharge (where Mike worked) was no different. However, the one thing that set MonsterCharge apart from many other credit card companies was the sheer volume of data that they worked with on a daily basis. The production environment had tiers, the test environment had tiers, heck, the tiers even had sub-tiers!

Nearly a year after the new system was deployed, the total size of all managed data stored on their Oracle databases had swelled to nearly 40 terabytes, and with good reason. Close to 3,200 concurrent users generated a continuous 1,200 transactions per second and sometimes spiking close to more than 2,000 on some days. The "Mission Accomplished" banner had been long ago hung on the wall and all the project managers received cushy bonuses and some even got promotions.

Our Dog Food Tastes Best (unless someone else makes it)


What Should I Do? and More Support Stories

by in Feature Articles on

What Should I Do? (from Chaz Larson)
Years ago, when I worked the phones, I got a call from a guy who opened up with, "let's just clear something right away: I'm a tech, too, and know what I'm doing." After a bit of back and forth, it turned out that he needed to reinstall the fonts that shipped with our product. This was just a plain old Mac install on about a dozen floppies, and he wanted me to walk him through it.

"Okay," he said a few minutes into the install, it says 'Insert Disk 1'. What should I do?"


Try Doing That with a Field

by in CodeSOD on

Years ago I was talking to a friend who was just starting to learn about coding. He'd looked at some of my code, and asked why I used class properties with getters and setters instead of public fields. "Isn't it just more code for no real benefit?" he asked. And he was right; in every case, I had a getter and setter simply acting as a public interface to a private field.

I thought about his question for a second, not really knowing the answer. Frankly, it was just The Way I Learned To Do It. And to my dismay, he didn't just go away while I struggled to think of an answer. I eventually waved my hands dramatically and yelled "encapsulation!" Yes, that'll do nicely, I thought. Later that day I was thinking about it some more, and realized that in most cases, he was right. Still, getters and setters are great for inherited classes in which a method of calculation may be different. Accessors certainly have their place, but that place isn't necessarily everywhere.


A Support Marathon

by in Feature Articles on

1:53 AM, and Sacha's phone was ringing loudly. The woman on the other end of the line was trying to speak calmly, but the fear in her voice was obvious. It was clear that this was the first big production failure she'd had to deal with.

"Production job SYSSYNC_VMX_PROD02 failed, it says something about a failure with... JCL? Er, was it TSS?" Embarrassed and flustered, Leah confessed that she forgot to bring her notebook with her and couldn't remember the specific error.


Replace This Title

by in Error'd on

B.B. spotted this on on the Australian ABC News along with 1.1 Million other viewers.


Bulletproof JavaScript Detection

by in CodeSOD on

"I work at a major financial services company," writes Seth. "We have a public site that requires JavaScript be enabled. When it's not, the visitor is redirected to an error page that explains the website's requirements."

Definitively determining whether someone has JavaScript turned on or not can be a pretty challenging task, but fortunately, Seth's colleagues developed a bulletproof method to figure this out. They used JavaScript.


The Quest for the Unique ID

by in CodeSOD on

When Yohan J. heard that the invoice generation code had started to run slowly, alarm bells sounded in his head. The invoicing system hadn't been touched in a long while, no business process had changed, no new outside interfaces, no hardware changes, no logical reason that it wouldn't be running as quickly as it always had. In fact, this was just the step that generated the invoice; not invoice items, just creating a draft invoice. A single insert that would produce a single row.

Yohan started by checking the invoice table to get a spread of invoices over the past few months to see if volume had increased substantially. It hadn't. Though, oddly, the six-numerical-digit invoice numbers were all over the board. He spotted an 000015 and a 702438 that were created within hours of eachother. How is it even generating these? he wondered, expecting to find a constraint on the column containing an algorithm to generate the invoice numbers.


The Difference Between "Better" and "Less Bad"

by in Feature Articles on

It was only his third day on the job, but Dave could tell it was going to be a long one. His fear had come true; what should've been an easy fix (capture an extra data field) was going to involve him debugging a long regular expression that had no comments revealing its pattern. Its arcane characters may as well have been heiroglyphics, and as regular expressions often do, it looked as though someone had held down shift while randomly mashing the number keys. Worse still, there were recursive methods used to parse these expressions. If you added in linked lists you'd have a CS101 student's personal hell.

"I mean, it's not that regular expressions are bad," he explained to a colleague, "it's just that they're ridiculously hard to interpret when they get to have so many groups and submatches and whatnot."


Broke Bank

by in Error'd on

"I understand some banks are short of cash these days," writes Greg, "I guess this is one way of breaking the news."


An Office Safety PSA

by in Feature Articles on

Office safety is no laughing matter. Here at Inedo, when we’re not playing 5-finger filet blindfolded, having backwards Aeron races down the stairs, or constructing our own plywood cubicle loft, we're busy learning the "best practices" in the world of office safety. And boy is there a lot to learn; for example, did you know that BB gun fights violate OSHA guidelines?

That said, I was thrilled when Joe Breeden sent in some scans from a mandatory Office Health & Safety seminar he recently attended. "I wish I could say they were 'joke' pages to lighten up the mood before the serious stuff," Joe commented, "but they're not. They're very real and Safety, Health and Environment treats matters like these very seriously." Click the images for a full size view.


Using Design Patterns...or not...

by in CodeSOD on

Recently, the anonymous submitter of the following code had been mentoring novice developers in the use of design patterns.  I'm sure one of the things he stressed was creating a reusable template for how to solve a problem that can be used in many many situations. All good stuff.

Well, the submitter took a peek at the work of one of the developers and felt that the author of the below code may need some coaching on what "reuse" means.

case SOME_CONST1:
        _panelInstance  = DetailPanelFactory.getInstance(type);
        _panelInstance.parseXML(panelList);
        // add the new panelItem to the panelCollection
        _panelCollection.addItem(_panelInstance);
break;

case SOME_CONST2:
        _panelInstance  = DetailPanelFactory.getInstance(type);
        _panelInstance.parseXML(panelList);
        // add the new panelItem to the panelCollection
        _panelCollection.addItem(_panelInstance);
break;

case SOME_CONST3:
        _panelInstance  = DetailPanelFactory.getInstance(type);
        _panelInstance.parseXML(panelList);
        // add the new panelItem to the panelCollection
        _panelCollection.addItem(_panelInstance);
break;

case SOME_CONST4:
        _panelInstance  = DetailPanelFactory.getInstance(type);
        _panelInstance.parseXML(panelList);
        // add the new panelItem to the panelCollection
        _panelCollection.addItem(_panelInstance);
break;
 

The Prisoner's Dilemma

by in Feature Articles on

Photo Credit: 'Jay Erickson' @ FlickrAfter a hard day of writing code at the Department of Justice, Sabbo settled into his favorite chair to watch the evening news. But instead of his usual glass of iced tea, that night it was a tumbler-full of Johnnie Walker Black on rocks.

Though it was a pretty normal day at work, the ride home was anything but normal. In the middle of his evening commute, Sabbo's boss rang his cell phone to let him know that "something big" would be on the evening news. Apparently, the Shame On You! "investigative" reporting team from the local news ambushed the Department director with question after question about Inmate #88172, Inmate #88172's family, and, most importantly, why Inmate #88172 wasn't getting the money the Department owed him. The director could say little more than "I don't know", which was exactly the sound bite Shame On You! wanted.


Wooden Links

by in Error'd on

"I pressed 'View Larger Sample' and nothing happened," Rhett writes, "must be broken links."


Formatting a Phone Number - The Long Version

by in CodeSOD on

Dear Daily WTF Readers,

Please, take a moment of your time to consider the plight of the poor 'for' loop and its sister 'case' in the below code which has chosen to remain anonymous as per its submitter.


Big Box of Awesomeness

by in Souvenir Potpourri on

Ever since the first Free Sticker Week ended back in February '07, I've been sending out WTF Stickers to anyone that mailed me a SASE or a small souvenir. More recently, I've been sending out the coveted TDWTF Mugs for truly awesome souvenirs. Nothing specific; per the instructions page, "anything will do." Well, here goes anything, yet again! (previous: Irish Girl).


When this box from Dudley Fox (Austin, TX) arrived at the office, to say that I was filled with exuberance would be a gross understatement. I mean, really. First off: cheese. And secondly: cheese by fricken mail. Oh no, it doesn't get any better than this.


Fighting the Current

by in Feature Articles on
photo credit: officemuseum.com

Although it was a giant telecom, Mike couldn't have imagined how huge "AQ&V" actually was. What seemed like miles of occupied cubicles stretched from wall to wall in labyrinthine passages. Weaving their way through aisles of well-dressed employees silently typing on their computers, Mike and his prospective boss arrived at a conference room and began their interview. It must have gone well, since Mike got a call with an offer on his drive home.

He'd be working for the major telecom's "network health" team. The goal was to build and maintain applications and reports so that the company would find out about outages before the customer did. At least in theory. Mike was particularly interested in the work since AQ&V was his ISP, and he knew all too well why they'd gained a reputation for terrible service. Most customers, Mike included, had learned that it wasn't even worth bothering to call and complain about outages anymore.

Razing the Farm


Rolling in the Money

by in Tales from the Interview on

Kevin Saff is not what many would consider “the ideal candidate.” He started his career as a C++ coder for a major manufacturer, but then quit to pursue a mathematics degree in Canada. That didn’t quite do it for him either, as he then dropped out to pursue something far more interesting: canoe from Calgary to New Orleans. But after 1,200+ miles of rowing, his journey ended in Minneapolis with a cracked boat and a frozen river. Temporarily, of course, as he plans to pick up and continue south someday soon.

All that said, Kevin was pretty excited when he received his first response to all the resumes he’d been sending out to various Minneapolis-based companies. He immediately called back to schedule an interview and was pleasantly surprised at how flexible the interviewer was: Kevin could “stop by any time.”


Input Validation... The Clever Way

by in CodeSOD on

Question: when you're accepting input from a user, one should always:

  1. Ensure the data are valid before writing to the database
  2. Ensure the data are valid while writing to the database
  3. Ask the user to please not perform an injection attack since your system isn't designed to handle it
  4. Do it the clever way!

I'll leave that to you to determine the correct answer. One of Joshua S.'s colleagues, "Dave," chose D.


Cutting in Line

by in Feature Articles on

Photo Credit: 'gadl' @ FlickrMcGillicutty Power and Light was a small utilities company with a big problem: Their customer base was growing by leaps and bounds but the supposed-to-be simple task of printing a batch of invoices was taking a glacial age to complete. Things got to be so bad in fact that each of the accounting clerks needed two PC's – one dedicated to everyday tasks like email and spreadsheets and the other for printing invoices.

It wasn't as if the printing workstation was maxed-out on resources, it's just that generating customer invoices was a delicate process. If one were to, say, compose an email while printing invoices, then the printer would be full of email print-outs instead of invoices, meaning that the batch print would need to be run from scratch. Hired on as one of the "big guns" to help address the grim situation, John Reese was not surprised when he saw how the company's business "logic" was being executed.


Every Penny Counts

by in Error'd on

"I appreciate Telstra's effort," A.B. notes, "it's nice of them to help the customer in the global credit crunch."


The Apocalypse Must Have Occurred?!

by in CodeSOD on

Recently, Jörg S came across a rather interesting trouble ticket:

___ The Apocalypse Must Have Occured?! ___
 Ticket ID   : 76831
 Created By  : Cary L----------
 Assigned To : Jörg S-----
 Priority    : Low

   Legal wants to make sure that we have some special language in for 
   the 2010 Q1 release, but when I try to add it to ComplianceTraq,
   I keep getting the same thing:

       ERROR: Please ensure the system clock is correct. And if 
       it is... then God help us all, because the apocalypse must
       have occurred due to Compliance bugs, and we are still 
       trying to fix them. Damn you, Compliance!

   I know times are tough these days, but does ComplianceTraq know 
   something I don't? I didn't miss the apocalypse, right?!?!