Alex Papadimoulis

Founder, The Daily WTF

Apr 2008

Oh, XML

by in CodeSOD on

"Having worked in the Computer industry for about twenty years now," Matt writes, "I rarely get the chance to actually write code. But I do get the joy of other people's problems landing at my feet when things go wrong."

"Not too long ago, one of our newer techies emailed me, complaining that he couldn't get load image data from a WebService created by another developer. Given that all of the XML serialization and deserialization is handed through our enterprisey library, it was only when I visted the WebService address in my browser that I was able to see the 'raw' data:


Up or Out: Solving the IT Turnover Crisis

by in Alex's Soapbox on

If you’ve worked at enough companies in the IT industry, you’ve probably noticed that the most talented software developers tend to not stick around at one place for too long. The least talented folks, on the other hand, entrench themselves deep within the organization, often building beachheads of bad code that no sane developer would dare go near, all the while ensuring their own job security and screwing up just enough times not to get fired.

Earlier this month, Bruce F. Webster aptly named this phenomenon the Dead Sea Effect. Today, I’ll discuss a solution to overcoming it. In short: embrace turnover, encourage separation, and don’t even think about saying “careers, not jobs.” Oh yes, it’s Employment 2.0.


The Nightly Session Drop

by in Representative Line on

“Shortly after joining my new company,” writes Rajesh Subramanian, “they introduced me to The Monster: a massive, incomplete framework written in C++. Its documentation consisted of a few sparse, often contradictory comments. It was designed to be multithreaded, but always crashed with more than one thread. It was expected to run on different operating systems, but never quite made it past Windows 2000 SP3. And naturally, it’s filled with friendly variable names like s, t, pp1, pp2, and so on.”

“One of my first tasks – an ‘easy one’ – was to fix The Nightly Session Drop. For as long as anyone could remember, The Monster would disconnect at exactly midnight and reconnect a moment later. This would occasionally lead to ‘really bad things’ that could take all day to fix. So, after a half day of diving head first into The Monster, I found this line of code complete with comment…”


Random Assortment Transfer

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. Nothing specific, per the instructions page, "anything will do." Well, here goes anything, yet again! (first one here, second one here)


Tuuli Mustasydan (Edmonton, CA) finally figured out something to do with his random assortment of souvenirs from around the world.


The Mother of all Interfaces

by in Feature Articles on

Back in the early 1990's, G.R.G. worked at a certain university as a programmer. In addition to breaking into server rooms and deafening cute little chinchillas, G.R.G. built one of the university's first web applications. It was a fairly simple CGI program that provided web-access to the student registration known as Old Yeller.

Even in those days, the university’s student registration system was considered to be ancient. Running on an System/370 that had long since seen its day, Old Yeller was based off of an off-the-shelf system and customized over the years with various COBOL and Assembler patches. Though it wasn't too pretty, Old Yeller reliably handled 85,000 registrations each semester and brought in about $400 Million a year. And all in less than a megabyte of RAM.


How Can You Expect This?!

by in Tales from the Interview on

How Can You Expect This?! (from K.D.)

I was interviewing candidates for a Unix system administrator position. One of the "broad" questions I tended to ask was purely intended to get insight into the candidate's problem-solving abilities, but also a way to see what tools and techniques they might suggest (rather than the old "here's a list of tools, have you ever used them?" type of questions, since invariably every candidate would insist they had used them all).


I'll be back...

by in Best of the Sidebar on

Originally posted by "JukeboxJim" ...

Deep within the bowls of a large financial institution lurks a monstrous system that was originally written by a single, Highly Paid Consultant. Today, there is a dedicated army of Oompa Loompas needed to support this system. Innocent souls must be routinely sacrificed into the meat grinder to keep the beast operating.


A Numbers Game

by in Error'd on

L Young writes, "I'm pretty sure that there isn't a number that falls between this range..."


The Defect Black Market

by in Feature Articles on

When Damon's coworker stopped by his cubicle for a chat, Damon wondered if they should have met in a dark alley somewhere. Damon, a developer, and his coworker in quality assurance were meeting to trade bugs on the newly created Defect Black Market.

It all started a week before, when the CTO of Damon's midsize warehousing and transportation company in Northern California announced an innovative program to motivate employees and boost the quality of their logistics software. For every bug found by a tester and fixed by a programmer, both would get $10.

Bonus Plan in Operation


Ummm.. 2V3Xg9MPr0Q?

by in Error'd on

Brad P had a difficult time solving this limo company's (UPDATE: now fixed) CAPTCHA. I wonder if they've ever considered why no one is emailing them...


Deep Copy

by in Representative Line on

A little more than a year ago, Nathan T's company decided to outsource a large portion of certain project to a certain country many thousands of miles away. "Even if the code quality isn't as good," one manager would often say, "we'll just pay them to rewrite it and rewrite it again. It'll still be less expensive."

Extended that logic even further, management decided to not only outsource overseas, but outsource to the cheapest overseas firm they could find. Eventually, they'd end up with solid code, right?


Oklahoma Leaks Tens of Thousands of Social Security Numbers, Other Sensitive Data

by in Feature Articles on

One of the cardinal rules of computer programming is to never trust your input. This holds especially true when your input comes from users, and even more so when it comes from the anonymous, general public. Apparently, the developers at Oklahoma’s Department of Corrections slept through that day in computer science class, and even managed to skip all of Common Sense 101. You see, not only did they trust anonymous user input on their public-facing website, but they blindly executed it and displayed whatever came back.

The result of this negligently bad coding has some rather serious consequences: the names, addresses, and social security numbers of tens of thousands of Oklahoma residents were made available to the general public for a period of at least three years. Up until yesterday, April 13 2008, anyone with a web browser and the knowledge from Chapter One of SQL For Dummies could have easily accessed – and possibly, changed – any data within the DOC’s databases. It took me all of a minute to figure out how to download 10,597 records – SSNs and all – from their website:


A Clean Install

by in Best of the Sidebar on

Originally posted by "Dirk"...

A friend of mine recently bought a product called PrintMaster. He had some trouble installing the software and called me up for some tech support. He was receiving an Error 1305, for which a quick Google search lead me towards the following:


They're Useful... In General

by in CodeSOD on

"I've lost the will to live," Reacher writes, "or at the very least, debug my coworker's code."

"Whenever this coworker works on a new project, he always insists upon adding in Utils.cs. It's a collection of static methods that he's been building up since a CS class at university, and contains all sorts of useful helpers like this...


Announcement: Content Survey Results

by in Feature Articles on

Thank you all for participating in last week's survey! I crunched the numbers and read through the 150+ printed pages of comments, and learned some pretty neat things along the way:

  • Quite a number of readers missed the invisible <AprilFools> tag, and hate the new4 name The Daily WTH.
  • Not too many paid attention to the distinction between features (like Code SOD, Error'd, etc).
  • The non-coders usually don't understand the code snippets, and they're OK with that. Some would prefer an explanation in the comments, though.
  • The general consesus for the comic (MFD) was that, while the idea of having a comic here is good, MFD isn't quite "there" yet. It does show some potential, but in the mean time, the reader-submitted comics are "where it's at." There was also a lot of very helpful constructive critisism.
  • Despite hating the content here, and especially disliking me, some of you still visit on regular basis and actually take the time to leave survey comments. I'm flattered. Especially by you, Survey Taker #2883:
    • Alex, please stop trying to be funny. You are completely devoid of any sort of sense of humour and impervious to being told this. Your idea of an April Fool's joke was to pretend to rename the site what, three months after actually renaming it and renaming it back? That's not funny. You don't know what funny is. You don't get it, and no matter how much you're told, you *won't* get it. When three thousand people call you an ass, start looking for a saddle. I don't want your worthless prose, your insipid writing, or your mean-spirited forays into OS/platform wars. Basically, any time your personality creeps through, we all suffer.
  • For those of you who asked about another programming contest: yes, soon!

Of course, my analysis of the numbers is limited by complete lack of any statistical skills, so I've put together a CSV file (data only - no comments/ip) and a basic page that explains what the fields are. So here's your challenge: I will send out the official, extra-large 15'oz WTF mug to whoever comes up with the most interesting analysis (post in the comments).


Design Me A House

by in Tales from the Interview on

Design me a House (by David J)

Like most sane people, I absolutely despise the whole Job Interview 2.0 thing. Now, I'm usually good at sniffing these types of companies out before wasting their time and mine with an interview, but recently I got caught up in one when looking for a Java position at a mid-sized consulting company.


I Think I'm Going To Be Sick

by in Feature Articles on

For the most part, it was like any other sales meeting. Robert sat in a dark conference room with the potential client's CTO, COO and a few other managers. A projector lit up the whiteboard with PowerPoint slides and screenshots from their in-house billing system. Janice, the CTO, went over the automated billing application and related processes so that Robert, an IT consultant, and his team could develop a proposal for maintaining it.

One thing seemed off, however. Janice spoke in absolutes, "When you start the contract ..." At first, Robert figured he was just that good in his pitch, and that she had already made a decision. But as Janice presented the Web application and its history, Robert realized it was something else. She was trying to sell him on taking the contract.


Halifax Bank Security

by in Best of the Sidebar on

Originally posted by "Tann San"...

Not too long ago, my Halifax ATM card got deactivated because I misentered the PIN number three times in a row. So, the next day, I went into the main bank branch to get some cash from a teller.


The RedirectException

by in CodeSOD on

Hannes writes, "I'm currently working on maintaining rewriting an application from the early days of ASP.NET (c. 2001) to be all AJAXy and Web 2.0. One of the first things I stumbled over when I first fired up the debugger was a strange exception - the RedirectException - that got thrown on almost every page. Sometimes, it was thrown more than once in the page lifecycle, but it never made it up to the front-end.

"I quickly found out the developer didn't quite get the concept of exceptions.


The Test of Truth

by in Representative Line on

A few years back, Randy A took a contract as a maintenance developer on a wretched abomination of an application. Like those who've stared into the heart of the Great Codethulhu, Randy's retinas are forever burned with code from the system. One line that continues to haunt his dreams is as clear as the day he first encountered it...

return (test == true)? ( (test == false)? false : true) : ((test == false) ? false : true);

168.168.2.40 Now Boarding

by in Error'd on

Jason snapped this at the Ann Arbor Hands on Museum on one of their "fitness" machines.


Announcement: Content Survey

by in Feature Articles on

Yeah, yeah, yeah: Yet Another Survey on The Daily WTF. However, unlike the recent survey from December, this one is not so much about you, but about what you think about the content here.

You see, as editor and lead writer here, it’s a bit of a challenge to figure out exactly what you come here to read. Sure, there are page views, referrers, visit paths, and all sorts of other statistics and numbers I could try to distill, but nothing beats just asking you directly.


Front-Ahead Design

by in Feature Articles on

In the past, I didn’t mix TDWTH and work too often, but with the tweaked name and tweaked direction on content, I knew this article would be a perfect fit.

As some of you know, I fill two important roles in my day job at Inedo, LLC. Not only am I a software developer, but I’m also the Chief Front-Ahead Design Evangelist. In this latter role, it’s my duty to spread and champion the revolutionary software development methodology known as Front Ahead Design (FAD).


Announcement: Website.RenameTo("The Daily WTH")

by in Feature Articles on

As you can probably tell by now, The Daily WTF is now named The Daily WTH, as in The Daily What The Heck. Don’t worry, though – nothing else has changed. Okay, that’s not entirely true: a few other things are changing, but they’re all mostly minor. Really, you won’t even know the difference.