Recent Articles

Jun 2006

Classic WTF - And I think I'll call it .... "Referential Integrity" !

by in Feature Articles on

One thing I absolutely hate about working with databases is when you have to use more than one table. Don't get me wrong, I'm usually able to shove all of my data in one table, but some times you just have no choice. Thanks to Jason Strate, I'm going to be prepared next time I use multiple tables. His colleague was able to figure out a way to ensure that no one goes adding rows willy-nilly. It's sheer brilliance!


Classic WTF - Whatever you do, don't click that button ...

by in Feature Articles on

... because if you do, the DoNothing subroutine will fire! And don't even think about closing this web page (from Phil Harvey) ... it could cancel your fax transmission!


The $64,000 Message

by in Feature Articles on

Given the fact that you're reading this publication, it's safe to assume that you are, at a minimum, a fairly savvy computer user. Things like ctrl-alt-deleting, printer installation, and email attachments -- considered by most as a form of fancy-schmancy wizardry -- come as second nature to you. Computers don't own you, you own them.

Now consider, as the savvy computer user you are, how you might react if you received the following dialog, as Y. Goldberg did, while logging in to your workplace computer in the morning. Just how long would wait before you were 100% confident that the update script pushed by IT the night before was really finished and that the dialog (which prevented any computer usage) was not automatically closed as a result of a bug in the script?


One Version to Rule Them All

by in Feature Articles on

As a software development manager, A. Selvan sees his fair share of WTF's. Though most are suited for the likes of Dilbert comic strips, every now and then he'll come across a story that best fits here. Today I'd like to share one of these stories in the form of an email conversation between A. and the new Product Manager...


That's What the Internet Is For

by in Feature Articles on

Alan's company recently landed a small contract (ten hours per month) to manage and administer the network at an insurance agency. The previous company -- well, actually, guy -- worked full-time as a network administrator at the local university and had been servicing the agency for the past ten years in his spare time. An out-of-state job offer left him no longer able to service the agency.

A couple weeks before the contract started, Alan received a frantic call from the insurance agency: the system was completely down and Ishmael (let's call him) had already relocated a few time zones away. Within the hour, Alan was on-site, receiving a crash-course in their system. He learned that no system meant no quoting and no servicing and that was not good because it meant no business.


The Terminate()or

by in Feature Articles on

Edward Pearson's company needed a comprehensive sales management platform to manage everything from point of sale transactions to past-due letter templates. Because such a system would be far too complex and expensive to develop in-house, they decided to purchase an already-developed product. Finding this application wasn't easy, but after months of searching and evaluating, they found three strong vendors, each with a solid product, a good reputation, and a strong support plan. There was only one problem: they all were expensive (like, $50,000 expensive).

Thankfully, a friend of cousin of a friend of the son of the manager saved the day: his company not only had such a product, but would provide it for *a tenth* of what the "other guys" charged. And how could you not trust the manager's son's friend's cousin's friend?


Set, Apply, OK!

by in Feature Articles on

Most of us are familiar with "that one user." You know, the one who somehow always manages to find the exact sequence of steps required to crash your otherwise rock-solid application? On one hand, you respect him: how could you have possibly thought to check the grievance checkbox, select Billing from the drop-down list, hit the Save button, then hit the back button, and click the Save button twice in a row? On the other hand, you find him incredibly annoying: who in their right mind would think to follow those steps?

Every wonder what would happen if "that one user" and a developer were to somehow get rolled into one person? Doron Hirsch found out what happens when an entire team of "that one user" manages to piece together an IDE for embedded software. Every action in this application can be carried out in one, and only one, very specific manner. Any deviation from the exact sequence of steps will result in a crash or corruption of program data.


The Magical Mystery Report

by in Feature Articles on

Everyone knew about The Report. On a moderately sunny day, with just the right wind speed and the planets properly aligned, The Report would run in a reasonable amount of time: two, maybe three minutes. But on every other day, The Report would take an incredible amount of time (measured in hours) to run, if it decided to run at all that day.

No one had a good explanation for why The Report acted this way, nor did they want to find out. It was The Policy: questioning The Report might upset it; if The Report got upset, it might not run; and if The Report didn't run, its users would be deprived its bountiful data. The Report was good to its users most of the time, and no one wanted to change that. That is, no one, except Steven Dargal.


The Harbinger of the Epoch

by in Feature Articles on

January 19, 2038 is a date which will live in infamy. It is on that day that the 32-bit integer storing the number of seconds since the beginning of The Epoch will overflow, causing death and destruction unseen by the world since the Y2K Bug. As they did in 2000, software will spectacularly crash, hardware will explode, appliances will go haywire and attack their owners, and nuclear missiles will simultaneous launch and destroy the world. Casper Kvan was reminded of this impending doom when one of his systems suddenly went down.

The system that crashed was a vendor application and failed as a result of the database shutting down. Easy enough to fix, Casper restarted the database. It came back up, then went down again. He restarted it again, it came up, then went down. Up, down, up, down. The log files revealed the problem was in the vendor's startup script, which went something like this:


Enterprise Conversion Quirks

by in Feature Articles on


When Dean Cleaver took a job at a large corporation, he was expecting to experience some enterprise. After all, the company was in the top 50 of the Fortune 500, so if anyone would have enterprise, it sure would be these guys.

Dean's specific role in this organization was to be one of six developers on a newly-created team to maintain a large and growing web application. In his orientation, he learned that the application was converted from Java Server Pages to ASP.NET about a year ago and that rewriting the application was "off the table" for now. Dean thought it was a bit odd that the manager mentioned this *four separate times* without being prompted or asked in any way, but didn't otherwise take much note of it.


The Forbidden Parameter

by in Feature Articles on

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

public object LoadOrg(int cmpKey, object DO_NOT_USE_AT_ALL_EVER);


Black Box Black-Boxing

by in Feature Articles on

Several years back, Steve Woloshen was introduced to a new programming concept called Black Box Black-Boxing. Similar to the Black Box metaphor of programming, where the inner workings ("private" methods) of a class are distinct from the outer workings ("public" methods) and not available to the class consumer, Black Box Black-Boxing takes it one step further and makes the inner workings unavailable to everyone. Steve's experience on a large Unix to Windows to Unix to Windows to Unix batch process is an excellent example of this:

Project Lead: To get the compliance data in the stream, we'll need to have the AIX Stream component output the eligibility indicator as well.
Steve: That's no problem at all; I'd imagine just a few lines of code need to be changed.
Lead: Hmm ... well, the source code for that component is no longer available.
Steve: We'll have to rewrite it. Where are the specs for it?
Lead: Hmm ... well, those are no longer available either, and no one is sure what all it does.
Steve: ... we'll just have to get the indicator after it hits the AIX server
Lead: Hmm ... well, we thought of that, but the AIX can't access the warehouse data
Steve: ...


Classic WTF - How To Query "Pointless Pointless Pointless Pointless Pointless Pointless Pointless"

by in Feature Articles on

I know that Jake said I'd post some fresh content today, but it just didn't seem right to revisit Pointless Pointless Pointless Pointless Pointless Pointless Pointless without revisiting how such an innovative database is queried. So, once again, let's turn it over to Jake:

This is the query we use to find a record in the database:


Classic WTF - Pointless Pointless Pointless Pointless Pointless Pointless Pointless

by in Feature Articles on

Alex will be back tomorrow with a new WTF. For today, here's a classic WTF from me!

I'm sure we all have our stories of nightmarish projects inherited from clients, whether the secretary's cousin programmed a critical application in JavaScript or a community outreach program let a group home design their customer relationship management application.  Imagine my surprise when we got one that had beautifully written, well-commented ASP pages.  I thought this would be easy.


Classic WTF - Enter the Matrix

by in Feature Articles on

Alex is out of town today, so let's revisit a classic!  FileMatrix is an example of the exact opposite of Apple's typical UI design.  Whereas Apple will create a development environment that operates entirely from one blinky, rainbow-colored button on the screen (which you click one way to enter text, another way to compile, etc.), today's example is a piece of software that really empowers the user.

The Matrix!  No, not the the uburbulous deprodication errebelously conceived by "The Architect". I'm talking about the other matrix - The FileMatrix. Agent "G. Nickerson" was kind enough to send in a link to this UI where "simplicity" and "ease of use" seem to have gone the way of the telegraph. Take a gander for yourself:


The Trials and Tribulations of Programmatic Email

by in Feature Articles on

If you were to say "programmatically send an email in .NET" to a .NET programmer, he'd almost immediately reply "SmtpMail class in System.Web.Mail." A less experienced .NET programmer might take a moment to search the documentation, and then reply "SmtpMail class in System.Web.Mail." Someone with absolutely no .NET programming experience would take a few minutes on Google, and then reply "SmtpMail class in System.Web.Mail."

When Maxim Rouiller's predecessor (the company's former .NET whiz) was presented with the requirement to "programmatically send an email in .NET," he used a slightly different approach. With the change log and source control history, Maxim was able to reconstruct the trials and tribulations he must have gone through to finally master this requirement.


I, Object

by in Feature Articles on

Every once in a while, I like to present a representative line of code from a titanic (an adjective chosen for more than its synonymity with "frickin' huge") application. That's right -- hundreds of codefiles with thousands of classes with hundreds of thousands of lines of code -- all into one, single line. Today's line comes from an application whose team Marcelo recently joined, and is the from the definition of the base class for all objects in their system ...


Make This Your Top Priority

by in Feature Articles on

A moment after Carl M's pager went off with its distinctive "a priority E1 trouble ticket has been opened" beep, he received a High Priority email notifying him that he was the new owner of the ticket. A moment after he started to read the email, his phone rang and his boss told him to drop everything and work on this issue: a client was on the verge of dropping their contract because no one from any department -- sales, customer service, engineering, and so on -- could resolve this problem to their satisfaction. The buck stopped at Carl and he had to figure out a way to satisfy one of their largest customers ...


Form Invalidation

by in Feature Articles on

With the advent of client-side scripting, the Web, and thirty-some years of interactive software, users have come to expect a fairly rich interface: if something is keyed-in wrong, it's expected that the system should tell them what they did wrong, where they did it, and how to fix it. At Donnie's company, every year of raised expectations brings another year of disappointments to the application users.

Following is the all-to-common message users receive if they entered too much text ... or didn't format a date properly ... or forgot to enter a field. Thankfully, they have a handy printed guide to help them find and troubleshoot what field they didn't enter correctly.


Journey to the Center of the Database

by in Feature Articles on

It'll be a long while before Donnie will forget about March 5th, 2004. Early that morning (during one of the ungodly hours), Donnie received his first off-hours support call. Naturally, one of the "mission critical" applications (more specifically, one that Donnie knew only by name) was completely broken and needed to be fixed right away. With the primary and secondary support guys unavailable, Donnie was on his own.

After waking up and reading the sparse documentation available, Donnie looked at the errors and noticed that most seemed to originate in the database. A bit more digging and Donnie found that the problem was at the apparent center of the database, the Date Table:


Pop-up Potpourri: June Bugs

by in Pop-up Potpourri on

For many more, check out the previous post from the series, Pop-up Potpourri: Mayday Edition


"Not so impressed" pretty much describes how Jeff Handley feels about Microsoft Office Picture Manager's compression algorithm ...


The Trouble with Blind Dates

by in Feature Articles on

Algirdas Kepezinskas was debugging some code at a client and came across the most treacherous date manipulation algorithms he's ever seen. I've removed the name of the function and will leave it as an exercise to the reader to try to figure out what this huge heap of arithmetic does ...