Monday, December 3, 2012

me !== iPhone



Ok, here I am going to rant about Apple iPhone and iOS. I'll try to be logical, and I may not be correct at some places, feel free to consider it my ignorace to study, but then, I can excuse myself with, "what good is it if I've to study on how to do 'xyz' or hack things to get it done?"

Disclaimer: I know how to do each of these things in a Jailbroken iPhone, so please feel free to stop reading if you are going to support your statement with a wink. I've bought the phone with some hard earned money, and I am not looking to void my warranty for getting done with such basic things that I am going to write below.

Lets start with filesystem.
> Apple's iOS internal filesystem looks very similar to any Macintosh, with unix like architecture, because at the core its BSD derivative. But no application can access the filesystem outside its namespace.

That means, I cannot:
    - Connect my phone to office machine and simply copy and paste my (say legally downloaded/ripped mp3s).
    - To solve this problem, i somehow need to use a mass storage device (not iPhone itself, iPhone doesn't behave as mass storage), say pen drive, then, I need to take those MP3s to my home computer, put them into iTunes and then sync my phone. (how elegant is this!) I'll have my MP3s with me by the next day.. (plus, Apple thinks doing this stopped me from putting MP3s downloaded from songs.pk into the device, oh ya! happy DRM)
    - Lets say, this restriction is because of DRM, what about my PDFs, my Videos, my ZIP files?

Lets move ahead to Bluetooth.
> Apple does not support any bluetooth protocol other than A2DP.
That means, I cannot:
    - Copy some file from friends phone, I am talking about Image/self shot video (not his songs.pk mp3s) (happy DRM).
    - I cannot sycn my iPhone over bluetooth from my own PC (not the office one anyways).
But no one uses bluetooth right?

Lets talk about application access:
> Apple does not allow applications to access OS features.
That means, I cannot:
    - Make an application that can act as answering machine, when I am not with my phone.
    - I cannot make SMS SPAM filter application.
    - I cannot have call recorder things.
    - I cannot make an app that support filesystem browser/bluetooth OBEX support etc.
    - Infact, anything that Apple thinks is not good for a phone.

Format Support:
> Apple thinks that no other format in this world is better than H.26x video contained in an MP4 or MOV container.
That means, I cannot:
    - Play a Matroska Container file with, say, flash video, infact, any other video on this planet.
    - Infact, becuase Apple restricts hardware access too, you can't have an app other than inbuilt app.
    - If I want to play some real media file, I need to first get some mp4 encoder, change the format, add to iTunes, sync.
      (But that is easy, isn't it?)
    - iTunes won't do the encoding for you, if you don't have mp4/mov file, just go and sleep.

Flash:
> Apple prevents iOS to install flash.
That means:
    - Apple thinks Adobe sucks in making a stable application which crashes.
    - Infact, its apple who sucks in making a sandbox in which flash could run to prevent crashes from flash and for it, any other crash causing application.

Browser:
> Apple prevents iOS to have any browser that is not based on WebKit.
That means:
    - No firefox.
    - No opera (full).
    - Having that said, Apple also thinks that Opera mini is an exception to the rule and should be allowed, however it is not using WebKit, but its not impacting Safari's buisness. (And we use to say Microsoft enforces IE)
    - Did I mentioned, IE sounds better than Safari anyways?

Root Access:
> Apple prevents user's from root access (thats sane, but what about a normal user?)
That means:
    - I cannot SSH to my phone, to do any of the above (even with non-root user)

Access Point Configuration:
> Apple prevents user's from editing Access Point configuration.
That means:
    - Uless I am using Vodafone/Airtel/Idea (which I've tested to work), I cannot put (again what I've tested) Reliace/Aircel/maybe other SIM cards and get the auto detection work.
    - If you are not using either of the few providers who provide auto configuration, there is no way you can get Internet work on your phone.
    - Plus if you are using say, some plan with a differnet access point configuration (say vodafone live), you again can't.

Maps:
> Apple thinks that iOS 6 Maps are better than Google Maps.
That means:
    - You can't go back and install Google Maps once you upgraded to iOS 6. You won't find an app even on ITunes store.

Security:
> Apple does not believe in app level security.
That means:
    - If I want to have password on my Messages (only) I can't.
    - Plus since there is no direct/indirect OS access, you can't even have an app for that.


This is not the end of the list, just the beginning..
Therefore, I, in my full concious, hereby, solemeny declare that, this was my first and the last iPhone ever.

Now feel free to stay in the fan following crowd for Apple iPhone, treat it as status symbol or anything, I'ld prefer anything over iPhone now on.

Friday, April 6, 2012

A round of applause for irctc..

Well this comes from personal experience, and is for those who still think they should book from irctc...

I set up an alarm to wake up at 7:55 to get the tatkal booking done, at 8 I was almost ready with my laptop all geared up.
Till 8:30 I wasn't able to see even the login page, and when it opened up, it took 15 minutes till I signed in. (that was definitely faster than my expectations!)

Then I had a hard time to get the autocomplete fill in the 2 stations in another 5 minutes, I mean whats so hard about an autocomplete engine? Even a novice programmer can write an autocomplete engine that can horizontally scale and can respond in acceptable time.

Well then by the time I saw the list of trais, the clock was ticking 9. And the first bump came in when the train I was looking for (Taj Express) was left with only 4 seats! Were others really able to open up such site and book tickets? It immediately clicked that my net connection could be at fault at that point of time, a quick ping to a few servers, there was no packet loss at my end. Then how in this world 4 seats left? (I was supposed to be booking 7, meaning 2 transactions).

Quickly changed plan to another train, it had 17 left, clock was ticking and I was supposed to make 2 transactions. Filled in the form by 9:10, but wait! while I was filling the form, the lazy javascript from irctc removed last 2 passenger textboxes... (ting!) That means I can only book 4 tickets for tatkal at a time. (Although fair enough, because it would have taken 2 turns anyways)
Then checked in the payment mode (that was fast because I have by-hearted my card details), and viola! After about 2 minutes of processing of only god knows what, I got the tickets.

But wait, only 4 passengers are travelling by now..
So I repeated the process, and by 9:30 I again checked in the payment, but this time even after 3-4 minutes of processing of only god knows what, it failed to book the tickets. Account was debited for the transaction, and no tickets!

Thats fine, I'll get the refund in some 7 days or so (without interest anyways), so I retried, because half the passengers were travelling already, and rest of them has to!

So by next 10 minutes, I was again at payment gateway, this time it took 1 minute of processing of only god knows what, and it replied.. "I am done with my 2 transcations for the day for tatkal, and my tickets cannot be booked" (although the last transcation failed)

(And irctc is so kind that they debited the account first and then lately came to remember that "oh! this guy has done his transcations") (either valid or invalid transaction)

Thats sounds good, because now I cannot book tickets, my account was debited twice, half the passengers are travelling. And irctc doesn't know how to count a transaction!

Now what? Let me cancel the first ticket as well and the entire trip... Wait shit! You won't get a penny to cancel a tatkal ticket... (lol)

So now I was at a stage where, half the passengers are travelling, I was denied ticket because I have done a failed transcation, my account was debited twice without any ticket, and if I cancel a ticket I won't get a penny..

Then I thought, cancelling is better than trying one last time (I will get the refund most likely).. So I called up my friend, asked his irctc username and password, and re-tried the transaction (luck was with my side or not, but the tickets were still available in this train).

So there I was again at payment gateway page, and I used a secod card to do this transaction, and guess what, it took 2 minutes of processing of only god knows what and when it came back, it said "You have crossed your limit of 2 transactions"
What? irctc is doing its math on IP address! (I was smart enought to clear the cookies, but couldn't have changed static IP of mine)

That sounds even better, because now I cannot book tickets from this computer all together, my account was debited thrice without any ticket, half the passengers are travelling and irctc has applied all its engineering (whatever they know) on blocking IP addresses. (I mean people cound be on NAT, whats the point in blocking by IP address)

Finally, I called up another friend (Asheesh Varshneya), who booked the tickets from his computer, using a third card and I've got all the passengers travelling.

Now please, let all of us stand up in ovation for the engineering and design of irctc, I would like to give special thanks to the chief architect of irctc and would request a special round of applause.

(Btw did I mentioned, the return tickets for the same date were no more available by then) :) So here I am, bashing irctc and thinking how would I come back! And the final situation ends like:

I have tickets to go, with my account debited thrice for invalid transactions, but the seats are in different coaches all together.. And yes! I yet don't know how to come back, and if I cancel the trip, I won't get a penny back on the tickets!

Happy time irctc!