Alex Papadimoulis

Founder, The Daily WTF

Apr 2007

Saving a Few Nanoseconds

by in Feature Articles on

Last month, in Saving a Few Minutes, we learned about G.R.G.'s experience with RUNPROG, one of the earliest examples of The Inner-Platform Effect I've ever seen. RUNPROG lived on an ancient supercomputer with an operating system that lacked the concept of search paths. Instead of a simple, four-line enhancement to "search another directory," RUNPROG was a 100,000-line assembly program that essentially did everything that the operating system did.

Although RUNPROG was entirely unnecessary, cost an incredible amount of time and money to maintain, and caused programs to run and load a magnitude slower, the business did not mind. It saved them money in the long run in that it allowed them to bill out even more CPU-time to their timesharing clients. In fact, after three short months of production use, the business had already forgotten the pain endured to create RUNPROG. That was, until Black Tuesday arrived.


The Bunny Connection

by in Error'd on

I've always been impressed by Amazon.com's recommendation system. Sure, it gets a little weird when they know exactly what I want before I know what I want, but it sure is convenient. I'm sure you Linux folks (like Tom) appreciate it just as much. In fact, I'll bet you didn't even know how much you wanted No More Bottles For Bunny! ...


Securing The Server Room

by in Feature Articles on

“Hey, you’re in IT, right,” a frantic fellow in a maintenance jumpsuit asked, barging right into G.R.G.’s cramped little office. G.R.G. shifted his eyes away from the project he was working on – some database for physics students and professors – and began to formulate an affirmative answer. Before he could even complete the word “yes,” the Maintenance Guy jumped in, “’cause, we have a serious problem.”

The Maintenance Guy went on to explain that he was receiving increasingly severe temperature alarms from the Server Room. First 86°F, then 93°F, then 97°F, and – just then – 103°F. He figured that the dedicated air conditioning unit had died. Normally, that wouldn’t be a problem, but he had no way to get in to fix it. The Server Room – which housed all of the university’s critical research, financial, and operational servers – was locked.


The Worse Than Failure Programming Contest

by in Feature Articles on

A couple months back, I mentioned that I’d like to try out something new on this site, specifically, a programming contest. After a lot of thinking and a little bit of coding, I finally put one together: The Olympiad of Misguided Geeks at Worse Than Failure Programming Contest.

Unlike other programming contests, the goal of the OMGWTF contest is not to flex your algorithmic muscles and solve some abstract computational problem like you might in an ACM contest. Nor is it like the International Obfuscated C Coding Contest; in fact, writing code like that would be a surefire way to lose this contest. Instead, the goal of the OMGWTF contest is to solve an incredibly simple problem using the most obscenely convoluted way imaginable. And for this first contest, the simple problem is to build and implement the logic for a four-function calculator.


And We Got Sheena

by in CodeSOD on

G.R.G. writes: years ago, we got to program on the original Macintosh. Believe it or not, it had really impressive speed with its 8MHz CPU. And then we inherited a programmer named Sheena. Her degree was in Cinema. We needed programmers. Sheena is what we got.

Generally, we tried to parcel out the simplest part of every project for Sheena. In this one big project, we needed a procedure that would read entries out of a Help file. So we gave that job to Sheena. The spec was: "Write a procedure that returns the N'th line of the help file."


Meaninglessness

by in Feature Articles on

As you may or may not know, my day job is a Software Developer at a small consulting company called Inedo. We build all sorts of businessy software that does all sorts of businessy things for all sorts of businessy, erm, businesses. Most days, it’s a challenging and satisfying job; I’ll go home thinking, I accomplished something today. But every once in a while, I can’t help but wonder, why am I spending my life building cold, meaningless business applications?

I’ve found that the feeling of meaninglessness comes especially after the “Deployment Celebrations” of some big, “productivity-increasing” system. Congratulations! We saved MegaCorp shareholders millions each year in labor costs, and we got a fantastic bullet point to put on our resumés. But we also put an entire floor of nice, hardworking people out of work. Now, I’m sure a lot of you have felt this sense of meaninglessness as well. Fortunately, folks like Ferdy remind us that, while we may not be doctors, or astronauts, or really anyone in a position to change the world, making it run a little more efficiently every can be a good thing.


The Source Control Manager

by in Feature Articles on

If you haven’t done so already, you will. Soon. It’s inevitable. No matter how careful you are, no matter how meticulous your check-ins, you will eventually be the developer who Breaks the Build.

Most developers fear becoming the Build Breaker. It’s not so much that they’d be responsible for hours of lost productivity, lost testing, lost testing time, and that sort of thing, it’s the “other” consequences. To help prevent broken builds, development organizations have put together penalizing procedures that are designed to embarrass and humiliate the Build Breaker. It’s almost always something fun and silly – the Build Breaker has to bring bagels to the next team meeting, or the Build Breaker Beanie Cap gets passed down from the last Build Breaker and must be worn for a week straight – but it works. Nobody wants to be The Build Breaker.


Please Turn to Page F%

by in Error'd on

Trying to follow news and current events the old-fashioned way is not so easy. Analog media like “newspapers” (I’d have to check Ye Olde English Dictionary, but I think that’s what they’re called) lack hyperlinks and require the reader to physically “turn” the “page” in order to continue reading a story. It’s crazy. And not only that, these ancient relics have no ability to handle errors like Page Not Found. Oli D. is still struggling to find Page F5 amongst F1, F2, F3, F4, F%, and F6...


GRG's Worst Production Failure

by in Feature Articles on

Last month, in //TODO: Uncomment Later I asked, what was your worst production failure? This month, G.R.G. (from Insecurity Doors, Mystery of the High Test Scores, Saving A Few Minutes, and so many more) tells of his worst production failure.

Long ago, I worked as a programmer at a university’s hearing research lab. They were awarded a large government grant to study the effects of different kinds of noise on hearing. For the really loud and really faint noises, the researchers used animal subjects with ears that are similar to human ears. Specifically, chinchillas.


Umm, Steve Got Lost

by in Tales from the Interview on

Unadmirable Honesty
(submitted anonymously)

Interviewing at my company is a grueling process filled with phone interviews, group presentation and interview, and one-on-one interviews. One of the one-on-one interviews is usually a behavioral interview. You know the kind, "If two people you worked with were having an argument about something what would you do?" or "When you start a project, walk me through the steps you take to make sure that you are successful." Most candidates will pass the behavioral part fairly easily since the phone interview should have weeded out most of the duds. That's why it was so amusing when one managed to slip through.


It's Gonna Be a While

by in CodeSOD on

One of Adam Lane's many fun adventures as a consultant was to help out a company that had a large, broken, in-house reporting system. The company's lead programmer had just up and left, leaving a mess of a project that "Visual Basic was having a few problems compiling" and that Adam would have to "clean it up and make it work." A dirty job, but that's why they paid Adam Adam's employer the big bucks.

The reporting system had a total of 192 forms, 87 modules, and 21 class modules. And hundreds of compiler errors. I believe the appropriate adjective here is "Hindenburgesque." Before Adam even looked at the code, the client wanted a ballpark guess of how long it would take to get their system back and compiling. Adam guessed "a week or two at best." After looking the code, he revised estimate: "it's gonna be a while."


Soft Coding

by in Alex's Soapbox on

The submission behind today's schedule article was withdrawn; instead, I'd like to take this opportunity to present the practice of Soft Coding.

Most programmers consider “Hard Coding” to be a Bad Thing: it’s hack-like, inelegant, and all-around lazy code. And as such, many programmers try their damnedest to avoid it. Unfortunately, this quest of avoidance often leads towards a much worse path: complication, convolution, and all-around unmaintainable code. It’s a path I like to call Soft Coding.


Cross Your Fingers ...

by in CodeSOD on

Josh will take any bit of solace he can find. The database he works with each day has caused him more pain than every other combined. Saying that it's "just a mess" is like saying that Hurricane Katrina was "just a storm."

Take the User table, for example. The original developers never thought to put a unique constraint on the "Username" column, resulting in a now-unchangeable 249 users with a username of "null", 103 with the username "" (that's blank), and over 400 Jose's and John's. As for Josh, he's just happy he can share this following stored procedure. It's a fun, little microcosm of his daily insanity.


Click Where?

by in Error'd on

It was a big day for the Human Resources department at George's company: they finally moved their myriad of documents and forms to the company's Intranet. While they could have simply uploaded their Word files directly, they opted for a more Web 0.1 approach: they printed off the documents, scanned them in, and uploaded the resulting PDFs.  


Some Call it Concatenation

by in CodeSOD on

Geoff Lane's predecessor, Brian, had a problem: none of the URLs their dataset started with "http://". This meant that, before displaying them in the UI, Brian would have to figure out a way to take the string "http://", and placed it front of every URL.

Give that requirement, how might you accomplish such a task? Here was Brian's solution ...


The Chief Development Manager

by in Feature Articles on

"Wait a sec," whispered Chris’s coworker David, "he can’t possibly think this will solve the Build Problem? His idea is completely absurd!"

Chris nodded slightly, clearly uncomfortable to be part of a conversation taking place in the middle of a meeting. Especially a meeting being held by the Chief Development Manager. While some managers like to lead by example, and others like to lead by befriending, the Chief Development Manager liked to lead by fear.


The Final Assignment

by in Feature Articles on

I was never able to wrap my mind around academic tenure. Though I certainly understand the desire for "academic freedom," a system that provides an "unfireable" designation, regardless of job performance, seems like it might have a bit of an impact on, say, job performance. Perhaps I’m just biased from my first experience with tenure: Yes Alex, we realize that 80% of students drop his course, and that he often misses lecture, and that he occasionally shows up smelling of bourbon, but please understand: he’s a tenured professor. And by the way, that did not make me feel any better about spending $1,400 on a completely worthless class.

I’m sure that Kerin A. doesn’t have a high opinion of academic tenure, either. His first experience with it was in Web Development 101, a course instructed by a certain tenured faculty member whom I’ll call Professor Lawrence. He was "on loan" from, as he put it, one of the best and most prestigious universities in the world: a small liberal arts college that no one in the class had ever heard of.