Alex Papadimoulis

Founder, The Daily WTF

Jul 2007

Diary of a Programmer Analyst

by in CodeSOD on

Well over a decade ago, James Kirk started his career at as a lowly Programmer at a large company. In a short six months, through lots of hard work and dedication, his title and pay was upgraded to Programmer Analyst. At that point, he was happy with his career. Then came the hiring freeze. And the wage freeze. And the extension to the wage freeze. As the moths turned into quarters and the quarters into years, James saw less and less of an opportunity for any sort of advancement.

Of course, being that this is all ancient history, James had forgotten all about it. Recently however, a friend of his started working at James’ old workplace and stumbled upon some of his unhappiness…


You Get What You Ask For

by in Tales from the Interview on

Nothing screams “easy money” like headhunting. Twenty-five to thirty percent of your recruit’s first annual salary? Twenty dollars off the top of each hour worked by your contractor? With that kind of bling, who wouldn’tsign up as a headhunter?

Of course, recruiting good people is no trivial task (that’s probably why it costs so damn much), but that certainly doesn’t stop a whole lot of wannabes from trying. Like the fine folks behind this email that Chris M recently received …


EnterFlag Technology

by in CodeSOD on

Jan Krüger shares with us the unique EnterFlag Technology that he came across recently ...

"We all know it is very difficult to validate user input on web pages. Specifically, a problem that has been baffling scientists for years is finding out whether the input form on the page to be displayed was submitted in the current request. Luckily, this problem is now solved once and for all, thanks to a colleague of mine, who was tasked with preventing the form validation code from showing error messages when the form was not even submitted yet.


One at a Time

by in CodeSOD on

While looking for a mortgage company to refinance his loan, Evgeny Potashnik came across Australian Mortgage Options. They seemed decent enough; they even had an online loan management site. Curious to see what it offered, Evgeny took a peek…

The first thing he was greeted with on their loan service page was a rather peculiar login. Customers are asked to enter their loan number, one digit at a time:


Yet Another Operator Overloading Abuse

by in CodeSOD on

If you've worked as a C++ programmer for long enough, I'm sure you have plenty of stories about operator overloading abuse. Today, Jake Wyland shares the worst abuse he's seen to date ...

"The company I used to work for went on a hiring binge to staff up for a big project. The work required a lot of domain experience working with a gargantuan plug-in API. To make learning the API easier, we decided to have weekly code excursions where people would come in and present the code they were working on and show off how to use the portion of the API they were working on. During one such code excursion, I saw the following code scroll by in the image projected on the wall:


I Need This Right Away

by in Feature Articles on

Not too long ago, a job posting at Steve D’s university called for “a student familiar with C++ programming” that could help “develop software to interface with radio receiver cards using an existing API.” The ad also mentioned, using big, bolded letters, that the candidate “MUST BE AVAILABLE IMMEDIATELY” and that the project had a “TIGHT, THREE WEEK DEADLINE.” While that would have been a warning sign to most, to a cash-strapped student, it was a great opportunity to make some extra cash. Steve emailed his resume right away.

Two weeks later, having mostly forgotten about the job, Steve received a reply back. The good news was that they were “very interested” in having him work on the project. The bad news was that the project still needed to be done right away. And the project needed to be complete in three weeks time. And they were only able to pay for ten hours of work per week. And they could only pay $5.50/hr.


Tenth Time's The Charm

by in CodeSOD on

If you’ve ever noticed how completely unreliable computers are – you know, performing completely random and unpredictable actions when given a simple, explicit instruction – then you’ll appreciate today’s snippet from John P.

Today’s code was uncovered in a web application and attempts to solve the well-known problem of DateTime.Parse: in the event that the method fails the first time, it will probably correctly parse a string the tenth time.


A Backup's Backup's Backup

by in Feature Articles on

It was Ted’s first week on the job. He was brought in to replace another manager that had disappeared on “medical leave.” Although Ted suspected his predecessor had left or had been asked to leave for different reasons, he ignored it along with his initial instinct to flee.

Ted’s new company was very serious about its data. But not serious as in designing a properly normalized data model. Nor serious as in creating a database that could be easily extended or manipulated when needed. Nor even serious as in, having life-changing large-dollar, or other highly-critical information stored within. The company was serious about being unwilling to lose even the smallest iota of data. Ever.


Protected Code

by in CodeSOD on

Every once in a while, we have no choice but to write “dangerous” code. The type of code that, when used improperly, can wreak all sorts of havoc on the system. Purging audit trail records, fast-swapping statuses, or, like in today’s example, code that toggles an object’s "IsUpdated" property regardless of whether that object has been updated.

It’s a good idea to protect such code, perhaps using access specifiers like “private” or “internal” or even runtime-enforced security like the System.Security.CodeAccessPermission namespace. Or, one could go the route of Riaan Hanekom's predecessor and use some sort of… password protection?


Paging Dr. UPS

by in Feature Articles on

It was not the ideal way to start a Monday morning. Matt arrived at work to find his boss frantically pacing around the office. “Oh thank God you’re here,” he said as they locked eyes, “the CMB system is down. And Net Ops can’t get bring it back online.”

On the scale of All Things Bad, a downed CMB system falls somewhere between having all employees call in sick for the day and the spontaneous combustion of all computers throughout the company. No CMB meant that the company’s 600+ employees would have to rely on “manual processes” to do their jobs. And that meant that there’d be a lot of unhappy employees, managers, and customers.


It’s Just a Wiring Problem

by in Feature Articles on

As a freelance web developer, Erik finds himself doing all sorts of odd jobs. Fixing up an Access application here, installing a firewall there – he’ll gladly help his clients out with whatever they need, so long as they’re paying and he’s comfortable doing it.

His latest potential job, referred to him through a friend-of-a-friend, was at a small company that had a “simple wiring problem” with their network. Apparently, none of the local networking companies were willing or able to fix it, and Erik was their last and greatest hope. It was a rather high expectation for someone that had only set up one or two networks in his day, but Erik figured that he’d give it a shot. They were paying hourly, after all.


Special Savings

by in Error'd on

Ben Brandt is a bit underwhelmed at his grocery store's fuel savings plan. The one cents savings per gallon (up to $0.12) just doesn't make a meaningful dent in today's high gas prices ...


Not the Most Thought Out Enumeration

by in CodeSOD on

Chris M is part of team that’s responsible for maintaining a giant mess that was once a fairly simple C++ application. Like so many organically grown behemoths, this application has its share of bad and rotting code.

Today’s example, however, is neither bad nor rotting. It’s simply bizarre. Code that never should have been, and that no sane person ever could have written …


I Told You So

by in Feature Articles on

One of the few things in life more satisfying than saying “I Told You So” is being told not to say it. As a freelance software developer, Jeff finds himself in that position rather frequently. Most of the time, it’s with his friend and colleague, Frank, who is a part-owner of a small marketing firm.

Frank is a rather frugal fellow. He’s the type of guy that would travel across state lines just to avoid paying a $1.50 “foreign ATM” fee. Recently, Frank asked Jeff to give him an estimate on setting up a web server for his company and its clients.


Lord of the Blogs

by in Feature Articles on

It was about frickin’ time -- Rob had finally landed himself a promotion. Technically, it was more an “absorption of responsibilities” than anything else, but the important thing was that his new role as “Global Editor” offered an excellent ROR (Return On Résumé). Really, how hard could it be to administer a handful of internal users writing a handful of blogs?

The previous Global Editor had left abruptly, and no one was really sure why. Some say he was fired, others say he just stopped coming in, and still others say he was committed. Fortunately for Rob, the previous editor left behind some extensive process documentation…


What Where We Thinking?

by in CodeSOD on

Back in the 90's, Andreas was working on various SmartCard projects. Most of it involved programming 8051 microcontrollers. One particular project required him to replace magnetic stripe card readers with SmartCard readers while emulating the exact behaviour of the previous hardware.

After weeks of back and forth between the customer and him, his final job was to clean up the code and comments for the final release. And this is when he found this little nugget ...


It's Not Really a Problem

by in Feature Articles on

As the “IT guy” guy at a small company, J.F.L. is tasked with all sorts of miscellaneous projects, from hacking together simple programs to setting up workstations for new hires. His latest assignment involved installing some rather expensive (as in, six-figure expensive) safety training software that would allow the company to keep track of which employees needed to complete which safety training modules.

One of the big selling points of the training software was its modular client-server design. The “server component” housed all of the videos, graphics, and course material, along with a database for employee accounts and testing certificates. The “client component” was a fairly basic application that connected to the server and allowed the end user to perform a variety of actions based on their security level. In theory, it seemed like a nice and clean design. In practice… not so much.


I'm Sure You Can Deal

by in Feature Articles on

Not too long ago, there was a small furor in the local media about a major disaster at The State's Technology Services Division. The details were a bit sketchy – mostly because The State was “unable to comment on an ongoing investigation” – but what was reported was that, for two full days, employees of The State were unable to logon to their computers or access email, and that this caused business within The State to grind to a halt.

As the “investigation” carried on, the media lost interest in the story and moved on to more newsworthy stories like who Paris Hilton was partying with last weekend. Fortunately for us, a certain employee of The State named J.N. works in the Technology Services Division and decided to share what really was behind those fateful days.


Many Shades of Cout

by in CodeSOD on

For the most part, the Message Queue Processor at Andy's company is not a terrible application to work with. Most changes – such as setting up a new queue, changing trigger times, and so forth – can be done by changing configuration files. At least, that was Andy's opinion before having to make a change to its code…

Andy needed to add in support for serializing on multiple recipients, which mostly meant that he’d have to throw together an overload for the Serialize method. Not a big deal, until he made the fatal mistake of declaring a variable named cOut:


When will users learn?

by in Feature Articles on

It may not have been named RUPP, but you’ve likely had to use – or worse, maintain – an application just like it. You know the type: a critical, internally-developed system designed by a “clever” architect to be as “extensible” as possible and hacked together over the course of several years. At Jude’s company, this application was RUPP.

You see, despite being a multi-user Access / Visual Basic Frankenstein that heavily relies on shared Word and Excel documents to store client records, the person to blame for RUPP’s frequent crashes is not its sole developer. Question number three on the FAQ explains it perfectly…


Unacceptable Use

by in Error'd on

As an employer, it can be a pretty big challenge to figure out what sites are work-appropriate and what ones aren’t. Game sites, news sites, shopping sites: obviously inappropriate and most certainly frowned upon. The company intranet and the company’s public website: appropriate, so long as it’s on your lunch break. It’s those “grey area” sites – such as the reference and education ones – that one could go either way on. Fortunately, Chad Moore’s company knew exactly where to draw the line …


Classic WTF: The Forbidden Parameter

by in CodeSOD on

Happy Independence Day, U.S. readers! And for you non-U.S. readers, Happy .. errr ... Regular Day of the Week! The Forbidden Parameter was originally published way back on June 16th, 2006 ...


When Steve Mitcham started at a new job a little while back, he spent some time reading through the documentation and implementation guide for the enterprise framework that the company developed in-house. There were a few things that seemed off, but one thing in particular stuck out ...


Achtung: WTF in German!

by in Feature Articles on

I am very excited to announce the launch of Worse Than Failure: German Edition at de.WorseThanFailure.com.

The German Edition is headed up by Matthias Bruch. If you'd like to help out, especially on the translation end of things, please drop him a line via the Contact Form. Like the Russian Edition, the German Edition will contain primarily translated articles and some original content. The RSS feed is located here: http://syndication.thedailywtf.com/WTF/DE.


Intern Turnaround

by in Feature Articles on

Internships are a rite of passage in virtually every profession. Unlike other industries, Information Technology interns aren’t required to do terribly degrading tasks, such as grabbing coffee for the boss, or acting as his human ottoman. Well, unless you intern at my company. Speaking of which… Intern Eric: you’re off ottoman duty; go grab me a triple venti mocha backflip latte!

Many companies offer some sort of intern training program. And for good reason: interns are so excited to gain actual experience in their industry that they’ll work an unheard amount of hours for a mere pittance. At least, that’s the theory. It didn’t quite work out that way for Chris Tribbeck’s interns.


Please Bypass Security

by in Error'd on

Balancing security and usability can be an awfully challenging task. On one hand, users want to be able to do things without being bothered by the system: yes, dammit! I’m sure! Yes, I’m sure I want to open this macro-laden Excel spreadsheet from my email. On the other hand, they want the system to warn them about dangerous things: well how was I supposed to know that a “money making proogram” from my “long-lost hig schol freind” that neglected to mention her name was a virus?

Excite.com seems to have found a unique balance to security and usability. For security purposes, they simply block all “unacceptable extensions.” And then provide some helpful advise on bypassing their security feature ...


Extra Sensitive Case Insensitivity

by in CodeSOD on

How often do you look within the bowels of your age-old "helper" classes? For most, including Sean, the answer is almost never. Why bother when it works just fine? Well, one reason might be to see what interesting techniques your predecessors employed in solving the simplest of problems... such as a case-insensitive search...

Fortunately, the original programmer never had to search for an 8 character string ...