Recent Articles

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.

What Is The Matrix?

by in Error'd on

Jason H. knows kung fu.


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.


Reverse Brute Force

by in CodeSOD on

When David was approached by a colleague for an estimate on some PHP work, David insisted that he'd need to see some of the code first. The only background David had on the project was that it was a PHP site with a MySQL backend, and a pretty sizable user base.

When David received the code, the first thing that he noticed was an unreasonably large file called namelib.php. It was apparently intended to clean up users' first names...


ITAPPMONROBOT

by in Feature Articles on

At the turn of the 21st century, Initrode Global's server infrastructure began showing cracks. Anyone that had been in the server room could immediately tell that its growth had been organic. Rackmounted servers sat next to recommissioned workstations, with cables barely secured by cable ties. Clearly there had been some effort to clean things up a bit, but whoever put forth that effort gave up halfway through.

It wasn't pretty, but it worked for years. As time passed, though, a proprietary gateway server to communicate with credit processing agencies would crash more and more frequently. And these were bad crashes, too — the kind of crashes where the server wouldn't respond to ping and would have to be restarted manually. It wasn't really a big deal for the admin, Erik, to hit the restart button on the server when he was there, but that was only 40 hours a week. The credit union needed it to be active 24/7, but was unwilling to hire 24 hour staff in the datacenter. The problem kept getting worse and worse, so the IT manager called up a meeting.


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)


Price in Nonsense

by in Feature Articles on

Some years ago, Pete, a clever coder, developed an application that tracked commissions for futures trading. Pete had long since left the company, his role now filled by Andy M.

Andy didn't have much exposure to Pete's code, aside from the occasional bug fix. Fixing bugs in Pete's code always left Andy feeling uneasy, however, as the problems were almost always a result of logic errors.


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.


Illicit Process Improvement

by in Feature Articles on

Christian R. was in trouble. Despite his experience across hardware and software, desktops and server clusters, thumb drives and SANs, he hadn't found any freelance work in weeks. It was clear that he'd have to figure something out to pay the bills.

In August, Christian applied at Drab's PCs, a large retail chain focused on computer hardware and software. He'd shopped there for years and had an impressive level of knowledge about their products, so he accepted a position in Technical Sales.


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.


A Gift from Above

by in Feature Articles on

When Prometheus stole fire from Zeus and gave it to us mortals, the mortals struggled to understand it. The power users of fire knew to fear and respect it, enjoying its benefits and working to minimize the risk of disaster. The newbies probably had a harder time with it.

Years ago, a network admin at Corey's company decided to extend the LISTSERV to the internal users. After all, the admin team had been using it and appreciated the flexibility it offered. Users could join a group by sending an email to it with a specific command in the subject line, and if they got tired of receiving emails from the group, they could simply remove themselves. To make it a bit easier, a page for users to manage their group memberships was built and put on the company intranet. After selling the business on the concept, documentation was sent out to various departments to walk them through basic use of the LISTSERV.


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."


More Fat than Human

by in Error'd on

While 90 kilos (~200 lbs) and a 103 cm (~40") waist doesn't sound so bad, Ian, I'm more than a little concerned about your body fat percentage...


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...


Reverse Cycle-ogy

by in Feature Articles on

After graduating college, Trevor didn't have much trouble finding a job. He worked in a small branch of a large company with no more than 20 people, all of whom had creative job titles that they probably chose themselves. Web scripters weren't "web scripters" — they were Solution Engineers. Some people were Systems Engineers, but they did exactly the same thing as the Solution Engineers. Trevor chose to refer to himself with the less impressive title of "programmer."

Trevor could tell that he was working with an expert team of engineers and solutionologists based on the way they talked. "We're going to leverage JavaScript interfaces, compartmentalizing and segmenting variables with integrated XML driven frameworks, all compiled with forward momentum." He'd also grown suspicious that some of the acronyms his colleagues used were made up on the spot. "The ID isn't even part of the XML DTD. Can you drop a PLC on the OC ASAP 4ME?"


There is No Option to Express How I Feel

by in Error'd on

Chet couldn't find the "surprised that such a thing even exists" option:


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...