Shooting Your Foot through the Windows

When I was studying programming, some million years ago, I encountered a nice explanation about the difference between programming languages. It used a simply uniform “challenge” for each language: “How would you shoot yourself in the foot?” The different implementations were used to explain the special characteristics of each shooting your leglanguage. It stated with “C” where you simply point your gun at your foot and shoot (and nobody will understand what you did). In some more structured languages you will need to construct much more complicated structures to accomplish (or fail to accomplish) the same daily programming task… for good or bad.

Writing software (SW) is sometimes a boring routine work, but new bugs come in all shapes and colors and they always succeed to thrill and astonish me. And the real joy is when you find at last that it was not your bug after all. So here is a nice story from my work.

I had to analyze data from some experiments. To save the results in an orderly way, my SW builds a special directory for each experiment, using the experiment’s ID as part of the directory’s name.

When I first came to install the SW on a customer’s computer, it looked as if everything was running just fine. But when we tried to look at the results there were not one but two directories with the same name and both seemed to be empty. We tried to delete the directories. One was easily deleted but Windows Explorer failed to delete the other. Now I tried to look at the contents of the undeletable directory, but couldn’t view its content (even though initially it seemed to be empty).

I wanted to repeat the experiment, so I tried to rename the undeleted directory and failed. I tried to rename its father directory and Window Explorer refused to do this either. Finally I succeeded to rename the grandfather directory. I repeated the experiment and had another pair of same-name apparently empty directories, one deletable and one stubbornly persistent.

I went back to my development station to scratch my head. I googled “two directories with the same name in Windows”. There were more dummies like me asking “how come I have two directories with the same name” and the only answer I’ve seen there was “no, you don’t”.

I investigated it farther, adding prints at my directory-creating function, and found the answer. The experiment’s data contained the ID string with a blank as the last character. Somehow my SW created two directories, one with the blank on the end of the name and one without it. My customer and I, looking at the two directories’ names, were right to judge that we see exactly the same name.

But apparently it was Windows Explorer that was shooting itself (and me) in the foot most effectively. The data was actually (and correctly) saved in the directory with the blank in its name, but when I selected this directory for display in the Explorer it showed the content of the other empty directory. When the empty directory was removed the blanky directory refused to show its contents, or to be deleted or renamed.

To be fair and technically helpful, it was an old Windows Vista operation system on the customer’s computer. If you succeed to repeat such a bug on any other system please let me know.

* * *

Feedback about UNIX

I have a good friend from the UNIX world. He would regularly reproach me for sticking with MS Windows…

But when he called today he said the problem of file names that end with blanks is well known in UNIX. It is common practice to create files by scripts, so there are more opportunities to add blanks to names by mistake. And, there also, common graphical file-handling tools fail to handle these files. He even mentioned that intentionally creating such files is a known “practical joke” in the community.


Connecting the Chicken and the Egg

How Low Can High-Tech Go?

They forced me to move again, as they always do. They just told me to take my computer and connect it in some corner in another room. I did just that.

But then the connection to the net in my new office was not working. Without the internal factory net and without internet I have no email, no access to my files, nothing productive to do at work.

It looks like a very simple problem that shouldn’t take more than five minutes for our IT service to solve.

I went down the stairs to the IT service room.

I told them that I was transferred to a new office and that I can’t connect to the net.

No problem, they said. Just file a request in our service site.

How can I enter the service site if I have no connection to the net?

Ask some friends to do that for you.

I have no friends… Can’t you open a service call for me?

At last they gave me a telephone number in Malaysia for the company’s central IT service. They promised me that these people in Malaysia can open a service call for me.

* * *

I climbed the stairs back to my new office and called IT in Malaysia.

There was a recorded message, saying that there is a new number for the international IT service, valid from August 1. It was August 1. The new number can be found on the international service site. Great news for me.

* * *

Waiting more on the line to Malaysia, there were some more options and finally I succeeded to talk with a person.

I told him I have no connection to the net.

Yes, he told me, just file a service request.

Can’t you file a service request for me?

I can, he said, but you need a local service…

* * *

Finally I robbed some other guy (who was not there) from his net connection.breaking the computer

I noticed that Malaysia opened a service request for me – and closed it, saying that the customer was convinced to open another request.

I pressed the “boo” button to open the request again.

I also opened a local service request. I promptly received an email with a link to my request on the service site. It very seriously promised to complete the logging of my request within 8 days, until August 9, 11:23 am. The handling of the request will be quickly handled until August 20, 11:23.

Having concrete commitment from IT, with such sharp timing, was reassuring. But the delicate timing made me also feel some uncertainty. What if my IT expert will have an urgent call exactly at August 20, 11:22? Wouldn’t it be smarter to leave some operational margins, making it 11:25, or even 11:30?

The next day someone from IT came in and connected my computer. It didn’t take more than five minutes.

* * *

When our artificial intelligence will start reengineering the system and come to the conclusion that the bug in the system is the human brain don’t pretend that you were subject to injustice.


Man vs. Machine – matchup in 4 rounds

With all my feminist pretensions, in some aspects I’m still that old-fashioned “Man”. One of these aspects is my deep relations with the car. Controlling the car is one way to prove your manhood.

When we went to visit our son in North Carolina last autumn, I ordered a rented car to pick up at the airport. I asked for a cheap car, only to have 4 wheels and a motor. Apparently there were not really cheap cars to offer, so I order the cheapest available.

When we arrived at the agency to take the car, the model that we ordered was not available, as the yard was full of luxury cars and jeeps. The agent went to the neighbors to borrow something that will not be too much above what we were paying for. Still it was an automatic car more modern than anything I’ve seen before.

“You can go; it is all yours!”car_tamer

But I didn’t find the ignition to put the keys in and rotate. I was looking around, confused, and had to leave the car where it was, blocking the lane, and went to call him back from the office to the cold night.

“How do I start it?”

Well, there was a simple “Power On” button just in front of me, as if the car was a damned dumb toy.

I drove out and started to get used to the automatic gear that lets lazy drivers just press the gas pedal…

* * *

The real challenge came as we were driving in a narrow park road in the Appalachian Mountains. We took a wrong lane and wanted to make a U-turn. I entered in reverse an even narrower road that joined the park road. It was steeper than what I imagined. I stopped the car with its tail down and prepared for the driver’s ultimate test of leaping up a steep slope.

But where are my hand brake and my clutch pedal that I should release gradually and carefully? All I had is this lousy automatic gear and one gas pedal. I didn’t believe we will make it and had a strong feeling the car is going to roll down back into the valley.

As I pressed the gas pedal, the car moved quietly up the steep lane and into the park road. It didn’t show any tendency to roll back, not even by one inch. (Yes, it was an American car – so it was thinking in inches, not centimeters).

I was shocked. The car simply knew that while it is on “drive” and not “reverse”, it shouldn’t go back. It didn’t need any of my manly superior capabilities to tell her how to do the right thing.

* * *

As I started to doubt the future of mankind and ask existential questions, I didn’t notice that something went wrong with the car. I tried to speed up but it hardly responded – or rather responded by loud vocal roar of the motor but little motion.

I tried to slow down and accelerate again, but it was still the same thunder without lighting.

Finally I understood.

While taking the leap up on the steep slope, the car entered the power gear mode.

I had to stop and power off the motor in order to get it back to normal driving mode.

I was reassured of my manly superiority over the foolish car.

* * *

As we drove to the airport and turned the car back to the agency, they asked me whether it was all OK.

Well, pretty much so. I said. There’s only one problem. When I lock the car with the remote control, sometimes it locks, sometimes it doesn’t.

The man laughed at my provincial ignorance and showed me the trick.

If you lock the car but stretch your hand back to the door with the keys in your hand, the door senses the proximity of the keys and unlocks…

Well, maybe I’m still smarter than the automatic gear, but I’m surely no match to this damned thought-reading creepy door.