Aug 1
Why my friends dont do business with ICICI
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 general | icon4 08 1st, 2007| icon33 Comments »

Many of my friends got ICICI accounts; mostly because it is the into which our monthly salary is credited. All of my friends then move their money into their respective primary accounts with other banks. One of them uses UTI, another uses SBI, while a third one uses HSBC. I always wondered why. I always kept my money in the same account cos I thought that its easier having centralized control over your money…..having a S/B account, a credit card account, and a demat account integrated….having access to your money from so many ATMs, 24 hour telephone access and so many branches.

When I studied elementary distributed systems, I read that it is not a good idea to have a single point of failure. Unfortunately for me, and also for ICICI, we both learned it the hard way. All this while, when I kept a large part of all my money with a single bank, I did not pay much attention to the theory I studied in college earlier.

Today I ordered for a Demand Draft from ICICI (over phone banking) which was for a pretty big amount. I need it urgently as my brother needs to pay his university fees tomorrow. I was told by the phone banking officer that the DD will be ready in 1 hour and that I may collect it from any branch I wish. I decide that I will pick it up from the Mulund (W) branch.

When I reach the branch, I am told that ICICI bank systems are down and that they cannot access any information and hence cannot process my DD. Apparently none of the people at ICICI’s operations and computer systems department knew anything about distributed systems and fault tolerance. They thought that having their back end servers at one location would be fine, and that their customers will be fine if a fire breaks out and if all their servers go down. The customer relationship officers at the bank are noncommittal: I wait for over two hours; but no avail. Oh and since even I have a single point of failure i.e. all my money in a single bank, I cannot withdraw money so that I could get the DD done from another bank.

But luckily for me, I dont claim to have thousands of satisfied customers, and that I can correct my situation of a single point of failure by moving bulk of my transactions to other banks. The service and policies of ICICI also motivate me to do that. A bank loses its credibility the moment it does not allow its customers to access their own money. That happened today. It was certainly because of a technical problem, but they should have done their homework better. It is going to cost them a lot more, maybe even a few customers like me.

My travails dont end here. I finally am able to withdraw the maximum amount of money allowed by their ATMs (some of them are working incidentally), but this amount is far lesser than the total amount of the DD. I still need to withdraw the rest of the money tomorrow. All this in the hope that I can give the money to my brother and that he can get the DD done from some other bank tomorrow. I was told at the bank that I will be able to cancel the DD using phone banking as that is the medium I used to place the order. Wonder of wonders…..when I call up, the phone banking officer tells me that the transaction is now in the scope of the branch now, and that I cannot cancel over telephone. I will actually have to walk into the same branch again and beg them to cancel the DD now as it is of no use to me any more, and plead with them to not charge me any cancellation fee. Sometimes just getting a particular service is not everything; it is important that you get it on time.

Well, all this made me recall my the fault tolerance chapter from distributed systems. I am certainly going to apply it in real life by moving my transactions to some other banks that really work when you need them to.

May 14
ब्लोगगींग इन hindi
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 general | icon4 05 14th, 2007| icon3No Comments »

I just discovered this feature in blogger where you could post in Hindi. The good thing is that it works on phoenetics, which makes it easier to transliterate words into Hindi from English. Just type words like they would sound in hindi, and the software attempts to convert it into the hindi word. Its not perfect yet, but a pretty good attempt I would say. And whats more? It remembers the corrections you make; so you dont need to do them again and again.

अब सोचने कि बात यह है के कितने लोग हिंदी में पोस्ट करना पसंद करते हैं

Yup, I see the spelling mistake above. Shows that its not perfect yet. Still some kinks to iron out, but it feels good to be able to post in my national language.

Jan 14
God is a computer engineer
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 general | icon4 01 14th, 2007| icon31 Comment »

“God is a computer engineer”. I have had this phrase as my yahoo status message for a very long time now. Its a funny thought, but somehow, it made some sense to me.

One of the greatest things that we computer engineers have been trying to achieve in all our hardware and software systems is intelligence. Defined formally, it is the ability of a system to act rationally: doing the “right thing”, given what it knows. The Turing test, proposed by Alan Turing, was designed to provide a satisfactory operational definition of intelligence. The system proposed by Turing, needed to possess the following capabilities to be termed as truly intelligent:

  • Natural Language Processing: to enable it to communicate successfully
  • Knowledge Representation: to store what it knows
  • Reasoning: to use the stored information to draw conclusions
  • Machine learning: to adapt to new circumstances, and learn new patterns

Only once we think about these disciplines from the perspective of AI, do we truly understand how difficult it is to achieve them in one of our computer systems. AI has been inspired by the way humans act and behave. The Turing test was designed to simulate a system which was largely human-like. This is hardly surprising, as humans have been the paragons when it comes to AI.

We humans dont think that these functionalities listed above are much of a big deal, because we are so used to them, because of the fact that these properties have been embedded in humans with such an amazing degree of perfection, that it seems completely natural. Only once you think from the perspective of a computer engineer trying to implement intelligence in a system, would you truly understand the complexity involved.

I cannot help but feel amazed at the complex systems that are humans. And I find it meaningful to think that it is not a mere co-incidence that humans are intelligent creatures. This is where my thought comes in where I say that “God is a computer engineer”.

I am not trying to propagate the “theory of intelligent design”. Neither am I trying to argue with atheists. It was just a thought that came to me once, that human beings are probably the perfect example of what we want to achieve with AI one day. After studying a little bit about intelligent systems, I realise how difficult it is to create even moderately intelligent systems; and whatever little success we have had, none of that was by mere co-incidence. None of these systms just sprang up magically out of the air. These systems were the result of years of study, experiment, trial and error, sweat, tears and blood.

Having said that, its a little funny to believe that we, the perfectly intelligent human beings turned out to be intelligent by co-incidence.

I believed that human beings are the result of a similar effort, being created out of primitive creatures, eventually evolving into the current state of intelligence. Today human beings are intelligent enough, not only to exhibit features such as natural language processing, logical reasoning and decision making, learning, and much more; but also make intelligent systems of their own.

I believed that God created man (yes, I can hear the Darwinists scream, but again I say, I am not trying to propagate or debunk a theory here). Like a pioneering computer engineer, God created such intelligent creatures (read humans) that are able to create intelligent creatures of their own.

Sep 28
Web Applications and AJAX
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 general | icon4 09 28th, 2005| icon31 Comment »

All these days I have been listening about AJAX. I knew that it had to do something with web based user interfaces. I also knew that it stood for “Asynchronous JavaScript and XML”, and…..well, that is pretty much it. I knew that I have to get my hands wet and try this new thing out. But I have to wait for my 8th semester exams to get over before I can actually do that.

So I thought let me find out a little about it.

Before I can actually talk about AJAX, I will have to digress and give an overview of web based user interfaces, becase they are what I think AJAX is really about.

Web Based User Interface

Soon after I worked on my BE project “Network Management Tool”, I totally fell in love with web based interfaces. The ubiquity of the common web browser, and the ability to update and maintain web applications without distributing and installing software on potentially thousands of client computers have really made web applications and web based UI’s popular.

Add to that, the fact that arguably the best company in the computing business is showing a very keen interest in this, everybody is going ga-ga over web based UI’s. And there are pretty good reasons for moving software on to the server and provide a neat user interface using your favourite web browser (apart from the reason I mentioned). It is not just about being able to access your application from any operating system or platform, it is about doing away with things like installing software on your machine to be able to use it. All the dirty stuff is left behind at the server, while the user need only think about the application.

Let me give you an example. Launch your favourite web browser, type www.gmail.com . Enter username password and login. Congratulations, you just installed google’s email client on your machine. You see what just happened? This seemingly trivial thing lets us check our email from any machine on the planet that is connected to the Internet.

Web mail seems to be such a trivial thing to us today that we dont normally think about the real genius of an idea behind the whole application: perfect portability. Move around anywhere, use any computer, any operating system, and you can still use the web application. You dont even need to be using your PC for that matter. Anything that can access the web using an XHTML compatible browser is good enough.

Extend the concept a bit, and you got things like Google Calendar and Microsoft’s Hotmail Live where you can manage your entire schedules online. The possibilities are limited by our own imagination.

Okay, at this point I can digress and talk about how this seems to be a threat to rich text clients and why Microsoft is not happy about that, because it threatens Microsoft’s core strength: The Rich Client.

Let me do that some other time where we can talk about the business use and the market aspects of this application design paradigm.

Anyway, this does not signal the end of the rich client so soon. Desktop applications have a richness and responsiveness that web based applications have not been able to deliver. Web based applications are simply not fast enough.


Reason? In the classic web application model, the user enters some data. After performing error checks, that data is sent to the web server in an HTTP request. After the server performs the back end processing, like running some algorithms , fetching data from a database, generating outputs, the results are sent back to the client in an HTML page.

Quick question : while the server does all this, what does the client do? Yes, you got it right: the client waits. From what we have read in Roger Pressman’s book on software engineering, this isnt quite the best way of developing a user interface. Something needs to be done about the delay, so that the user doesnt have to wait everytime the client needs to fetch something from the server.

Enter AJAX

So what does AJAX do to help the situation for our web based interfaces?

TO BE CONTINUED…..

Next Entries »