Friday, April 5, 2013

Q is for Quality Assurance


We all make mistakes, right? I don't just write fiction. I write computer code, where many mistakes can and will occur. These are 5 things I've done in my programming career, none of which I'm proud or ashamed. However, they will remain memorable until the day I rest in peace. I will not do these again and you shouldn't either.


1. I will never leave debug messages in my programs.

When I was in college, I'd left a debug message for myself in the code, completely forgetting it was there. I turned in my project without commenting it out. The reason I'd forgotten about it was because the condition for which I'd created the message never occurred during testing, and therefore, it never popped up to remind me of its existence.

The error message was:




Apparently, my instructor met the condition for which I'd intended to test. He docked me a letter grade.


2. I'll never try to implement bright ideas into my code when I'm drinking and have a deadline the next morning.



Yes, I did this, without a backup copy of my source. For some reason, when you've been drinking, you think you're smarter than you really are. So the next time all these ideas that you come up with for extra credit start poking you in the brain...STOP. Don't do it. The program meets specifications and it's due in the morning. Just let it be.

I couldn't do that though. The narcissist in me drowned out my inner critic, "Come on! You know it would be cool,” she said. “Ten lines of code...tops."

In the morning, I didn't remember what I was thinking or what I’d changed. My program wouldn't run, and I had 30 minutes to get to class.


3. I will never again breach security in order to play an online, text based role-playing game.

I got busted for playing +Threshold RPG, an online text based role-playing game while at work. I had connected to the AS400 firewall with the knowledge that it came pre-packaged (circa 1999) with a user profile: anonymous, and a default password: anonymous. The system administrator of the AS400 never changed this default.

But, Diane, how did you know that? 













I didn't. I just tried and it worked! After I logged into the firewall, I was able to telnet to the game server and play. Little did I know that port 23 access, along with my IP address, were being logged and because of the constant back and forth from the game server, the firewall log would fill up and crash several times during the day, alerting the system administrator, who remained puzzled for about two weeks.


4. I will not hard code place holders.

I have a bad habit of leaving in hard coded place holders like my own name and address so that I can see the format that a user would see. After testing and before implementation, I would write code to retrieve the web user's name and address for display instead of my information.

Once implemented, I was called back into the office, after hours, to fix a problem. Everyone logging in to see their information received a message of "Welcome, Diane Carlisle!" Yep, I'd forgotten to remove my hard coded personal information.

5. I will not create programs which change security settings on any system.


I created a CL program to include changing the job user's profile to have all object authority in order to perform a task. After the task was performed, the program would do a cleanup routine and put the user profile authority back to its original setting.

A week later when reviewing the dump queue (where error reports go when a program crashes), I realized that my program had error-ed out after the all object authority was granted to the user, thereby never completing the cleanup routine. When I checked the profile of said user, sure enough, they had all object authority. I had to contact the administrator, profusely apologize,  and request he fix the user's profile before they accidentally delete all objects on the system.

I hope you've enjoyed the letter Q. If you did, hop over to my other A-Z entries.


Visit my Alphabet Links:
A - B - C - D - E - F - G - H - I - J - K - L - M - N - P - Q - R - S - T - U - V - W - X - Y - Z