Tuesday, August 31, 2004

No need to carry your driving license.

Today evening, as we were going towards the car parking area of college, my friend Saurabh snapped - “Oh shit! I forgot my license.”, “It’s OK. Nobody is gonna stop you midway and check your license” - I replied. But that was no reason to stop worrying as driving without license can be real dangerous (atleast in India). This little incident started a discussion between me and Saurabh which led us to a possible solution to this problem.

The sole purpose of carrying a driving license is that it’s the proof that you have passed your driving tests and obviously it’s not logical to carry your pass certificate everywhere you go. But if you do not carry the license how will the policeman know that you have passed the exam. Wait a moment. Why not let the policeman carry all our exam results? You think it’s funny! No it’s not. It’s Computer Science.

The first thing we do is create a centralized database of all the driving test results. The database is updated every time a person passes the exam or gets his/her license cancelled. This database consists of all the information on a normal driving license including a primary key. A primary key is a group of information about a person that establishes his uniqueness. For e.g. complete Name and Address, Telephone no. or even an Email Id. The primary key for different States/Countries must be chosen separately to suit their specific needs. Now all one needs is to remember his/her primary key and produce it whenever required (if someone can’t even remember his primary key, he better not drive).

Secondly we need to equip policeman with computers (it’s better to have specifically designed machine) with access to the database. The policeman inputs the primary key into the machine which searches the database for the key. The result contains all the stored information we talked about if the person identified with the primary key has passed his driving test. If the search fails I recommend the culprit to start praying :-).

What if someone tries to forge a primary key? Remember, the policeman also gets the photograph in the result which he can verify. I seriously doubt the existence of a perfect face recognition program in near future so it’s better to have the great human eyes do the job. The verification will be easier and better if users update their photograph in the database on a regular basis using some simple Web Service. This won’t be troublesome for users because I believe everyone will own handy digital cameras in years to come.

I really don’t see any reason why this solution to oops-i-forgot-my-license woes is not feasible. Probably, someone has thought of a similar scheme beforehand. Anyways, I’ll be really glad if I don’t have to keep my driving license with me all the time round.

Sunday, August 22, 2004

The future is distributed.

Why did I get interested?
Last week while I was sitting in the college library reading a Linux magazine, I saw an article on Distributed Computing. Now this semester there was a course on Distributed Computing being offered at college and we were thinking whether we should take up that course or not. So the article was sure to be useful. Before this I had only one view of Distributed Computing and that was a network based system where you could share. Share hard drives, share memory or share processes and threads between CPUs. The best example is a distributed OS or a LAN game like Quake or UT. But after reading the article I came to know about a different side of Distributed Computing – Grid Computing.

Grid Computing is basically an extension of the thin-client system concept. All the processing power and storage is kept at one place and individuals have thin-clients (only basic I/O devices) to access the computing power. Every individual has to login to the mainframe to access any data or application. All the applications are executed on the mainframe and results are displayed onto the individual’s display.

What is the future?
After reading the article, listening to my friend sitting alongside and reading a few articles on the internet I have started to believe that this might well be the future of computing. I believe that in future (don’t ask me how many years from now, because nobody knows) the concept of computing will be somewhat similar to the concept of electricity. The world will be divided into computing blocks of the size of small towns. Each town will have a Computing Distribution Grid and a Data Distribution Grid (something like power distribution grid) which will distribute computing. The core of this system will be a huge cluster of supercomputers which will generate CPU cycles in ExaFlops (1018) and have ExaExa Bytes of storage. There will be a huge and lightening fast network (most probably wireless) that’ll connect this computing powerhouse to home/office computers and other intelligent electronic devices (I say intelligent devices because I believe in near future almost all the electronic devices will become networked and intelligent. So computing will be more than the computer itself.). Big organizations might have their own grids powering all intelligent devices. All data will be stored on the Data Grid (obviously encrypted) and all applications will run on the Grid. A user will only have to buy I/O devices and some form of personal storage like CD/DVDs and connect his/her client to the Grid.

Why the future is better?
The Grid Computing model will be, in many ways, better than the current generation of computers.

  • First and foremost, you’ll pay only for what you use. In the present computing model most of the users end up wasting a lot of money on computing resources. I believe there are a very few people in this world who use there computers to full capability. A normal user generally buys a monster machine for the sole purpose of surfing the web or some word processing. Even ardent gamers waste lots of computing resources because they don’t play games 24 hrs daily. In the Grid Computing model all users will be billed according to storage and CPU clock cycles. Storage will be billed in data-time units for i.e. you’ll pay $ N for using X GB space in a month. X can either be the mean usage, the maximum usage or the median usage. The billing system is easier for CPU/GPU cycles as you’ll be charged $ N for each CPU clock cycle you have used. We might also see a Prepaid model of billing which will allow users a fixed storage space a fixed clock cycles! Either prepaid or postpaid I am sure this will be way cheaper than the current model.
  • Secondly, you’ll no longer need to worry about hardware upgrades. At present, every time there is a new game in the market you have to think about upgrades. The least frequently upgraded parts of a normal setup are I/O devices which will be the only parts required to upgrade in the Grid Computing model. All the CPU and storage upgrades will be done at the Grid itself.
  • Finally, this new model of computing will eradicate the concept of carrying data on USB drives/CDs or, for that matter, on any portable media. Just think, all you need to transfer that all important presentation or that college project is to login to your Grid Account from your college/office client. Yes, that’s all; you can use your computer just like you do at home. Now this is something I call mobile computing!
What might be the problems?
But like anything else in the world this model is sure to have some problems (and their solutions too:-))
  • The first problem in my mind is that implementation of this model will require a radical change in current infrastructure. The complete business model of marketing/selling IT components to individuals will change. There will be obvious questions like - "Why should we change when everything is going fine?" and "What if it fails?". Unless all IT bigwigs work together, it'll be almost impossible to bring this change. It’ll be good if some big organization starts testing this model at small scale. They can cluster there current army of computers and create a miniature Grid. Once the profits start flowing, other IT organization will start moving towards this.
  • Second problem is the dreaded problem of Security. All data at one place can cause havoc if some troublemaker gets the key. But I presume that by the time such advanced networking and clustering technology come into existence, the security technologies will have stepped to the next level. A human being will be recognized by his/her face, voice, fingerprints besides old trusted technologies like passwords and smartcards. So, in all probability Security won’t be a problem.
Is it really feasible?
Sounds revolutionary, but so did AI. We all know what happened; we are yet to see robots that can clean our bathrooms. So is this just another dream of some crazy scientist. No, I don’t think so. The problem with the vision of AI was that we were trying to create something which was as big a mystery as UFOs (i.e. the human brain). At the time research on AI started we neither had the required processing power nor the knowledge of the subject (We have most of that now but that’s a different topic). Whereas, Grid Computing is based on two basic technologies, networking and clustering, that exist even today. The only problem is to scale them to higher levels. This is why; I have a firm belief that Grid Computing is the future of computing. Whether it’s good or bad is something we’ll know as we move ahead into the future.

Meanwhile, I must tell you that I did not take up the course on Distributed Computing. The sole reason was that we were required to have 100% attendance to pass the course :-)