Ignoranceproofing

In Business, there are two types of people.

The first type is the kind of person who expects any individual who has a job to be able to do that job. This means that the individual needs to make the effort to understand each job function and why it is done. They also need to have a fundamental comprehension of the equipment they are involved with on a day to day basis.

The second type is the kind of person who expects the tools they use in their job to not allow them to make mistakes, so that even if they do not understand what they are doing, what they need to do is explained for them at every step and wrong choices are incapable of being made.

I’m the first type. And because of that, when I write programs, I write them so that everything that needs to be possible is available. Many people I write these programs for are the second type, and they want my program to analyse data (and read minds) and allow them on any given screen to only be able to do what they are required to do for their job.

For example, I have a screen that allows you to edit the status of a port and to edit the assignments of that port. I coded it completely open (you can edit either at any time) because our database and backend has been shown to have… quirks where data goes missing. The people I am writing it for want the screen to only allow you to set a port’s status to working if an assignment exists, and only to set it to available if no assignment exists. They also want adding or deleting an assignment disabled if the port is in a working status. So, if a bug happens that obliterates an assignment while leaving the port in a working status… my way, you add the assignment back. Their way… you have to set the port to available, then make the assignment, and then set the port back to working. And if for some reason you want to manually delete a port… my way, delete assignment, set port to available. Their way, set the port to available, delete assignment.

Now, the question is, do you see why my way is better?

This screen is not the entire application. And there are hundreds of people using the application. On another screen, there is an equipment assignment page that searches for and offers available ports for assignment. In both cases, they are making the port available for assignment when it is not ready to be (or is not going to be) available.

So, I do it their way… and the next complaint I get is that one person was working on the manual screen above and the port was assigned by the automatic screen after they made it available when it wasn’t really available. Now they want me to code in a delay, store a time stamp and only offer to automatic assignments ports that have been available for at least an hour… *sigh*

June Descends

I was doing really good there in May, posting nearly every day, and then June descended on me…

My younger brother got married on the 2nd, and the rehersal was on the 1st. On the 3rd, my wife and I went to look at some houses, one of which we really really like. On the 4th, we made our way to the last day of the Georgia Renaissance Festival and spent most of the day there. On the 5th, I was “on vacation” from my regular job doing work for my actual company (sounds confusing, and it is) and spent a bunch of the day talking to banks. On the 6th, having forgotten to pay rent I had to go get a money order to pay it, and worked yet again for my actual company, put a bid in on the house we like, and went to play trivia at the North River Tavern. On the 7th, I put in another day on the grind at the actual company and finally slowed down enough to watch a couple of movies with the wife (The Family Stone and Mr. Wonderful, it was her night to pick since I made her watch Shocker last time).

The rest of the week looks to continue to be crazy, and on top of all that, we are eagerly awaiting the results of our house bid which should come early next week. So forgive me should I continue to forget to post for a bit. I’ll get back on track soon enough.

On Earth As It Is In Hell

I picked up the new Hellboy book On Earth As It Is In Hell warily. I really enjoyed the last two by Christopher Golden and seeing a new author on the books, well, I wondered if they’d have a similar touch to the tale that I found so interesting in the previous books. My apprehension was unwarranted in the end as the book proved to be quite good. Excellent in fact. Brian Hodge did a great job putting you not only into Hellboy’s head, but the heads of all the members of the BPRD. In fact, this book reads more like it should be titled a Bureau for Paranormal Research and Defence book instead of a Hellboy novel.

The short version… Seraphim show up at the Vatican and try to burn a priest and the document he is studying. Turns out the document may or may not have been written by an elderly Jesus Christ, who survived the crucifixion and ended up in a place called Masada (real place, about which a number of odd stories surround). So the Vatican, or rather a small group of priests who want to protect the document and actually reveal it to the world, calls in the BPRD to protect the pages until they can figure out who wants them burned. Only, as usual, Hellboy and his team get in a bit deeper than intended, and don’t sit on the sidelines where the Vatican wants them to stay.

A good solid read, and kept me turning pages all the way through. Another book I highly recommend.

The Music of My Youth

Okay, so this is going in the Gaming category, but only because it didn’t really fit into Random Thoughts, and it does actually have something to do with games. I’m not normally one to post about crap I see on the internet, but this I just had to put up.

Nintendo Choir.

Its only not safe for work if your PC is loud, but even then most people under 40 should laugh when they hear this. Its a choir singing songs from popular Nintendo (and other) games… Mario, Zelda, Mortal Combat. And they do a pretty good job of it too…

Enjoy!

A Few Good Men

“You can’t handle the truth!”
-Col. Nathan R. Jessep, A Few Good Men

It’s sad, but it’s true… there are a great many people who simply can’t handle the truth. And I mean simple truth, not ‘being brutally honest’ (which is more often a disguise for being honest, brutally). I had the misfortune of having a coworker ask about her own performance… Okay, let me back up.

I’m working on a program. And as I finish parts of it, I turn it over for requirements testing. The people who are testing it are also the people who gave me the requirements. More often than not, when they test, they complain about things the program doesn’t do, all of which are things they didn’t tell me it needed to do. As a result, I’m constantly rewriting my programs to include things after the fact. We have marathon email back-and-forths where we argue over the value of certain items. Their most common defense of a stupid business practice is “We’ve always done it that way.” And my most common attack is “We are writing a new program, so let’s take this opportunity to change the way its done and make it better.” And its not like its an alien idea… these are things they think SHOULD change, but they want the new program to work exactly like the old program and THEN change it. More work for everyone.

Anyway… so it comes that we are on the phone, and after we solve the latest fire she asks me how she’s been doing on the requirements and testing. I ask if she really wants to know and she says, “I want the truth.” I give her the truth, as kindly as I can. I don’t accuse her of giving me bad requirements, I instead explain that when working on requiements it would work better if she worked with the existing system for a couple or three weeks and documented every task she performed and later reviewed that log for missed steps or details to avoid the situation we have where daily tasks weren’t in the requirements. I explain that her testing should be testing of the requirements as written and not of desired features, and that things not in the requirements are enhancements for the next version, and if its discovered that essential requirements were missed they shouldn’t be reported as bugs, but should be brought up as requirements revisions. I explain that her testing is testing of my programming of the requirements as written, and when we move to phase two of testing, the user testing, her users will point out the missing details and at that point new requirements or revisions will need to be made. And lastly I say, that all this is for her sanity and mine, because if she’s constantly checking for items that weren’t in the requirements, then she’s going to be very unhappy; while on my end, if I spend every day rewriting my work for items that I wasn’t told about instead of working on remaining items or other projects, I get very unhappy.

In my opinion, I laid things out very clearly and kindly. I never yelled or accused, I just simply pointed out issues with the process she was using and how everyone would be happier if she did things differently. Well… except the users, but they’ll never be happy until we invent the “Do My Job” button so they spend their days like George Jetson or Homer Simpson, pushing one button when its needed.

So later that day I got pulled aside by my boss and told that I should never yell at anyone about how they do their job because its not within my authority as a contract programmer. I tried to defend myself, but he didn’t want to hear it. He only wanted to hear that I would never do it again (despite not having done it in the first place).

That’s my story… people, especially at work, can’t handle the truth… Now I will present you with a bastardized quote of my own:

“Work like you only need money. Love like you’ll never be happy. Dance like everyone’s got score cards. Sing only when nobody’s listening. And lie like your job depends on it.”

I don’t really mean that… but seriously, when someone asks for the truth, try to be sure they really want to hear it. And never ask for the truth unless you can’t handle it. And by “handle” I don’t mean “make them pay for telling it to you”.

Collateral

Tom Cruise as the bad guy. That was the big selling point of this movie. And I think he did a very good job of it.

The story is that Jamie Foxx plays a cab driver who picks up a passenger who turns out to be a hired assassin who forces Jamie to drive him around town while he does his work. Tom plays the assassin, of course. The movie is very beatifully shot, and everyone does a good job playing their parts… but the story did drag a time or two, mostly drawn out by the cinematography.

In the end though, it was a decent movie. Worth the watching.

Paycheck

I had wanted to see Paycheck in the theater, but somehow I kept missing it. It showed up from Netflix this week, so I finally got to see it.

The basic plot is this.. Ben Affleck plays a guy who excels at reverse engineering. He gets paid alot of money to reverse engineer a product and then design a product that is similar but better. And when he’s done the job, he has his memory of the time erased so that there is no proof that the reverse engineering (or technology theft) has occurred. Normally these jobs are up to 2 months in length, during which time he’s usually secluded so the only memory he loses is the time working. However, he takes an eight figure job that is going to be three years in length.

After the three years is erased, Ben’s character is broke, arrested, and his personal items have been switched. He manages to escape and realizes that he switched his own personal items, and this envelope of 20 things is going to lead him to what happened during the last three years, and exactly why someone is trying to kill him.

I had heard alot of bad things about this movie.. but honestly, it was good. I had fun watching it, considering the plot twists they avoided the clear cliches and plot holes it could have brought up, and the fight and chase scenes were excellent. Oh, I forgot to mention, John Woo directed it.

I give it a hearty two thumbs up. Its not a movie that will save the world, but its not a waste of time either.

The Mysteries of Mathematics

Now, I know that not every person in the world is good with math. I am good friends with people who aren’t. However, it stands to reason, that if your job encompasses some level of mathematics, that at least with that aspect you would be fairly decent with.

Enter Client X.

Client X asked me to design a report for him. This report involved a bunch of totalling and summarizing that he is going to use to support sales. This man is also responsible for setting all the standards for sales, and the price breaks, markups, and discounts. In his job he does a lot of number crunching, and he’s held this job, and others like it, for twenty years.

On this report, he wanted to see not only the base price and company standard markup, but several levels of markups and discounts, so he could easily see profit margins and work with his customers to get them the best deal to secure business without hurting his own company. A 5% discount, and markups of 5%, 10%, 15%, and 20%. When I wrote this report, I used standard math principles: to get, for example, a 10% increase on a price you multiple the original amount by 1.10. This is a derived number, as follows:

X + (X * 10%)
10% is equal to 10/100 which reduces to 1/10 which is 0.10
X + (X * 0.10)
pull the X out
X * (1 + 0.10)
or
X * 1.10

This man argued with me, stating that multiplying by 1.10 was exactly the same as dividing by 0.90. He even tried to explain it with math… something like “dividing by the reciprocal is the same as multiplication”. Of course, 9/10 is not the reciprocal of 1/10, but that didn’t stop him. We went around and around until he finally brought in his boss who agreed that dividing by 0.90 was the same, and instructed me to use that method since it was their company standard. So I did.

A couple of weeks later, Client X calls to explain to me that my report is all wrong. “Our sales people are having to fudge the numbers to make them work,” he says. “The markups and discounts aren’t coming out right,” he continues. I wonder why that is? Client X now starts telling me my math must be wrong, he goes over how to do a 10% markup by dividing by 0.90, and I confirm that’s what the report is doing. “But then why are the numbers wrong?” he asks, puzzled. “Hmm, well, on your 10% numbers, are you off by about 1% or $1 every hundred?” “Yeah,” he says, “how did you know?”

How did I know?

100 * 1.10 = 110

100 / 0.90 = 111.111111111111…

I wonder…

Let me tell ya, there is just nothing sweeter than having someone force you to do something wrong only to be able to throw it in their faces later.

The Lord of the Rings

I went last night to see the final installment of the Lord of the Rings trilogy and…

This is, by far, the best trilogy of films ever made.  Ever.

The story is fantastic, the filming is beautiful, everything.  Its as close to perfection as a set of movies can be.  I doubt in my life I will ever see a set of films so good.

In a way, I am saddened.  When I was younger, I had dreams of creating films, and I still do.  I even dreamed of making films of this particular series of books.  And now that I have seen them, it saddens me to know that not only did I not make them, but that I know deep in my soul that I could never have done a job as good.

I will still dream of making films, but now I finally have both ends of the spectrum in mind… there are films that I know I could have done better, and now there are films that I know I’ll never surpass.

If you have not, go seem them.

And the world will be a better place…

Its 2003. A new year, and an excuse to start over.

Sure, new year’s resolutions are a cop out, and a person should be strong enough to change at any time… however, how many people truely are? In my experience, people are better at keeping a change that started with an excuse than from within. More people quit smoking because of their wife, husband, or kids than have quit just because they wanted to be healthier. Of course, in the end it only stays if they truely want it, but it has to start somewhere.

So what shall I resolve to do in the new year?

To work. And by this I mean my job and all the things related to it. There are some skills I need to pick up, and some tools I need to learn.

To work out. Cause if I don’t I’ll turn into a fat bastard. The butterball is already growing underneath my shirt. No more fattening up the turkey for dinner.

To read. I miss reading, even though lots of books aren’t worth it. I need to get back into reading the occasional book. I’ve got shelves of unread ones anyway.

To write. Here, and elsewhere. And not just silly drivel about my life, but creative things, wild things, that stuff that swirls around in my skull whether dreaming or awake needs to find its way to paper.

There’s more, but I’ll probably put those off until next year. Don’t want to overload my excuse.