December 2005


Today I checked out the new mall. It’s an out-of-the-way location, but it’s pretty cool. I suppose its construction will eventually spawn the regular horde of strip malls and fast-food shrines. The architecture is nice; the inside is all really edgy-modern. The overhang above the entranceway is tilted almost to the ground — looks like it could fall on you any second. It’s something you don’t really see everyday. Even the inside is nice. The fast food court looks like the inside of a Maggiano’s: booths with dimly lit lamps and random fauna.

I tried looking for jeans. Let me tell you, jeans look like crap right now. Every single store I went to had only ripped-up jeans. It’s like some weird viral marketing scheme. It’s funny because there are actually people who buy this stuff, and it’s even funnier to realize that all the jeans that you’re buying have the same rip in the same place. There’s an actual assembly line somewhere that goes to the effort of making jeans, and then rips them. The effort to gain any sort of “individuality” is completely shot when you’re standing there and you realize, “wow, all these jeans have an oil stain under the left pocket. Cool.” So I bought some khakis from AE and left. I’ll wait and see what the next fad is. Don’t know if that’s good or bad…

I would show you the one with oil stains, but you can see it for yourself at Aeropostale.

So our baggage is gone. It’s gone somewhere, and no one can find it. About $700 worth of my clothes and $10,000 worth of Saris and dresses that my mom had. Air India doesn’t believe our story. They think we just made up everything, for no reason.

Nothing can compare to the utter stupidity that was the past two days. In fact, I am completely surprised that a company can mentally and physically destroy their customers yet still stay in business. I’ll get to this issue later, but for now, here’s my story.

My cousin was getting married in December, so about five months ago, my mom bought two tickets to India for herself and I. Basically we’d be flying to JFK airport in NY through Delta, and flying directly to India from there via Air India (with a refueling stop at Heathrow). So two days ago we set out. Unfortunately, everything backfired when Delta cancelled our flight to NY at the last minute, a few minutes before its departure. From there it was a mad scramble to try and catch another flight to JFK. However, because the weather was bad, Delta wasn’t flying anyone to JFK. Our flight was initially scheduled to arrive in NY at 4pm, and the Air India flight was scheduled to take off at 6:55pm. So unfortunately it looked like we were going to miss our Air India flight.

We talked to Delta and asked them what the best options were. We found out through all this that the Air India flight was also delayed. However, my dad was looking on the internet and was seeing a TON of Air India flights popping up that were similar to ours (our flight number was 112, other flights started showing up as 1112, and another one as 11112). Our flight, 112, on the internet, showed that it was departing on time. Delta, however, called Air India and learned that it definitely was delayed until 10:10pm, and there were no flights with numbers 1112 or 11112. One lady at Delta put us on a flight to Laguardia that would arrive at 8pm and said that we could take a shuttle from Laguardia to JFK. She left for a little bit, and after we called Air India and received numerous conflicting pieces of information, figured that we couldn’t make the Air India flight if it took off at 10:10pm. So another Delta agent put us on a morning flight the next day to JFK and tried to call Air India to reserve us seats on the flight the next day.

Air India Logo

This is where Air India sucks. Air India hung up on Delta agents several times, and even told them once that the flight was delayed until midnight, and promptly hung up. Wrong information. When Delta tried to reserve seats for us, Air India said that economy class was full and that they would NOT give us seats in business class because we didn’t pay for them and it wasn’t their fault! Air India stated that they would put us on the waitlist and we can go to JFK the next day (yay) and see what happens.

So we decided to try our luck the next day. We went back down to baggage claim to collect our baggage for that night. Unfortunately, we ended up waiting in baggage claim for two hours. After trying to talk to some pretty rude Delta agents, we were able to get a hold of a friendly supervisor who found out that our baggage had been sent to Laguardia on that 8pm flight. Delta sends people’s baggage on flights even if they don’t get on the flight itself. That’s pretty smart.

So we went home, without any confirmation of our flight to India… and without our baggage. The next day we set out at 6am for our 7:45am flight. I was tired, pissed, and I needed clothes (that were resting happily in NY at that moment). We got to the airport, got on the 7:45am flight, and arrived at JFK at around 10am because of some delay. When we got there, we didn’t know wtf to do.. whether we should go to baggage claim and get our bags or go up to the ticket counter at Air India. The problem existed because we needed actual tickets to get past/to certain areas in the airport. So we grabbed a janitor and asked her what we should do. She almost finished answering our question when a Delta agent ran up, pushed her aside and yelled at her: “Don’t misguide them!”. Wow. The janitor got pissed off, cussed out the Delta agent, and walked off. So now the Delta agent started to “help” us, but only ended up yelling at us and being extremely rude. What is wrong with this picture? The janitor was nicer and friendlier than the Delta agent. We ultimately found our way to the baggage claim and a friendlier Delta agent there figured out that our bags had been sent automatically to Air India. Great. So now our bags had more confirmation for India than we did.

We went to Air India’s ticketing counter and found it to be closed. They only open at 2:30pm. So we grabbed something to eat downstairs and waited from 12pm to 2:30pm. Around 2:15, they started setting up the poles for the lines and the counters. At 2:30, we went up to wait at the counters so we could be the first people in line.

Air India is seriously the worst airlines. Delta is bad, but everyone, everyone at Air India is rude. They even lie to you from time to time or withhold information. While we were in line, an Air India representative ran up to us and yelled us, asking us “what we were doing in line”. We had been waiting for 7 hours for Air India to help us, and now they were telling us we couldn’t stand in line because no one was at the ticket counters. We didn’t even have a right to stand in line. Naturally, we ignored this. The guy came back and argued with us for a while, and finally he said that he would take us first if we just went back and sat down. So we did. At 3pm, after everything had been set up, the “kings and queens” of Air India arrived. Dressed in flashy saris and nice suits, the men and women at Air India enjoyed showing themselves off. They were the ticketing agents of Air India. They sat there for half an hour, talking and chattering with themselves, until finally they decided they were ready.

The ticketing counters opened and we were the first in line. We went up to the Air India ticketing agent and told him our entire problem. This man had a sly demeanor — he would respond without looking at us and occasionally he would say something as his eyes would wander around us. He seemed nice though. Unfortunately, he said that there was no way we could get a seat on the plane. Despite the fact that we had been waiting and our Delta flight the other day had been cancelled. He also said that we could be given our bags at any time, but we should wait until he figures out whether we would get on the flight. He put us on the waiting list and reassured us that we would eventually get on the plane.

Only problem was, the last flight back to Charlotte from JFK was at 5:45pm. And depending on whether or not we had our bags, we had to leave at 5:10pm from Air India’s counter or 4:30pm (to make it through security). We waited at Air India for another hour and a half until 4:45, when the Air India representative came back and told us that our 100% chance of getting on the plane had unfortunately dwindled to 1%. Oh well, he said. And then he walked away.

That was it. I told my mom that this was stupid, and we should just leave and go back to Charlotte before we miss the last flight. We went back to the man and asked him if we could get our bags and get the hell out of JFK, because Air India had failed us miserably. He said there was no way we could get our bags! WHAT?! He has purposefully LIED to us. What scum. So after yelling at him, he finally told his deputy — the man who had initially yelled at us to get out of line — to go downstairs with us and open the door to the India Air baggage room in the airport. So we ran downstairs at 5pm, 45 minutes before our Charlotte flight (we still had to go through security, mind you).

The door was locked. The guy had gone out for a coffee break. So people at Air India gleefully neglect their jobs. Customer service is awesome! We said screw it and ran out of Air India and toward Terminal 3, where our gate to Charlotte was. We were frustrated, tired, and upset that our trip to India had failed completely, thanks to Air India and Delta.

We ran through the airport, and arrived at Delta ticketing to grab our tickets. The agent ran us through security and eventually we made it to our gate. We finally got on the Delta plane back to charlotte and collected ourselves. Everything had ended in disaster, and our bags were still missing.

We learned on coming back home that the Air India flight we were supposed to take the night before had been delayed 24 hours! Passengers were sitting on the plane for a ridiculous amount of time, and the plane had been rerouted to Bombay instead of going directly to Delhi after the flight had taken off!

Also, what about those crazy flight numbers? Air India changes flight numbers depending on whether a plane is delayed or not. Wow. So since our plane, flight “112″ was delayed, on their website they added a flight “1112″ with the correct time, while leaving “112″ unchanged. Also, because there was an original flight, “1112″ that was heading back from India to JFK, they added another flight “11112″ to denote the flight that was delayed from India to JFK. That’s pretty sad.

In addition, I found this news story online about Air India delaying a flight for 45 hours from Los Angeles to Delhi. The pilots sucked so much that they couldn’t even land the plane correctly, so they blew a tire. The flight attendants had locked up the drinks so the passengers got angry. In addition, another Air India flight a week ago flew into Amritsar, and then left their passengers outside of the airport for 6 hours, because no one was inside to open the door. People eventually got sick and some threw up. Air India treats people like objects. They don’t even deserve to stay in business.

And that brings me back to an earlier question. Why are they still in business? The answer is because Air India provides the only direct flights to India from the US. One flight a day, and that’s all they provide. They enjoy this place in the industry, and happily abuse their customers without any concern. What Air India needs is a competitor — someone who can provide on-demand service to customers on normal flights and customers with special needs and priorities. That’ll teach them a lesson.

I was reading a story on Marketwatch and noticed out of the corner of my eye that the text was actually changing. On closer inspection, I realized that stock information next to company names was actually changing in realtime. Pretty nifty use of Ajax. You can also mouseover the company’s name to display a full stock chart and more links. The stock ticker is interesting though.. it sort of reminds me of Pushlets. I wonder how effective it is. Just thinking about the audience, I can imagine that someone who reads stories like this are casually interested in them — they’ve got the time and they’re just browsing. I highly doubt that a changing stock ticker will actually influence them to jump on a decision to buy shares of a mentioned stock at that moment. I think the mouseover graph is definitely useful though, as it helps a casual reader to see whether or not a company has been doing well over the past quarter.

Ajax is a technology that relies on fleeting events, and it’s ultimately important to decide whether or not to use it based on the environment — I think the realtime stock ticker is useful, but not within the context of news stories. I can see it as a personalizable widget that sits on the front page of Yahoo/Google or even on the ‘homepage’ of a mobile device, but definitely not a news story where the attention of the reader is somewhere else.

My new favorite site: www.netvibes.com
My top 4 Firefox extensions:
- Aardvark
- Web Developer
- User Agent Switcher
- Fasterfox

For a recent project at school, I implemented a real-time search using Ajax (Openrico) that communicates with a Struts frontend, and eventually an EJB backend, all on a Websphere App Server. You can see the effect here (viewable in only Firefox). In my implementation notes, I had a section regarding this:

———————

While the Realtime search is useful in helping a user find exactly what they need by trimming down the search results in real-time, it is also theoretically the worst example of Ajax. This is why we don’t see Google Suggest come out of beta. Here’s why. Realtime search is nice, but it is horribly unefficient. There are ways to get around this but as of right now, every time the user presses a letter, it performs a subsearch that hits the HTTP server, and hits the database.

If we had a regular search, the user would type in what they need and hit the “search� button, hitting the HTTP Server and database once. However, depending on how efficient the search is, the user could theoretically hit the back button and do another search, resulting in two HTTP requests (one for reloading the page, another for performing the search request) and another, possibly more hits to the database. This also degrades the user experience.

So the key is to figure out how to optimize the realtime search. There are a few options which were planned to be implemented but were neglected due to lack of time. One option is to only perform a search when javascript detects that the user has not typed in the searchbox for 0.5 seconds. This makes sure that we don’t perform a search every time the user presses a key (for example, they might mistype something, then hit the back button, and type the correct letter – this would result in 3 hits to the HTTP Server, as opposed to 1 hit if we do it the aforementioned way).

Another possibility is to cache xml strings on the client side. For example, suppose the user searches for “dan� and doesn’t find what they need, so they type “iel� to make “Daniel�. Then, they don’t find what they need, so they backspace three times to “dan� again. We shouldn’t have to hit the HTTP server again for “Dan�, since we performed this search already. We should store, in a hash, the xml response returned from “dan� in javascript, so that when we reference it again, we can check the hash in O(1) time whether the xml string exists, and if it does, we display that instead of making an Ajax request.

This way, we ultimately approach the efficiency of a regular search, and in some cases, even perform better than the regular search. Remember when we mentioned the regular search and supposed the user did not find what they were looking for? They hit the back button, and searched again, hitting the HTTP server two times. However, the same situation can exist with a realtime search, but the user would only hit the HTTP server one time. They would type “dan�, wouldn’t find what they were looking for, so they would backspace and retype a new request; after 0.5 seconds of no typing, it would search again, without reloading the page.

This kind of algorithmic analysis is essential in Web 2.0 applications to evaluate the necessity of ground-breaking features like Realtime search and what effect they would have on the user as well as the server.