- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Sam? Jon? did they have three letter limit on employee name?
Admin
I'm more curious whether this happened in the Night's Watch.
Admin
Found an unknown invisible checkbox, so just use that? Sure, why not? Jon sounds like the kind of guy that would chew gum he found stuck to the underside of a bench in the park.
Admin
It's a good thing he didn't release code which randomly inserts and withdraws uranium rods in a nuclear reactor. You know, test sequence.
Admin
Actually, that's what happened at Chernobyl, but they keep telling the (slightly) less embarrassing story.
Really, Jon sounded like he knew what he was doing, until for this one bit which ruined it all. Just reuse a checkbox without checking (pun intended) what it was for? Didn't the checkbox have a name, something with "test" or "debug" in it that should have made him suspicious?
Admin
Been there, done that, whoops hole in the Ukraine
Admin
Jon was the one who created the checkbox in the first place, for another purpose (the monkey-with-keyboard UI testing). He then rendered the checkbox invisible, so this test mode couldn't kick in when the software was in production.
Later, he repurposed the checkbox - making it visible again, changing its name, and wiring it up to a new event handler. This would have worked fine if his IDE hadn't said "hi there! It looks like you're renaming a control..." and helpfully updated the old monkey-with-keyboard event handler to the new control name.
TL;DR: The IDE was haunted... by the ghost of Clippy.
Admin
Well, of course, the IDE modifying code behind the scenes (as in: you don't see what it's doing) is WFT-bait. You know nothing, Jon.
Admin
Never thought I'd have to defend an IDE, but what it does seems correct to me. The concept of object identity is important in software, and if Jon was a competent programmer, he should at least have considered the possibility the IDE works like that.
A name is justa label, and changing a name should not create a new object, just like renaming a file does not affect other references such as hard links (that even NTFS supports these days AFAICS).
Furthermore, making it invisible was a very weak protection against such a feature to begin with. In HTML it would be downright negligent since there are so many ways to "click" a hidden button, but even if it's not HTML, it's too close to dangerous.
Jon should count himself lucky that no million-dollar (I mean, billion-ruble) damage was done, and learn his lesson. Don't blame the messenger!
Admin
The traditional end to stories is that the submitter starts thinking about leaving the company. In this case it's the company who should be thinking about leaving the submitter.
Admin
Does Jon use source control? Did anyone review his changes? Surely if a click handler had gotten renamed, someone would have noticed during code review?
Ahahahaha who am I kidding, of course nobody reviewed his code.
Admin
It says in the article he was the only software person at the company.
Admin
This is why un-named items are trouble waiting to happen. First don't leave them around unless you need them. Second, don't consider them convenient things to re-use. Third, name them or use some other thing which will keep some clue about their function nearby.
And source-code control? If he used some sort of whizzy gooey editor that stored things in binary, good luck diffing it. That's why I make sure everything possible gets a plain-text representation if possible.
But yeah, of course there was no code review, who needs to when nobody else is working on the code! I like to use every check-in as a chance for a quickie code review. Sometimes I'll even make a copy, revert a change I don't want checked in yet, then bring back the newest version after the check-in. Even if you're the only one working on the code, the you of six months in the future won't remember what the fuck you were doing that day (like making a check box for the monkey-test code) if you don't make good check-in comments.
Admin
The software really subverted the users' expectations.
Admin
I'm the submitter (my name is not jon, and my company did not have a three letter name limit. :) ) I was the only dev, so no code review and at the time I'd heard of Git but my only experience with setting up/using source control was Subversion and it took over a week to get working (happened at another job) so I just used "store a backup of all your code every week or two" "source control". (I wish I'd known how easy it was to set up Git at the time, would have saved me a lot of headache.) This happened some years ago and I can't remember exactly how the bug got in the code - the explanation given is just as probably true as anything I can remember doing, and without a commit history I can't retrace what happened (plus I don't work there anymore).
Admin
I stopped using IDEs over a decade ago. For me, learning all the stuff this version of this tool does is a waste of neurons; you know a new one will be all the rage in 18 months. I've discovered I can use simpler tools and spend my efforts learning the task at hand instead of learning the latest greatest overly complicated toolset and be better off. Your own situation might be different, but I'm happier with just a plain old text editor, and more productive than many of my colleagues.
Admin
tl;dr: it was the Knight Capital/Power Peg problem. Let's go over this again: don't👏reuse👏flags.
Admin
I must remind you of the mac os 1 monkeylives flag. at $100.