2009-04-03

Software development is not for humans

It's fucking 21st century, and I am amazed every time how bad we are at this stuff. Another day, and another encounter with an online service from hell.

It started with a water bill.

(Well, yes, we are in Israel, which was supposed to be a desert - so that much is okay).

The postal paper bill would never write a tinyurl to the form. Instead, "pay fast and easy - at ramat-gan.muni.il". This is obviously not a pay form. It is a homepage of my lovely city full of flash animation, and after a couple of Control+F searches in it, I finally got redirected to citypay thru 4 more pages of ads. So far is okay, I am doing the same procedure every month. It is supposed to take an hour anyway, even though I am a fast typer.

Citypay.co.il. After a minute of loading - nicely colored labels to guide you where exactly to grab each and every of the 41 digits you need to copy from the paper bill. 41 digits!! If you do the math, 41 digits are more than enough to identify a single H2O molecule in the Mediterranean (I just did the math). One of the 9-digit numbers I had to type twice.

Now comes the credit card number. No smartass, you cannot cut-and-paste into the form. You are not supposed to store your billing info on your computer. What did you think you are doing. OKay. Just twenty more digits - but the punishment was far from over.

An invalid character in my street number. Oh really?! I live on Jabotinsky street. A lesson in Hebrew grammar: you need an apostrophe to write the guy's polish surname. No, not that evil apostrophe from SQL injection horrors, advertised by the completely wrong XKCD comix about Bobby Tables. It's the friendly and toothless apostrophe, Unicode codepoint 05F3.

Oh, I remember that lecture by Nimrod Luria at TASE. He scared people with an SQL injection and then started mumbling around that apostrophe is not the only apostrophe, and that "%27" must also be sanitized (no, it's a URL escape codes, you idiot. No chance to harm an SQL query with that one!). Furthermore, he advocated white-lists instead of black-lists to sanitize properly (People, support the characters, instead of banning them, please. It's not that hard). One good thing they learned was not writing any more code without my review.

Miraculously, since that lecture half of the online services ceased to accept my email address which usually has a plus sign in it. Okay, a spelling mistake in the street name convinced the page validator. But then goes Part B.

Remember all these online shops that crash right when you press the final "Confirm Purchase" button, so you don't know if you have purchased or not? Of course, they do so as they try to access the next layer of the application. If you are lucky, a refresh will make you pay twice (though on the other hand, you also get two teddy bears). Now, the dreaded white screen. Refresh. Nothing. Okay. Plan B. Oh, I can create an account @citypay! Maybe they will store my info once and for all...

Now, we have this "continue" button which is impossible to find, which is right in front of the screen, but no pixel of its beautiful image or the mouse cursor above it (WC_ARROW) would suggest it is something clickable. Clicking gets us to "Failed to Connect" in Firefox. Thank you very much. Plan C.

The "recorded aunts service" phone for the simple folk - here goes. After getting all the sixty one digits through the very slow blah blah, we have a message in a cute Hebrew voice "this bill is too recent for our database. Please try again in a few days..."

The bill goes right into my paper recycle bin (I wouldn't let morons kill any trees). That's enough fighting for one month. Luckily, the fine rates are cheaper than my time. Maybe, just maybe, humans will learn how to make software by then.