Thursday, April 17, 2008

Part II - Process of buying a Used Car



This article aims to give you basic knowledge about how to inspect a used car and can possibly help you toHappy Used Car avoid used cars with potential problems i.e. avoiding lemons. To begin with let me make one thing very clear: "buying a used car requires tons of patience in addition to a lot of research effort".


1] Shortlisting:

a) Browsing online:
Look for used cars listings on www.craigslist.com. You would find cars listed by both dealers and private sellers. More often than not craigslist would suffice, but incase you want to look for more options you can check out other sites such as UsedCars.com, Cars.com, CarsDirect.com, etc.

b) Verifying by VIN:
Once you like a car, the next step is to look for its VIN no. VIN stands for Vehicle Identification Number and each car has one such unique number. In Oprah speak, its similar to a SSN. Every VIN# Tells A Story. One can peek into the cars history by using this 17 digit VIN#. By car history I mean the foll:
- the no of previous owners ???
- the type of owners ???
- Any accidents, engine, transmission repair ???
- Has the car passed last Emission Test ???

However, knowing the VIN no won't help in getting the above info. You would want to purchase an account with www.CARFAX.com to get all the car history using the VIN#. A carfax account for 1 month of unlimited usage would cost around $30. Buying a carfax account and filtering cars based on its VIN# is the first and most important step in this whole process.
2] Inspecting a used car:

Once you are satisfied with your research with the car's VIN#, proceed towards setting up an appointment with the car's owner.

a) Questions to ask to Seller:

Ask the seller to point out all known defects, problems, issues, etc. with the car. If there are any subsystems, alarms, or computer indicators that are not functioning, have them point it out to you. Ask the seller when the brake pads were last replaced. Ask if there is an extended warranty with the vehicle, and if it is transferable to you. Verify this with the warranty company. Ask to bring the car to your mechanic to check it out. If they say no, you have to wonder what they are hiding.

b) Inspecting Externals of the car:
Following is an excellent webpage that teaches how to inspect the car body: http://www.samarins.com/check/bodycond.html

c) Inspecting Internals of the car:
Following is an excellent webpage that teaches how to inspect internals of the car:
http://www.samarins.com/check/checklist.html

However, this information cannot substitute for detailed mechanical inspection performed by a professional. To protect yourself, take a car to a mechanic of your choice for detailed mechanical inspection prior purchase. I did a checkup at pepboys. I did a 120 point checkup for $70/80 + an engine checkup for $40. However, spend your money for a professional checkup only after a test drive and price negotiation, i.e. when you are absolutely sure of buying the car.

d) And finally the Test Drive:
Drive with the radio on and off. Test the speakers to see if they are cracked. Make sure the CD player works. Take the car on a highway, main streets, and side streets, see if the car loses alignment, or bears to the left or right. See how good the car brakes, drive sharply around some corners, and your companion is writing everything down. Make sure all the seat belts work, that electric seats work, look for missing or burned out bulbs inside and out. If the car has retractable headlights, make sure they pop up and turn on. Make sure the brake lights, reverse lights and directional lights work.

3] Deciding the Price:
To decide whether the price quoted by the seller is reasonable or not, you can do the following: Go to Kelly Blue Book, http://www.kbb.com/. There you can find the car price according to all variables like car make, year, model, mileage, etc. Lastly, it would ask you to select from the following 3 options:
- Trade-in Value
- Private Party Value
- Suggested Retail Value

If your seller is a private seller, than the price quoted by him/her should be less than the KBB's price for a Private Party Value. And if your seller is a dealer, than the price quoted by him/her should be less than the KBB's price for a Suggested Retail Value.

4] Essentials after buying a car:

Jumper Cables:
If the car does not have jumper cables, go buy some on the way home, without delay. You never want to be without jumper cables.

Battery/Alternator:
Ask the seller for receipts for the battery or alternator. Many auto parts stores have lifetime warranties on alternators, or will prorate a failed battery only if you have the original receipt.

This is what I learnt when I bought my car. I would be more than happy to know any glitches in the above process or any worthwhile improvements that I missed out on.


Read more...

Part I - Economics of buying a Used Car



I bought my car last year in October after a couple of months research. And the views expressed in thisHappy Used Car article are solely mine that I developed while going through the process of buying my car. I had most of this article prepared by the time I got my car keys, but somehow it never made its way here.

For most of us, the family home is the biggest purchase we will ever make, and the car is often the second biggest, which are known as big ticket purchases. Not surprisingly, this is where the most money can be saved or wasted.

I believe in rational consumption decisions, and those who know me will not be surprised to learn that I have strong opinions on these issues. I believe that buying a new car is a big purchase but a bad investment. So let me explain why.


.

2 important points to begin with:

1) Difference between big ticket and small ticket purchases:
By contrast, consumption decisions about items purchased frequently via simple transactions (e.g., cereal) are easier to make on a trial-and-error basis and can be easily improved. Because these decisions are routine and relatively inexpensive, they exert a much smaller influence on the life of the consumer.

2) Difference between buying a house and a car:
Unlike a house, the car is a depreciating asset, and is virtually a black hole for throwing money into.

.

.

Advantages of buying a used car:

1] Finance:
The period during which one has highest capital available at his disposal is perhaps the first couple of years of starting a job life. This is the period when one is single, and most probably sharing his apartment with fellow roomies, thus being able to save a significant portion on his monthly rentals. Hence, if one goes for a used car he can save almost atleast half the amount he might be thinking of spending on a new car. This capital saved could have been put to better use in some wise investments. Furthermore, there are other hidden expenses that come along with buying a new car. New car mean higher insurance rates. In addition, a new car probably implies that a loan was taken since students who have just started their job life usually do not have strong credit history and hence they have to shell more mullah in paying higher loan interest rates. Also, the amount one has to pay for tax increases with the car's base price. Lets work out the finances by taking an example of a buying a new car vs a used car.

.

(a) New Car :

Base Price = 20,000
Tax (5%) = 1,000
Insurance Premiums = more
Loan Interest (7% APR for 5 yrs) = 5,000
Total = 26,000+

.

(b) Used Car :

Base Price = 10,000
Tax (5%) = 500
Insurance Premiums = less
Loan Interest (7% APR for 5 yrs) = 0 (since no loan was taken)
Total = 10,500+

.

.

2] Flexibility:
The value of a new car depreciates much faster as compared to a used car. The moment you take your new car out of the showroom, its value depreciates by 20%. When coupled to the average yearly depreciation of 7% to 12%, your first year’s loss is anywhere from 25% to 35%. That translates to a first year $6,000 to $8,000 loss on a $22,500 new vehicle, or a $10,000 to $15,000 loss on a $40,000 one. And that’s for a vehicle only driven the average 13,500 miles. If you drive more than that, your depreciation will be greater (35% to 50% for the first year). Hence, you need to stick to your new car for atleast 3 minimum years before selling it off, if you need to get some decent value back. However, thats not the case with used cars. After the initial 3 to 4 year period, cars undergo a steady depreciation of around 10%. Therefore you are always free to sell off the used car that you bought as and when you feel like.

.

.

3] More Value for same price:
It is so obvious but often underlooked. You can buy a used car with much more features than a new car with no features with the same amount. For example take a brand new 2007 Honda civic which costs around $15,000. Now thats a very basic model, the Honda Civic DX. With the same amount, one can easily get a used 2004 Honda Accord. Not only that but an EX V6 Honda Accord, with not more than 40K/50K miles on it.

.

.

.

And now some myths that a lot of people believe in:

Myths:

1] Used cars carry high maintenace costs:
Its quite normal for one to have that feeling, but with Honda's , Toyota's around, one can safely assume zero maintenance costs. Japanese cars are very well known to be highly durable and efficient with their mileage. Their safety equipment is up to date, and comparable to new cars. Manufacturer's warranty is still in effect. Most new cars have 36 month general warranties, many have 48 months, and a few have 60 months all transferable to new owners. Many used car dealers certify almost-new used cars with comprehensive inspections and guarantees. Today, most modern cars are built to such high standards that second-hand no longer means second-rate.

.

2] Driving a new car has its own experience:
I think its very subjective. But if you opt for a decent used car, say a 2004/2005 model which has been maintained well, you won't feel the difference. Furthermore even if there is such a thing as driving a new car, than I think it doesn't last too long beyong initial couple of months.

.

.

.

Conclusion:
Cars are terrible investments. In their most basic form, they are merely a tool to get us from A to B. In their most elaborate form they can be a “shiny” tool that gets us from A to B, but with more luxuries. But either way, they are not likely to be much of a financial benefit. Add on maintenance, repairs, interest on the loan, and insurance and you can quickly see that automobiles can have quite a large negative effect on our finances.

I have always heard (and I agree) that a two year old car is a good age to buy, because you are still getting a fairly new car that is likely to have some amount of manufacturer warranty remaining, but yet a huge chunk of depreciation is knocked off.

By buying used, you let a car's first driver deal with that big depreciation nosedive. You get the car you want without the financial strain or the hassle of being several thousand dollars upside down on your loan.

And last but not the least, its more wise to go in for brands such as mazda or nissan who are as good as Honda's or Toyota's and whose resale values are not blown up as is the case with Honda's and Toyota's.


Read more...

Monday, November 12, 2007

Democracy OR Dynasty ???

Indian FlagFew weeks ago i.e. on 24th September 2007, Rahul Gandhi was appointed as an All India Congress Committee general secretary in a reshuffle of the party secretariat. In addition, he has also been given charge of the Youth Congress and the National Students Union of India. And how did Congress go about celebrating this occasion. They compared Rahul to Dhoni as below:

Rahul can do Dhoni for congress.

This particular comparison made me write this blog entry.




In his field of activity, MS Dhoni has proved his mettle beyond doubt - As a wicky, as a strong bat and now as a skipper. Now What is Rahul's claim for the position he is looking to adorn.

I don't have anything personal against Rahul. But the way he is projected, it gives us a feeling that only the members of a particular family, however poorly qualified, can save our land.

Some recent quotations that Rahul has made:

1] "My father said to my mother that he would stand in front of Babri Masjid if it will do any good. They would have had to kill him first," Rahul recalled. "Had the Gandhi family been there in politics (at that time), Babri Masjid demolition would not have taken place," Rahul said on the second day of his election campaign in Uttar Pradesh.

If my memory serves me right, Shri Rajiv Gandhi was killed on 21st May, 1991 and the babri masjid demolition took place on 6th December, 1992. How come Mr. Rahul heard the purported famous lines? Or was the Gandhi Family privy to the plot of babri masjid demolition years in advance?

2] "Once my family decides on something, it doesn’t go back. Whether it’s about India’s freedom, dividing Pakistan or taking India to the 21st century."

Rahul credits his family for the division of Pakistan in 1971, which led to the independence of Bangladesh, thereby suggesting all the freedom movements and sacrifices of Bangladeshis were meaningless.

What has he done for the last 3 years as an MP. He has not spoken a word about reservations, not about the nuclear deal.
Some Straight questions to Rahul Gandhi.

1. Under whose family's long tenure, Kashmir has gone out of control.

2. Why large number of Indians are still under poverty line Gandhi family ruled India most of the period after 1947.

3. What abt the 1984 Sikh massacre

On the face of it, the anti-Sikh riots were far more horrific than the post-Godhra violence. More than 2,700 people were killed in 1984 as per the official death toll, in Gujarat it was a little over a thousand. The '84 riots have seen just 13 convictions, in Gujarat, the fast track courts have already convicted more than 15 persons in different cases. The 84 riots occurred in several high security areas in the heart of the national Capital, the 2002 violence was spread across large stretches of Gujarat. And Rajiv Gandhi said this, "when a big tree falls, the earth shakes". Nothing could be more irresponsible statement than this.

Today Congress has an impressive list of well educated young talent at their disposal. Sachin Pilot, Milind Deora, Jitin Prasad, Sandeep Dikshit, Naveen Jindal, Deependra Singh Hooda, most of them educated in blue- chip universities abroad. For one, their election campaign rhetoric didn’t centre around religion, caste and corruption but on sadak, bijli, pani (roads, water, electricity) and in particular shiksha (education). However, none of them were given the post. Not only that, none of them finds a positions in the cabinet. The cabinet has room for 79 ministers including the Prime Minister and yet Congress doesn't have enough available cabinet positions for giving a chance to these young guns. Instead we have politicians like Arjun Singh at 77 years who does nothing but practices caste based divide-and-rule politics.

Lets take a peek into how qualified these young guns are:

Jyotiraditya ScindiaJyotiraditya Scindia (36 yrs old):
He has been an MP for five years, he has two degrees from Harvard University and Stanford University, U.S. and went on to work as an investment banker for Merrill Lynch and Morgan Stanley. He also gained some development experience with the UN Economic Development Cell. He in fact had the distinction of being the only undergraduate intern in the UN Economic Development Cell. He is one of the best speakers in Parliament, Congress relies on him to stand and defend it in a crisis. Yet it isn’t making him a minister.

Sachin PilotSachin Pilot (30 yrs old) :
He completed his B. A.(Hons) degree from St. Stephens College, Delhi University. While in college, Pilot was the captain of the college shooting team. He then received his MBA from the Wharton Business School, University of Pennsylvania , U.S.A. Worth reading is his take on cracking the reservation riddle here http://www.indianexpress.com/story/4864._.html

Milind DeoraMilind Deora (31 yrs old) :
He is an alumnus of the Cathedral and John Connon School, Sydenham College and Boston University in the United States. Regularly writes articles for several of India’s leading publications on a wide range of issues, from Mumbai’s development to Right to Information performs exceedingly well in Parliament, raising issues such as Urban Development, Employment, National Security, Energy Security, Budget Prudence, Manufacturing Preparedness, Administrative Reforms. Milind had been nominated by the UPA Government on two instances to initiate landmark debates on its behalf in Parliament, the first being the Right to Information Bill and the second being the Pension Fund Regulatory and Development Authority (PFRDA) Bill. This was the only time a first-term MP was given this opportunity.

Jiten PrasadJitin Prasad (34 yrs old):
He studied at The Doon School, Dehradun. He did his BCOM(Hons) from the prestigious Sri Ram College of Commerece, Delhi University and then went on to do his Masters in Business Administration from Indian Management Institute (IMI), New Delhi. Jitin Prasada worked at DSP Meryll Lynch and then on to BPL Net.

Sandeep DikshitSandeep Dikshit (43 yrs old) :
He attended Modern School, New Delhi, and holds a masters degree in History from St. Stephens College. He received his
Post-Graduate Diploma in Rural Management in 1989 at the Institute of Rural Management, Anand (IRMA).He heads a social development group SANKET which has been responsible for publication of the MP Human Development Report. The Congressman has been an active Member of Parliament, raising several issues which have kept both him and his colleagues busy.

Naveen JindalNaveen Jindal (37 yrs old) :
Naveen who did his MBA from the University of Texas, Dallas, USA in 1992 is a multifaceted personality - an industrialist, a sportsman, a pilot, but most of all a dyed-in-the-wool patriot.

He single-handedly took up the cause of restoring in Indians a national pride, choosing the Tricolour as his symbol. Today if you can display the national flag at your home or workplace throughout the year, it is because of legal battle fought by Mr Jindal for nine long years to make this right available to every Indian. On 23rd January 2004, in a historic Judgement, the Hon'ble Supreme Court has held that the right to fly the National Flag freely, with respect and dignity is a Fundamental Right of every citizen.

On his return from USA he took over the management of the Raigarh & Raipur divisions of Jindal Strips Limited (JSL) in 1993 at a challenging time when these divisions were in their difficult phase making huge financial losses. JSPL, under the leadership of Mr Naveen Jindal, has not only seen a spectacular growth but it is today one of the most efficiently run steel companies in the world for its scale of operations. It is the fourth largest private sector Indian business group by assets and sales turnover.

Tejaswini SreerameshTejaswini Sreeramesh (41 yrs old):
Tejaswini, the Congress MP from Kanakpura had defeated former prime minister and Janata Dal supremo H.D. Deve Gowda by a massive margin of 116,863 votes. She holds a masters degree in Political Science and a bachelor's degree in Law from Vivekanda Law Collge, Bangalore. She is also a Philosophiae Doctor from Bangalore University. Before joining politics, Tejashwini was a research scholar and used to write on various aspects of life and society. She has also travelled into the tribal belts of Chattisgarh and Bastar to produce television documentaries.

Now let us see what qualifications Rahul has:

rahul gandhi


Rahul Gandhi attended St.Columba's School, New Delhi before entering the The Doon School. He attended Doon from 1981-83 before being home-schooled for security reasons. His admission to St Stephen's College was controversial as he was believed to have been admitted on the basis of his abilities as a competitive pistol shooter, which was disputed. He left the school in 1990, after one year of education.

It is reported that Harvard alumni records list him as attending between 1990 and 1993 but not as completing a degree. He transferred, reportedly due to security concerns following his father's murder, to Rollins College in Florida where he completed a B.A. in 1994.

During the parliamentary elections in 2004, Gandhi claimed that he had received an MPhil in Development Economics after attending Trinity College, Cambridge. Media enquiries report that he attended under the alias "Raul Vinci". He worked in London with the strategy consultancy firm Monitor Group, before returning to India in late 2002 to run an engineering and technology outsourcing firm in Mumbai

Rahul Gandhi's legal affairs team has taken a number of heavy-handed measures to prevent damage to his image. For example, when Newsweek alleged in late 2006 that he had not completed his degrees at Harvard and Cambridge or kept his job at the Monitor Group, they were slapped with a legal notice, following which they hastily retracted or qualified their earlier statements.

Far more serious allegations of rape, apparently originating from the web forums of Hindu revolutionary group Hindu Unity and spreading through sympathetic vectors in the blogosphere and other web discussion communities, surfaced in early 2007. The host of the web board, ezboard, was served a legal notice as well, and immediately shut down Hindu Unity's web board, for what it deemed as "Terms of Use" violations.

http://scotland.indymedia.org/newswire/display/3659/index.php
http://www.hinduonnet.com/2001/09/30/stories/02300003.htm
http://in.news.yahoo.com/050308/43/2k1rd.html

India has a 100 crore population, out of which 60 crore are active voters. Further 65% of these voters are below the age of 30. Their aspirations are the same, cutting across the rural-urban divide and they are in a hurry. This calls for quicker induction of young educated persons with a global perspective into cabinet positions.

However, it seems that the reason why Jyotiraditya Scindia, Sachin Pilot, Milind Deora can’t be ministers, is because of Rahul Gandhi. They belong to his generation and hence can’t be heir apparent. And because he is not fit to be a minister, they can’t be considered either. There must be at least a hundred more experienced and more deserving leaders in Congress but they can not see beyond the Gandhi family. There's no scope for merit, performance and passion for country's welfare when it comes to raising people to powwerful positions. Not only Rahul, but his yet unborn offsprings have already been 'selected' as heir apparent to the Cong throne.

It is ironic that we live in the world’s largest democracy, and the party that has ruled us for most years after independence, practises dynasty and not democracy.

References:

1] wikipedia
2] http://ibnlive.com/blogs/rajdeepsardesai/1/2616/dr-modi-and-mr-hyde.html
3] http://www.yuvahindustani.com/our-founder.html
4] http://www.educationworldonline.net/eduworld/article.php?choice=prev_art&article_id=250&issueid=24
5] http://www.tribuneindia.com/2004/20040530/spectrum/main1.htm


Read more...

Sunday, September 9, 2007

C++


BjarneYesterday, one of friend called me as she needed some help in C++ for her TA assignment. She had to solve around 10 problems, all dealing with basics of C++ and in an increasing order of difficulty. And even after me explaining her the solutions, she seemed to be quite frustrated with solving them. She told me that the moment she thinks she has learnt quite a bit of C++, she realises that it is not enough.

I think, this feeling of hers is quite common for someone beginning to learn C++. My advise to someone would be to try learn the concepts of OOPS and think of C++ as a language that implements those concepts. Also, while learning they need to try to abstract any C++ program at different levels simultaneously. Most people concentrate on syntax while learning a new language, which does not serve the purpose. And as far as C++ is concerned, its syntax is very easy for anyone who is a little bit familiar with C. The idea is to understand different concepts such as encapsulation, inheritance, polymorphism which C++ offers and to understand how those find application in real life problems. Learning C is quite easy as it adopts a procedural approach. However learning C++ on the other hand needs persistance. OOPS concepts cannot be grasped in first read. But if one persists, it isn't long before one starts seeing through the capabilities of the language. It is usually that one moment, which changes everything. You then start appreciating the strengths and accepting the weaknesses of the language.

Well coming back to the topic, my friend's frustration reminded me about the interview given by Bjarne Stroustrup, the inventor of the C++ language. I would like you to first read the interview at http://www.oceanwave.com/technical-resources/humor/c++-hoax.html , before reading the rest of the article.



It is quite obvious that Bjarne never gave that interview, but a lot of people identify with the questions asked by the interviewer, especially those who are still in the learning curve for C++.

Now, you can go through the following link to read the real interviews given by Bjarne.

Part 1: http://www.techreview.com/Infotech/17831/
Part 2: http://www.techreview.com/Infotech/17868/

The interviews were conducted in two series. Apparently there were a lot of comments to the 1st interview and hence the tailor-made questions were addressed in the 2nd interview. Therefore, the 2nd interview makes a much more interesting read.

For those who do not have the time, below are the highlights of some important issues on which Bjarne talks about:

1) Examples of some great software developed in C++ :

Bjarne : "Google! Can you even remember the world before Google? (It was only five years ago, after all.) What I like about Google is its performance under severe resource constraints. It possesses some really neat parallel and distributed algorithms. Also, the first Web browsers. Can you imagine the world without the Web? (It was only about 10 years ago.) Other programs that I find cool are examples of embedded-systems code: the scene-analysis and autonomous driving systems of the Mars Rovers, a fuel-injection control for a huge marine engine. There is also some really cool code in Photoshop's image processing and user interfaces. What I like about these programs is how they are structured to be reliable and responsive under pretty harsh resource constraints. Some of Photoshop's ways of managing internal complexity (for instance, the graphical user interface [GUI] layout and access from image-processing algorithms to the pixel data) are just beautiful."

(2) Next big conceptual shift in the design of programming languages :

Bjarne : "All that said, I don't know what the next major conceptual shift will be, but I bet that it will somehow be related to the management of concurrency. As programmers, we have been notoriously bad at thinking about lots of things happening simultaneously, and soon our everyday computers will have 32 cores. Instead, each programming paradigm adds to what worked previously, and as a paradigm matures, it is increasingly integrated with previous paradigms.

Kristen Nygaard was fond of saying that multiplication didn't completely replace addition, and, by analogy, whatever would come after object-oriented programming would include object-oriented programming as a subset. I tend to agree. The evolution of C++ was guided by this view, and the evolution of Java and C# provides further examples."

(3) Computer languages remain generally difficult to learn :

Bjarne : "Obviously, we don't want our tools--including our programming languages--to be more complex than necessary. But one aim should be to make tools that will serve skilled professionals--not to lower the level of expressiveness to serve people who can hardly understand the problems, let alone express solutions. We can and do build tools that make simple tasks simple for more people, but let's not let most people loose on the infrastructure of our technical civilization or force the professionals to use only tools designed for amateurs. We need relatively complex language to deal with absolutely complex problems."

4) On maintaining backward compatibility with C, its pros and cons (evolutionary approach vs revolutionary approach) :

Bjarne : "Java shows that a (partial) break from the past--supported by massive corporate backing--can produce something new. C++ shows that a deliberately evolutionary approach can produce something new--even without significant corporate support. To give an idea of scale: I don't know what the marketing budget or Java has been so far, but I have seen individual newspaper advertisements that cost more than the total of AT&T's C++ marketing budget for all time.

Another reason-- probably even more important--is that organizations prefer interfaces that are in the C/C++ subset so that they can support both languages with a single effort. This leads to a constant pressure on users not to use the most powerful C++ features and to myths about why they should be used "carefully," "infrequently," or "by experts only." That, combined with backwards-looking teaching of C++, has led to many failures to reap the potential benefits of C++ as a high-level language with powerful abstraction mechanisms."

5) On .NET and C# :

Bjarne : ".Net is "the progeny" of a large organization, though Anders Hjelsberg has a large hand in it through C#, the language he designed, and its libraries. I suspect that C++ played a significant role, but primarily through MFC (which is not one of the more elegant C++ libraries) and as an example of something perceived as needing major improvement. C# as a language is in some ways closer to C++ than Java is, but the main inspiration for .Net and C# is Java (specifically, J2EE). Maybe C++ should be listed as a grandparent for .Net but as both a parent and a grandparent of C#."

(6) On portability :

Bjarne : "Personally, I'm a great fan of portability. True, you cannot write a complete application of any realistic size without introducing some system dependencies. But the question is how deeply integrated into the application those system dependencies are. I prefer the application to be designed conceptually in isolation from the underlying system, with an explicitly defined interface to "the outer world," and then integrated through a thin layer of interface code."


Personally I think there is one area that C++ loses out on as compared to its counterparts and that is the area of concurrency.

When the C++ Standards Committee was creating the initial C++ Standard, a concurrency mechanism was explicitly excluded because C didn’t have one and also because there were a number of competing approaches to implementing concurrency. It seemed too much of a constraint to force programmers to use only one of these.

The alternative turned out to be worse, however. To use concurrency, you had to find and learn a library and deal with its idiosyncrasies and the uncertainties of working with a particular vendor. In addition, there was no guarantee that such a library would work on different compilers or across different platforms. Also, since concurrency was not part of the standard language, it was more difficult to find C++ programmers who also understood concurrent programming. Another influence may have been the Java language, which included concurrency in the core language. Although multithreading is still complicated, Java programmers tend to start learning and using it from the beginning.

Lastly, I would like to echo what Bjarne had to say in the interview:

Bjarne:
"I'm sure that for every programmer that dislikes C++, there is one who likes it. However, a friend of mine went to a conference where the keynote speaker asked the audience to indicate by show of hands, one, how many people disliked C++, and two, how many people had written a C++ program. There were twice as many people in the first group than the second. Expressing dislike of something you don't know is usually known as prejudice. Also, complainers are always louder and more certain than proponents--reasonable people acknowledge flaws. I think I know more about the problems with C++ than just about anyone, but I also know how to avoid them and how to use C++'s strengths."


Read more...

Movie - Flaw in the movie "GURU"

guru.jpgI found a flaw in movie Guru. Actually I like the song "tere bina" so much that since the release of the movie, this is perhaps the only song I have been listening to consistently. Also, I usually use www.raaga.com, but for this song, I have been using youtube, since I like its picturisation.

You must be wondering, why am I talking about the song instead of revealing the flaw that I have found in the movie. So let me come to the point. Just before the song begins, Aishwarya leaves Abhishek and goes back to village. Why ? Well according to the movie, because of her brothers outbursts she realises that money was the only reason Abhishek married her.

My point is that she already knew this. How and when ?



Well following is the youtube link for part3 of the movie. Guru Movie - Part 3.

[youtube=http://www.youtube.com/watch?v=ztJJd29bYJE]
The clip is for 10 mins. Pay attention to the scene after 7 mins from the start of this clip. Aishwarya's father asks Abhishek what does he do, wasn't he in Turkey ? Following is the conversation:

Aish's father: What do you do ? Weren't you in turkey ?

Abhishek: Yes, I was. But now I want to do business here with your son Jignesh.

Aish's father: What business ?


At this point, Aishwarya comes in and listens the rest of the entire conversation.
Abhishek: Many new things are available in Turkey. I will sell those here for good profit.

Aish's father: What does your father say?

Abhishek: He says I will be ruined.

Aish's father: Then you will definitely make a profit. Don't worry. But I have stopped lending money these days. I have to get my daughter married.

Abhishek: If that is the case, then I am ready to marry her.

From what Aishwarya heard, it is but obvious that she knows Abhishek wants to marry her, so that he could get the money and start his business.

So to show that she later realises the reason is a mistake in the script. I think Mani sir might have overlooked this technical mistake, in the process of inserting the song and showing some kind of quarrel between Aishwarya and Abhishek.


Read more...

Friday, May 4, 2007

Parallel blogging site at wordpress.com

Hi all,
I would now post my rants on wordpress.com in addition to posting them here. This shift is primarily due to following 2 services provided by them and not by blogger (aka. google).

(1) I can post summary of my posts, so that readers won't have to scroll through long posts of mine to see other topics.

(2) Wordpress also has a very good support for RSS feeds wherein readers can subscribe to updates on my blogs.

The wordpress version url is http://dhavalgada.wordpress.com/


Read more...

Sunday, April 22, 2007

Lack of Computer Science Majors


I came across a blog from Janelle Godfrey, Technical Recruiter for Microsoft. In her blog titled "If I Could Turn Back Time: Why I Wish I had Studied Computer Science/IT/ Technology in College", she says that it is very shocking to her the fact that the number of students who will be enrolling in computer science courses is drastically decreasing, and is the lowest it has been in a number of years.


She also says, that she has received numerous emails, articles, and surveys sent by employees confirming the above. Many Microsoft employees have also informed her that they have received emails from their colleges stating that there is a tremendous decline in computer science majors within their alma maters.

The blog has a number of interesting comments posted. I browsed through most of the replies and to me it seems there is quite a lot of myth in those replies.


I am listing them as below and will try to shed some light on each.


1) Outsourcing will lead to less jobs for Computer Scientists
This perhaps is the greatest irony. The USA has an immigration policy that limits the number of foreign skilled workers, which in turn leads to outsourcing. The fact that the limit of 65,000 H1-B visa ran out the first day itself, reflects the kind of demand that exists in this country for Computer Scientists. And I believe such restrictive policies would only result in Americans loosing these high tech jobs.

e.g. If there are 10 people needed for a project and you found 5 qualified and willing Americans and you could hire the other 5 on visas you would keep the project in US but if you didn't have the visas you would send the entire project abroad and fire the 5 Americans you did find.


2) Technology is fast-changing, while the Computer Science curriculum is highly outdated.
I do believe that technology is fast changing, but curriculum for Computer Science aims at developing strong foundations, which will not change for a very very long time. Agreed that one needs to accept self-study and has to constantly updates ones skills, but Computer Science education only makes it easier to learn new things. If you have a strong base, building on it becomes much more easier.


3) Many famous and rich people are drop-outs. They do not necessarily have a Computer Science degree.
I can understand such beliefs. Who doesn't know famous drop-outs such as Bill Gates or Steve Jobs or for that matter even Larry Page and Sergey Brin who have suspended their phd programme temporarily. I can only say that such phenomena happens to few people.


4) Computer Science education or profession involves long hours of programming, is very intensive and no social or family life
True that the program is quite intensive as compared to other majors. Also, true is the fact that it involves long hours of programming infront of computers. But that is not the complete picture. We do make time for other activities that we are fond of. And above all I guess it is very subjective.

5) Jobs available without Computer Science degree and
6) Formal Education not required.
The above beliefs are two different topics to be talked about. I personally think that people often tend to mix their views about one with the other. When people say that they do not require Computer Science education for them to get development jobs, it generally indicates that there is widespread misconception not only about what Computer Science essentially means but also about the nature of their jobs? For example, those who get a job without a degree, fail to realise that it is not a job that necessarily requires computer science skills. Computer Science is much more than just programming.

Secondly, those who do get a computer science related job, without a degree, hats off to them.

I am of the opinion that as far as you have the required Computer Science knowledge it should not be important whether he/she has acquired it through formal education or on their own.

To explain my point more clearly, let me first try to answer the following questions:

a) What Computer Science means ? And who should pursue Computer Science ?

The renowned computer scientist Edsger Dijkstra is often quoted as saying, "Computer science is no more about computers than astronomy is about telescopes."

The best current definition of the field appears in two recent articles [1,2], developed jointly by the two major professional societies in the computing discipline, the Association for Computing Machinery (ACM) and the IEEE Computer Society (IEEE-CS). These reports identified nine subject areas comprising the subject matter of the discipline, which are shown below.

Nine subject areas defining the core of computer science :

This material is quoted directly from [1, Section 5.1].

(1) Algorithms and Data Structures
This area deals with specific classes of problems and their efficient solutions. The performance characteristics of algorithms and the organization of data relative to different access requirements are major components.

(2) Architecture

Methods of organizing efficient, reliable computing systems provide a central focus of this
area. It includes implementation of processors, memory, communications, and software interfaces, as well as the design and control of large computational systems that are reliable.

(3) Artificial Intelligence and Robotics

The basic models of behavior and the building of (virtual or actual) machines to simulate
animal and human behavior are included here. Inference, deduction, pattern recognition, and knowledge representation are major components.

(4) Database and Information Retrieval
The area is concerned with the organization of information and algorithms for the efficent
access and update of stored information. The modeling of data relationships, security and protection of information in a shared environment, and the characteristics of external storage devices are included in this area.

(5) Human-Computer Communication
The efficient transfer of information between humans and machines is the central focus of this area. Graphics, human factors that affect efficient interaction, and the organization and display of information for effective utilization by humans are included.

(6) Numerical and Symbolic Computation
General methods for efficiently and accurately using computers to solve equations from
mathematical models are central to this area. The effectiveness and efficiency of various approaches to the solution of equations, and the development of high-quality mathematical software packages are important components.

(7) Operating Systems
This area deals with control mechanisms that allow multiple resources to be efficiently
coordinated during the execution of programs. Included are appropriate services of user requests, effective strategies for resource control, and effective organization to support distributed computation.

(8) Programming Languages
The fundamental questions addressed by this area involve notations for defining virtual
machines that execute algorithms, the efficient translation from high-level languages to machine codes, and the various extension mechanisms that can be provided in programming languages.

(9) Software Methodology and Engineering

The major focus of this area is the specification, design, and production of large software
systems. Principles of programming and software development, verification and validation of software, and the specification and production of software systems that are safe, secure, reliable, and dependable are of special interest.

While these areas explain the subject matter of computing, it is the way in which they are studied, bringing together elements of mathematics, science, and engineering, that defines computer science. In particular, this study is through the processes of

1. theory (or the underlying mathematical principles that apply to computing);

2. abstraction (or experimental science applied to development of algorithms and software by forming hypotheses, collecting data, modeling, designing experiments, and analyzing the results); and

3. design (the engineering of computing systems, through requirements and specifications, design and implementation, testing and analysis).

Most, if not all of the good universities, do cover all of these topics as core requirement for their Computer Science program.

So I guess one should first recognise their interests and then accordingy choose the appropriate major. People interested in computer technology related field do not necessarily have to take a Computer Science degree. There are other majors such as Computer Engineering, Software Engineering, Information Science, Information Systems, Information Technology, etc, which could be pursued after determining one's interest. The design and deployment of computers and computer systems is generally considered the province of disciplines other than Computer Science.

For example, the study of computer hardware is usually considered part of Computer Engineering, while the study of commercial computer systems and their deployment is often called Information Technology or Information Systems.

b) What kind of jobs is one looking out for ? And would Computer Science be an appropriate degree to pursue for him/her in order to achieve the same ?
If someone wants to do, is only write sql queries or simple html forms creation for some web-application, etc, then probably pursuing a Computer Science degree would be opting to go for overkill.

I personally think it is very important to distinguish what Computer Science really means. The most widespread myth that Computer Science is nothing but programming needs to be broken with. Infact designing programming languages is one of the key areas that Computer Science addresses. Any Computer Scientist who has had a formal education in such a subject definitely has the advantage to recognize the pros and cons of the so many programming languages. It also helps them to identify the suitability of a specific programming language for a particular problem. And most importantly it also imparts them the knowledge and ability of designing a new programming language if and when a need arises for a specific domain.


7) The above explanation might then lead to another question and widely believed by many as well, that there aren't enough jobs that require the above mentioned skills of the Computer Science.
Well, I am not sure as I do not have a definite answer. I used to endorsed the above view myself few years back. But as of now, I do not know the exact scenario. I for a fact know that there are challenging jobs that do give an apportunity to put the above mentioned skills to practise. But the question still remains how many of those jobs are out there ? Earlier, sometimes the thought that I won't be able to put my knowledge to practise used to get me demotivated. But as of now, when I am on the verge of completion of Masters degree, I am somehow very optimistic. I am now of the view that it is just a matter of time for things to fall in place. Perseverance is the key. Some get it early, some have to wait. The idea is to never give up. And when you enjoy your field, for once doing is as easy as saying.


Everything said, I would like to mention few advantages of formal education:

i) University is an experience.

ii) Also, the professors that teach you a certain course are experts in that field. Learning from someone talking to you in person, is very different from reading through a book.

iii) Something I find very unique in formal education atleast for the Masters degree is the theme with which any course is taught. Most of the professors have an aim to inspire atleast one student to take up research in that field. So the kind of topics, assignments, structure of the course , everything has a little research flavor attached to it.

One of the most important and often unacknowledged gain of the university education, according to me is "NETWORKING". We develop so many important contacts over the years spent in college, with roommates, with classmates, with students in some common sports team, with professors, with advisors, etc. The list gets pretty long and we often do not realise how much we gain from it.

I realised this because of an incident that took place when I was doing my co-op. I was having lunch with my boss's boss (superboss) and few colleagues. My superboss usually comes in the office once every 2 weeks. He has to constantly travel to different office locations and that translates to an air-flight to UK once every week. During the conversation one of my colleague just asked him about his future plans, and he said he wanted to go back to university but is unable to because of his schedule. I then suggested him, that he can always enroll himself in some online education or distance learning degrees/certificates. To that he said, that would not help him achieve his objective and his objective was "NETWORKING". I couldn't reply to him for few seconds. It was then I realised, that my new developed contacts were perhaps one of my important gains of my Masters education when compared to my friends who did not opt for it.



REFERENCES

[1] Tucker, Barnes, Aiken, Barker, Bruce, Cain, Conry, Engel, Epstein, Lidtke, Mulder, Rogers, Spafford, and Turner. Computing Curricula 1991: Report of the ACM/IEEE-CS Joint Curriculum Task Force, Association for Computing Machinery, Inc., December 1990.

[2] Denning, Comer, Gries, Mulder, Tucker, Turner, and Young. Computing as a Discipline. Communications of the ACM, 32(1):9-23, January 1989.


[3] Computer Science Accreditation Commission of the Computing Sciences Accreditation Board, "Criteria for Accrediting Programs In Computer Science In The United States," June 1992.


Read more...