Recent Articles

Mar 2010

The Key Lock Box

by in Bring Your Own Code on

Nearly two years ago, I set out on the quest for a new house. Well, not new by any stretch of the word "new", but more foreclosed and dilapidated. It was 2008 and the market was flooded with homes, especially those of the not quite livable variety. As I explored house after house after house, I became intimately familiar with a device known as a key lock box. Generally used by realtors, key lock boxes are a convenient, low-tech way to provide combination code access to a lock that would otherwise require a physical key for access.

This was actually the first time I had ever seen a key lock box. Essentially, they're small steel boxes that contain a key and are often affixed near a keyhole (eg., the door handle). Some feature a set of dials that must be aligned with the right code, while others (such as the one pictured) use a pushbutton system to enter the combination.


Crashing the Proxy

by in Feature Articles on

“HEY! YOU!” barked a frantic and unfamiliar fellow in a frumpled collared shirt who barged into Daniel’s cramped little office.

“Are you running...," he asked while consulting a clipboard, “Google Desktop??”


The Incrementing Bit Column

by in CodeSOD on

"I consider myself to be a fairly inquisitive guy," Aaron writes, "I tend to not just dive in and start changing code without understanding the system architecture and a general understanding of the business rules."

"At my most recent job, this quest for knowledge has proven to be just about futile. No one seems to know exactly what the application does, let alone how the system is designed. The schema of the databases all but impossible, and figuring out the logic used in the stored procedures is daunting. Still, when I came across the following bit of T-SQL code, I couldn't help myself..."


Sponsor Appreciation: Agreeable EULA, Laser Chase, & More

by in Feature Articles on

Please show your support for The Daily WTF by checking out the companies that have been kind enough to sponsor us. And, in doing so, I’m sure you’ll find some pretty cool products and services built by like-minded developers and IT professionals.

 

The Daily WTF Sponsors

UltraEdit   UltraEdit - The Daily WTF Exclusive: For a limited time, buy UltraEdit and get UltraCompare for FREE! Combine the world's best, #1 selling, most powerful, value priced text editor available with the award winning UltraCompare Professional and get the ideal text, HEX, HTML, PHP, Java, Perl, Javascript, and programmer's editor and the ability to compare files and folders, track changes, merge differences, and more!
Mindfusion   MindFusion - a great source for flow-charting and diagramming components for a variety of platforms including .NET, WPF, ActiveX and Swing
SoftLayer   SoftLayer - serious hosting provider with datacenters in three cities (Dallas, Seattle, DC) that has plans designed to scale from a single, dedicated server to your own virtual data center (complete with racks and all)
SlickEdit   SlickEdit - makers of that very-impressive code editor and some pretty neat Eclipse and VisualStudio.NET tools and add-ins, some of which (Gadgets) are free. Check out this short video highlighting just one of SlickEdit's Visual Studio integration features.
SPN_NAME   Notacon - the annual conference held in Cleveland, Ohio, that explores and showcases technologies, philosophy and creativity often overlooked at many "hacker cons". There are over 40 presentations which are a mix of hands-on workshops and lecture style presentations, contests such as "Anything but Ethernet", prize giveaways and a whole lot of who-knows-what. Anything can happen, and usually does.

All Over the Map, Odd Shaped Container, and The Ideal Pair Programmer

by in Tales from the Interview on

All Over the Map (from Peter Banner)
On paper, the candidate looked like a perfect fit. He had a very impressive résumé and seven years of experience in C#, C++, VB .NET, SQL, Oracle, and pretty much every other technology under the sun. Obviously, I had high expectations, as did my co-interviewer.

However, five minutes into the interview, I got the feeling that the candidate’s résumé was a just a bit padded. For instance, when I asked him why he enjoyed programming in C# more than VB .NET, he answered “I like those things… the… umm… you know!” and then proceeded to draw a couple curly braces in the air with his forefinger.


The Sorry Server

by in CodeSOD on

There are a lot of things that that you can tell about a codebase by looking only at its comments. Seeing things like “// ask Jim for details” imply overly-complex logic that no human (aside from Jim) could understand, while “increment the counter by 1” shows a certain degree of repetitiveness that probably means lots of copy/paste-style code reuse.

Fortunately for “certain” developers, comments are ignored by compilers and never quite make it past source control repositories. Of course with the Web – and its mix of server- and client-side interpreted languages – what’s intended as an internal comment often becomes plain text that is not rendered or seen by the end user. Well, unless they know where to look.


The Certified DBA

by in Feature Articles on

“I’m not questioning your expertise,” Paul cautiously said to the Certified DBA, “it’s just that I’m just not used to requests with… this level of detail.”

Paul should have done what he was asked, exactly how he was asked to do it. After all, he was not an expert but just a lowly systems administrator. Fortunately, the Certified DBA made sure to keep him in his place.


Password Perplexity

by in Error'd on

J Watson experienced password complexity at its finest.


Classic WTF: Meaninglessness

by in Feature Articles on

With the Webinar I'm doing this morning, I didn't have a chance to finish today's article. So instead, let's do a classic! Meaninglessness was originally published on April 19, 2007.


As you may or may not know, my day job is a Software Developer at Inedo, and I work on a pretty cool application called BuildMaster that helps software teams build, configure, and deploy their software applications. Years before, however, Inedo was a custom-software firm that was primarily focused on building all sorts of businessy software that does all sorts of businessy things for all sorts of businessy, erm, businesses. Bank stuff, manufacturing stuff, health care stuff, you name it. Most days, it was a challenging and satisfying job; I’d go home thinking, I accomplished something today. But every once in a while, I couldn’t help but wonder, why am I spending my life building cold, meaningless business applications?


Announcement: A Culture of Quitting, The Webinar

by in Feature Articles on

A few weeks ago, the fine folks at the IASA invited to speak at one of their webinars to discuss an article I wrote a little while back. It's a free webinar, and runs tomorrow (Thu, Mar 18, 2010) from 11:00 AM - 12:30 PM Eastern:

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.


A Better Date Diff

by in CodeSOD on

It’s a pretty common programming problem: given two dates, determine how many days are between them. Most programmers have the benefit of built-in library code, whether that’s DateTime in .NET, Calendar in Java, and so on. Some – MUMPS programmers, probably – have no choice but to parse and then re-implement the same “30 days hath September…” algorithm. And then of course there are the few who re-implement it anyway, perhaps because they figured that no one else in the history of computing had ever solved that unique problem.

But an even rarer breed are those that, like Paul’s predecessor, who to use built-in code… but from an entirely different platform. Take this method, found in production code, that inputs two dates and a TimeDifference to determine how far apart the dates are. An easy enough concept in C# that’s implemented with a trip to the database.


Scaling Project Mountain

by in Feature Articles on

from user'k_thomas' on FlickrWhen Hassan joined Meteor's IT department in 2006, he was pleasantly surprised to find everyone abuzz with excitement.

Months earlier, the previous CIO retired, and a new Head of IT had just been appointed, bringing with him the mandate that old Pentium III PCs that sat on each desk had to go. With 128MB, they struggled to keep up with Windows NT 4.0 and Office 97. He had persuaded the board to allocate millions to replace every workstation and server, and upgrade the infrastructure to match. The company would move on up to the heady delights of Windows XP SP2, Office 2007 and Exchange 2003.


Should Be Enough

by in CodeSOD on

“It seems every other week,” Samuel writes, “there’s a story about outsourcing gone bad. Maybe we’ve been lucky, but for the past decade or so, we simply couldn’t have survived without our friendly team of offsite developers.”

“You see, I work for a manufacturing company, and our main campus is located a good half-hour away from the outskirts of a suburb of a sparsely populated Midwestern city. Every business in town – from the dry cleaners to the restaurants – is owned or subsidized by the company. Just about every resident works, worked, or will work for the company. ”


Nobulation Fail

by in Error'd on

"Working in IT, I see lots of error messages," writes Eric, "this one, however, was unique. Apparently the computer didn't nobulate quite right..."


A More Permanent Join

by in Feature Articles on

"Half the world's IT people hate our company's guts," Aaron told the HR lady. "For once, can we hire someone from the other half?"

"The last round of consultants didn't hate us," she replied.


In A Rush, Properly Handled, and More

by in Coded Smorgasbord on

"This code was left by the Senior Software Consultant," Michael Wheeler writes, "I'm not sure if it's insurance against 'Return' not returning... or a comment that explained why the line of code was left in."

Public Shared Function GetItemFromValue(ByVal ddlControl As DropDownList) As Integer
    Dim i As Integer
    If ddlControl.Items.Count > 0 Then
        For i = 0 To ddlControl.Items.Count - 1
            If ddlControl.Items(i).Selected() Then
                Return i
                Exit For     'leaving this here cause we're in a rush
            End If
        Next
    End If
End Function

The Single Sign On

by in Feature Articles on

“It’s impossible,” Gerald said in a matter-of-fact tone, “simply impossible.”

“Now just so we’re clear,” Craig responded, “by ‘impossible’, you actually mean ‘a big pain in the ass’, but you’re a smart guy who can make it happen, right?” That drew a few chuckles from the handful of other coworkers who joined them in the conference room, but Gerald just sighed. “No, Craig, by impossible, I mean impossible. Not doable. Can’t be done. Im-poss-i-ble. Well I mean, unless you can somehow change the underlying structure of the way everyone communicates on the Internet.”


Unit Tested

by in CodeSOD on

“I was hired as a ‘best practices consultant’ to help bring a 300-developer company’s development practices into the 21st century,” wrote Ian, “and after six months, I had failed.”

“Our first objective was to introduce automated unit testing. They had all sorts of horribly interconnected code, and the tests would help reduce the fix-here/break-there problems. However, after many, many tutorial sessions with developers, and quite a few long meetings spent trying to convince them of the benefits, no tests emerged. The developers stubbornly held that testers should test code, not them.”


Verified By Fail

by in Error'd on

"I've heard about verified by Visa, but this is something new," writes Velmu.


More Best of the EmaiL

by in Feature Articles on

It's time once again for Share Your Bizarre Email day! mail in or post your favorite emails in the comments. Here's three to get started...


"My company takes safety very seriously," Adam wrote, "and here is a partially illustrative message. What's especially funny about it is that we receive examples and protips like this on a routine basis."


October Road

by in CodeSOD on

“Our codebase is a bit... backwards, to say the least,” writes Aaron Silver, “things that should go up don’t go up or down... instead, they’re painted orange .”

“The postProcessAddress address method is a good example of all of this.”


Patterns of Failure

by in Alex's Soapbox on

Not too long ago, I was at a client site, working to understand and improve their development process. From a birds-eye view, their development organization was a lot like many other Corporate IT set-ups: they had a sizable portfolio of proprietary applications that were built for and used by different business groups. Some of these applications were “mission critical” and had highly formalized promotion and deployment processes, while others were ancillary and were hardly ever used. <shameless_plug>This, along with the medley of technologies and platforms, was why they sought our help in managing and automating their development processes with BuildMaster.</shameless_plug>

But as I dug deeper, I noticed that a significant portion of their applications weren’t applications at all. They were – for lack of a better word – “modules” that glommed together to form an ÜberApplication. Completely unrelated business functions – paid time-off tracking and customer mailing list management – lived side-by-side, sharing authorization principals, navigation controls, and even a “business workflow engine.”


Injection Proof'd

by in CodeSOD on

“When a ‘customer’ of ours needs custom-developed software to suit their business requirements,” Kelly Adams writes, “they can either ‘buy’ the development services from the IT department, or go to an outside vendor. In the latter case, then we’re supposed to approve that the software meets corporate security guidelines.”

“Most of the time, our ‘approval’ is treated as a recommendation, and we end up having to install the application anyway. But recently, they actually listened to us and told the vendor to fix the ‘blatant SQL-injection vulnerabilities’ that we discovered. A few weeks later, when it came time for our second review, we noticed the following as their ‘fix’.”