Alex Papadimoulis

Founder, The Daily WTF

Dec 2007

Classic WTF: Tinfoil Hat Program

by in Feature Articles on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. "Tinfoil Hat Program" was originally published on 2005-05-24...


I had a pretty good post lined up today about (surprise, surprise) a rather peculiar abuse of HTML SELECTs. However, after reading the Tinfoil Hat House article posted at Slashdot, I knew I just had to share this project request that Mincus came across on one of those IT Project Portal sites (which I've certainly covered before).


Classic WTF: Implements ISwissArmyKnife

by in CodeSOD on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. "Implements ISwissArmyKnife" was originally published on 2005-02-24, and never seems to grow old...


I have yet to find someone who doesn't love Swiss Army Knifes: you know, those multi-function thingies with a few blades, a screwdriver, scissors, and a pepper grinder? Well, as surprising as this may be, the concept behind this Macgyver-saving-tool doesn't work well when applied to software development. But you gotta give Rick Harris' colleague some credit for trying ...


Classic WTF: Fisher Price Technology Integration

by in Feature Articles on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. "Fisher Price Technology Integration" was originally published on 2006-11-13...

Ryan H was pretty excited to start his new job as a developer. But his excitement quickly faded after he started. It didn't fade into apprehension, disappointment, or regret -- just into nothing; he simply stopped feeling anything at all. This type of apathy is to be expected when one is given the type of assignment that Ryan was given: absolutely nothing. Ryan's day to day job was to sit and patiently wait for the company to start up a project.


Classic WTF: Because database drivers can be too complex

by in CodeSOD on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. "Because database drivers can be too complex" was originally published on 2004-07-09, and is just one of those WTFs you wish you could un-see...


I was pretty stoked to see this submission from Stian Søiland. We've all seen developers do all sorts of crazy things, from completely avoid regular expressions to not bothering to use INNER JOINs or even basic WHERE clauses. But this?!? I think takes the cake ... or at least comes pretty close ...


Classic WTF: No Quack

by in Feature Articles on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. No Quack was originally published on 2006-12-01, and has become one of my all time favorites...


M.A. is one of the world's foremost experts on neural networks. His undergraduate specialty was artificial intelligence, his master's thesis was about genetic algorithms, and his doctoral dissertation covered evolutionary programming. Such an extensive computer science education opened up a wide range of career options, ranging from a professor at a university to ... a professor at another university. When someone outside of academia sought out his expertise for a project, he jumped at the opportunity.


Classic WTF: Now That is a Way to do States

by in CodeSOD on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. "Now That is a Way to do States" was originally published on 2005-01-31, and amazingly, no one has submitted a worse way to "do states" to this day...


It's hard to believe, but a good seven months ago, I honestly thought that using an autonumber as the primary key (instead of OH, NY, etc) was a bad way of implementing a States table in a database. Of course, thanks to everyone who's submitted things over the months (you guys rock, by the way), tblState would simply have been tossed in the "not using best-practices" category. But I think we can all agree that this state-handling routine from Kurt Payne would definitely fit in the Whisky Tango Foxtrot category ...


Classic WTF: The Abstract Candidate

by in Feature Articles on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. The Abstract Candidate was originally published on 2006-08-24, and seems to fit so well with today's earlier article...


When I first shared the story of Paula and her Brillant Java Bean, there was a bit of a mixed reaction. Many readers simply couldn't believe it: there's no way that someone like that would ever get hired in the first place. Some of the female readers (3 out of the 7 total, I believe), felt it was a bit sexist: come on, one of the worst programmers ever, and she just happens to be a girl?


Classic WTF: The Brillant Paula Bean

by in CodeSOD on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. The Brillant Paula Bean was originally published on 2005-08-05, and never seems to grow old...


Heidi S and Michael Hanson's employer was building an enterprise shipping/warehousing system but didn't have enough in-house resources to do it. One of the contractors they brought in to help fill the gaps was Paula, an "experienced Java programmer with strong knowledge of the shipping industry." For the first few months, things seemed to be going pretty well. At the weekly status meetings, Paula would report that good progress had been made and things were looking good for the deadline.


Classic Non-WTF: Print or Fish

by in Feature Articles on

Merry Christmas, everyone! Instead of a normal tale of incompetence, failure, or disaster, here's a fun story that's kind of the opposite of that. "Print or Fish" was originally published on 2005-11-22, and never seems to grow old...


By the time he was twenty-one, Roy had already earned the title "drop out." College just wasn't his thing: he attended three different universities -- one after another -- and didn't even come close to earning a degree. His "drop out" title was only solidified when he started work as a roll-machine operator at the local paper factory. Worse yet, the factory was by the docks, which meant that Roy had to pass through the outdoor fish-market every day on his way to work. Talk about a great way to start the day. But Roy wasn't fazed; he became inspired.


Classic WTF: The Great Google Banner Ad Conspiracy

by in Feature Articles on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. The Great Google Banner Ad Conspiracy was originally published on 2006-12-09.


It was only 9:15 in the morning and Neal was ready to write the day off as a complete loss. Neal's day started off with him accidentally pressing the "Alarm Off" button instead of "Snooze," missing his morning workout, driving downtown through the tail-end of a traffic jam, and arriving forty-five minutes late to work. But when he stepped in the office, it was oddly vacant: Was it a company holiday? Did he miss the field trip memo? Was today actually a Saturday? "Neal," the president shouted from his corner office, interrupting Neal's workless fantasy, "get in here; come see this!"


Classic WTF: What Is Truth?

by in CodeSOD on

Although I've taken the rest of the year off, I wanted to share a few fun classics this week. What Is Truth was originally published on 2005-10-24.


The problem with "logic" is that it makes things out to be nothing but simple dualities. Proponents of logic want us to believe that everything is true or false, black or white, yes or no, paper or plastic, etc. Thankfully, there are some among us, like Mark Harrison's colleague, who are not afraid to stand up to these logic advocates and shout "no, I will not succumb to your false dichotomies!" Today, I think we all should salute those few brave people ...


The Re-Interview

by in Tales from the Interview on

It was the best job opportunity Kirk had ever seen.

WANTED. Smart programmers who enjoy working on WELL-FUNDED projects 
using STATE-OF-THE-ART technology to fill a HIGH-GROWTH position at 
an INDUSTRY LEADING travel company. TOP-NOTCH PAY and comprehensive 
benefits including AIRLINE PERKS.

Their Version of Cut and Paste

by in Best of the Sidebar on

Today's Best-of-the-Sidebar was originally posted by "old gutsie" ...

A couple years back, I was tasked with making a few changes to a client’s existing website. Most of the changes they wanted were cosmetic – move a few things here, change some text there – but some involved making minor enhancements to the application.


Delivery By EULA

by in Error'd on

"When I called iRobot to see if they could help with my broken Roomba," M. Helm wrote, "the customer service gladly sent out an 'upgrade kit' to fix the problem and noted that I'd have to agree to the EULA sent along with it. I didn't think I'd have a problem agreeing to the EULA, until I saw this."


(hilighted for clarity)


The Most Thought Out Enumeration

by in CodeSOD on

When Chris M's company finally decided to rewrite portions of their decrepit C++ application, Chris was relieved. "Finally," he thought, "no more ridiculous, unnecessary classes and enumerations."

The DlYesNo enumeration, as featured in Not the Most Thought Out Enumeration, was one of many of such “unnecessary classes and enumerations.” Chris figured that the new, cleanly-programmed J2EE application would have none of that.


(Unknown)

by in Error'd on

"This is what saw when I tried to open a Fidelity account online;" Leland W. said, "when I called in for help, a customer service rep explained that this has been a 'known issue' with their software for a while. When she started giving me instructions on how to change my system's language code to EN-US, I opted for the paper application."


A Null Understanding

by in CodeSOD on

These days, having written about bad code for a few years now, it's pretty rare to uncover a new anti-pattern like the FOR-CASE paradigm, IHBLRIA, or RLB o'PCC. However, having seen snippet after snippet like todays two, I think it's finally time to identify the Null Understanding...

Daniel found this snippet during a code review that was left by a senior developer who, thankfully, is no longer with the company.


The Beast

by in Feature Articles on

A few weeks ago, I shared the RemoveSpecialCharsExceptQuote AmpersandApostropheOpenBracket CloseBracketCommaHyphenFull StopCommaForwardSlash() method that Paul G. was forced to implement by his superior. Now this may come as a surprise, but there were a few more "oddities" at that organization. And shortly after leaving the longest-three-months-of-his-life contract, Paul was nice enough to share some more of them.

"The job interview went pretty well," Paul wrote, "everyone was pretty level-headed and seemed to have a pretty strong grasp of .NET and web technologies. Their description of the core application was like any other ASP.NET app: a Web Server communicated to a Database Server via ADO.NET and used a handful of Web Services. It seemed like a great fit."


plz email me teh codez

by in Best of the Sidebar on

Back in July of 2001, a member of Sun's EmbeddedJava Forums asked a fairly simple question: Is it possible to send SMS using Java?


Announcement: A New, New, New Name!

by in Feature Articles on

As you may have noticed by now, I’ve decided to rename the site once again. While the New Name (“Worse Than Failure”) seemed like a good fit at the time, and the New, New Name (“The Daily Worse Than Failure”) seemed like an even better fit, it turns out that there was one name that was still better: the New, New, New Name, or “The Daily WTF.”

While I understand that the New, New, New Name may seem completely and entirely identical to the Original Name, there are a few key feature changes here. But instead of detailing those, I think it’s much more valuable to do a quick Site Renaming post-mortem. This will allow us to explore the lessons learned and answer one key question: why did the deployment of the Older Newer Names not work?


No Loop For You!

by in CodeSOD on

When Mike's coworker left the company for greener pastures, Mike got stuck with maintaining all of his old projects. This wouldn't have been too bad if it weren't for a application that was developed using the BrillantML (as I'll call it). While Brillant ML is technically a programming language, a more apt description is "a few commands surrounded by an XML wrapper." Yes, it really is as horrid as it sounds.

BrillantML is used to create interfaces on a certain type of consumer hardware, and Mike's first experience with it was when he needed to change some of the menu labels around. The first thing he noticed was his predecessor didn't believe in using loops. Anywhere.


Announcement: 2007 Survey Results & Site Changes

by in Feature Articles on

First and foremost, thank you all for taking the survey. Your answers and comments (which I’m still making my way through) have really given me a good insight and some ideas on where to go in the near future. Speaking of which, as a result of your feedback, I’ve implemented a few simple changes.

Featured Comments

Although I’m sure a lot of you laugh hysterically every single time you see a “First!” and “FIST!!!!!!!~~!!!” comment posted, quite a number of readers would prefer to only see some of the most “well-reasoned, humorous, and insightful” comments. Speaking of which, I’m surprised that only 5.5% of you said that, given the opportunity to leave that first comment, you’d leave “a well-reasoned, humorous, and insightful reply.” Tsk, tsk, tsk.


Does Sport Run In Your Family?

by in Error'd on

Here's yet another screenshot from the inappropriate contextual ads department...


(from the sidebar)


It Only Seems Redundant and Stupid

by in CodeSOD on

Isaac S. recently started working for a certain online multiplayer game company, and noticed that his fellow developers were very meticulous about security.

"Concerned that hackers might try to break into the game servers," Isaac wrote, "they encrypted the IP-address when it was passed between functions using XOR encryption. It was the perfect protection against hackers that didn't have Netstat or any other network sniffer."


What If Someone Types In " "?

by in CodeSOD on

Bob T. got sucked into one of those "maybe the new guy can figure it out!" problems, only to open the first page - and then subsequent pages - to see that all of the validation code looked like this...


It Had Too Many Functions

by in CodeSOD on

As one of the more experienced C# coders in his group, Yakir is often asked programming questions. Recently, his colleague James asked him the best way to store hundreds of thousands of items in memory, to which Yakir replied "It depends on how you want to access your data. If you want to access your data by index, you should store it in an ArrayList. If its easier to store things as a key-value pair, then you should use a Hashtable."

James' particular application called for a Hashtable, so he decided to implement that. A few hours later, however, he ran into some trouble. "This Hashtable isn't really working," James explained, "do you know if there's something more efficient?"


Faulty by Design

by in Feature Articles on

After 18 long months, it was finally time to celebrate. David M. and his fellow dev team members received word that their latest build had passed QA testing and was ready for delivery.

The software that David created was a point-of-sale system, designed to replace the antiquated cash registers used by a midsized retail chain. While the retailer was growing, the cash register vendor was going in the opposite direction. The company had just filed for Chapter 11, leaving all of its customers -- including David's client -- with an inventory of cash registers that no one else could sell or maintain.


The Intermittent Hum

by in Feature Articles on

R. Young got his first job as a developer right out of college. He was a Programmer Consultant I, which meant that he'd be sent to a client site to fix bugs in some old system. But on his first assignment, he got lucky: the client actually wanted him and the junior-level programmer to develop a small application.

The application they wanted wasn't too complicated, and primarily consisted of printing out a few reports. Although neither Young nor his colleague had worked with the client's language of choice - Clipper, an old DBase derivative - they were able to pick it up pretty easily and learn its nuances. The first thing they realized about Clipper was that, instead of the recommended SEEK command - which required USEing an INDEX or two, SETting RELATIONS, SEEKing a search expression, and looping while FOUND() was .T. (that's "true" in Clipper-speak) - they could simply use a filter with the SET FILTER command. All one had to do in order to, for example, print Line Tests results for a given operator was something like this...


Perseverance in the Face of Change Requests

by in Representative Line on

A lot of “certain” developers just don’t like change. They’ll stick to their architecture no matter what, and certainly regardless of the requirements change. Doing any less would compromise the “purity” their design.

The lead developer on John’s team is like this and was faced with “a really ridiculous change request.” The spare parts catalogue they were building needed to manage assemblies – i.e. a grouping of parts – as well as individual parts. The following representative line should give you an idea of how this was implemented...