Tuesday, May 25, 2010
Are You an Asker or a Guesser?
Neither's "wrong", but when an Asker meets a Guesser, unpleasantness results. An Asker won't think it's rude to request two weeks in your spare room, but a Guess culture person will hear it as presumptuous and resent the agony involved in saying no. Your boss, asking for a project to be finished early, may be an overdemanding boor—or just an Asker, who's assuming you might decline. If you're a Guesser, you'll hear it as an expectation. This is a spectrum, not a dichotomy, and it explains cross-cultural awkwardnesses, too: Brits and Americans get discombobulated doing business in Japan, because it's a Guess culture, yet experience Russians as rude, because they're diehard Askers.Fascinating stuff; I probably default to guessing, but I aspire to asking. Are you an Asker or a Guesser?
Sunday, March 7, 2010
Using Net-SNMP - 2
See http://ashokachakra.blogspot.com/2010/03/using-net-snmp-1.html for details
We had configured and set up Netsnmp in the previous post. Now lets go ahead with writing our MIB
Ok, if you now ask me......whats a MIB....then you are in the wrong place. I assume that you already know what SNMP is, and what MIBs are and what an agent and a Manager does. You can refer to Stallings for more gyan....or else wikipedia and the netsnmp wiki ought to give you a basic idea
Our first MIB will have two scalar values, for which we try and get the values. I have borrowed an enterprises number from another blog I found on the net. Thanks for the same.
MY-COMPANY-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, enterprises, Integer32 FROM SNMPv2-SMI;
-- root of our MIB will point to enterprises
myCompanyMIB MODULE-IDENTITY
LAST-UPDATED
"200804230000Z"
ORGANIZATION
"asholachakra.blogspot.com"
CONTACT-INFO
"email: billgates@gmail.com"
DESCRIPTION
"Example MIB"
REVISION
"200804230000Z"
DESCRIPTION
"First and hopefully not the final revision"
::= { enterprises 3011 }
-- lets group all scalarValues in one node of our MIB
scalarValues OBJECT IDENTIFIER ::= { myCompanyMIB 1 }
-- time to define scalar values
hostLoggedUsers OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of actually logged users on"
::= { scalarValues 1 }
hostName OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Actual hostname"
::= { scalarValues 2 }
END
Writing modules for MIBs is a long and sometimes troublesome process, much like writing a parser. And just like writing a parser, you don't have to do everything by hand: MIBs can already be processed by computers pretty well, so there is no need to start from square one every time. The tool to convert an existing MIB to some C code is called mib2c and is part of the Net-SNMP distribution
Ok.....now that you have the MIB
At the command prompt, run mib2c as shown
linux-725y:~/.snmp/mib2cdata # mib2c scalarValues
writing to -
mib2c has multiple configuration files depending on the type of
code you need to write. You must pick one depending on your need.
You requested mib2c to be run on the following part of the MIB tree:
OID: scalarValues
numeric translation: .1.3.6.1.4.1.3011.1
number of scalars within: 2
number of tables within: 0
number of notifications within: 0
First, do you want to generate code that is compatible with the
ucd-snmp 4.X line of code, or code for the newer Net-SNMP 5.X code
base (which provides a much greater choice of APIs to pick from):
1) ucd-snmp style code
2) Net-SNMP style code
Select your choice : 2
**********************************************************************
GENERATING CODE FOR SCALAR OBJECTS:
**********************************************************************
It looks like you have some scalars in the mib you requested, so I
will now generate code for them if you wish. You have two choices
for scalar API styles currently. Pick between them, or choose not
to generate any code for the scalars:
1) If you're writing code for some generic scalars
(by hand use: "mib2c -c mib2c.scalar.conf scalarValues")
2) If you want to magically "tie" integer variables to integer
scalars
(by hand use: "mib2c -c mib2c.int_watch.conf scalarValues")
3) Don't generate any code for the scalars
Select your choice: 1
using the mib2c.scalar.conf configuration file to generate your code.
writing to scalarValues.h
writing to scalarValues.c
**********************************************************************
* NOTE WELL: The code generated by mib2c is only a template. *YOU* *
* must fill in the code before it'll work most of the time. In many *
* cases, spots that MUST be edited within the files are marked with *
* /* XXX */ or /* TODO */ comments. *
**********************************************************************
running indent on scalarValues.c
running indent on scalarValues.h
linux-725y:~/.snmp/mib2cdata #
If you now do an........... ls........... on that directory, you will see two files, scalarvalues.c and scalarvalues.h being generated.
mib2c has generated these two files which are, let's say, the framework to create valid SNMP handler.
We need to improve those files in order to support our SNMP queries: hostName, hostLoggedUsers.
Please note that scalarValues.h does not need any changes, so I only modified scalarValues.c as follows.
#include
#include
#include
#include "scalarValues.h"
struct HostStates
{
int loggedUsers;
char hostname[20];
} hostStates;
void
init_scalarValues(void)
{
static oid hostLoggedUsers_oid[] =
{ 1, 3, 6, 1, 4, 1,3011, 1, 1 };
static oid hostName_oid[] =
{ 1, 3, 6, 1, 4, 1,3011, 1, 2 };
netsnmp_register_scalar(
netsnmp_create_handler_registration("hostLoggedUsers", handle_hostLoggedUsers,
hostLoggedUsers_oid, OID_LENGTH(hostLoggedUsers_oid),
HANDLER_CAN_RONLY
));
netsnmp_register_scalar(
netsnmp_create_handler_registration("hostName", handle_hostName,
hostName_oid, OID_LENGTH(hostName_oid),
HANDLER_CAN_RONLY
));
}
int
handle_hostLoggedUsers(netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests)
{
// obtain number of logged users here
hostStates.loggedUsers = 4;
switch(reqinfo->mode) {
case MODE_GET:
snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
(u_char *) &hostStates.loggedUsers, sizeof(hostStates.loggedUsers));
break;
default:
return SNMP_ERR_GENERR;
}
return SNMP_ERR_NOERROR;
}
int
handle_hostName(netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests)
{
// obtain hostname here
strcpy(hostStates.hostname, "flechetHost");
switch(reqinfo->mode) {
case MODE_GET:
snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,
(u_char *) &hostStates.hostname, strlen(hostStates.hostname));
break;
default:
return SNMP_ERR_GENERR;
}
return SNMP_ERR_NOERROR;
Ok, so what has changed ?? Mib2c does not know how we want to define the data, it is up to us to use individual data types or a user defined data structure. I have used a user defined data structure to store values for the integer and the octet string, and provided the pointer in memory for the same.
All I am doing at the moment is hardcoding the values of hostLoggedUsers and hostName. Lets get this working first and then see how we can obtain the same dynamically.
After that we will see how to do it for tables (using similar procedure)
Next steps will be to compile the c code into the agent and try to obtain the value.
Now it's time to compile ;) I will compile scalarValues.c to shared library libSnmpHandler.so and than I will install library in /usr/lib directory.
# gcc -shared -fPIC scalarValues.c -o libSnmpHandler.so
#cp libSnmpHandler.so /usr/lib
We can now configure net-snmp daemon to dynamically load our libSnmpHandler.so library on startup. In order to do this we need to create /etc/snmp/snmpd.conf file with following entries.
rocommunity public
rwcommunity public
dlmod scalarValues /usr/lib/libSnmpHandler.so
In snmpd.conf I also added rwcommunity and rocommunity entries. Both are simple passwords used by net-snmp daemon to authenticate SNMP clients. Of course it's possible to protect SNMP in a better way, but it's not area of this article. We're about to finish. Finally we can start net-snmp daemon with command:
# /etc/init.d/snmpd start
* Starting net-snmpd ...
Now it's time to verify if everything is working fine. We can use snmpget and snmpwalk tools to verify our work.
# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.3011.1
MY-COMPANY-MIB::hostLoggedUsers.0 = INTEGER: 4
MY-COMPANY-MIB::hostName.0 = STRING: "flechetHost"
# snmpwalk -v 2c -c public localhost scalarValues
MY-COMPANY-MIB::hostLoggedUsers.0 = INTEGER: 4
MY-COMPANY-MIB::hostName.0 = STRING: "flechetHost"
# snmpwalk -v 2c -c public localhost hostLoggedUsers
MY-COMPANY-MIB::hostLoggedUsers.0 = INTEGER: 4
# snmpget -v 2c -c public localhost hostLoggedUsers.0
MY-COMPANY-MIB::hostLoggedUsers.0 = INTEGER: 4
It's working fine! Now it's easy to add another queries to our MIB and libSnmpHandler.so. Possible enhancement are processor temperature, file system state, CPU usage and more and more. With net-snmp we can easily monitor all aspects of Linux box.
Saturday, March 6, 2010
Using Net-SNMP - 1
In this N part series, I shall post about
What SNMP is - very, very briefly
Install NetSNMP
Configure NetSNMP
Write a MIB
Use Mib2c to generate stubs for the agent
Populate the Stub code in the agent for the MIB you just wrote
Try and GET snmp to WALK through the NEXT few steps :)
Write more complex MIBs
Ok lets begin then, shall we..........
SNMP (Simple Network Management Protocol) is application layer protocol, mostly used in network devices (i.e. routers, printers, etc). In typical SNMP usage scenario SNMP client sends SNMP Get package to the network device in order to read its properties. When device reports any problems it is also possible to change device configuration using SNMP Set packages. Every device supports various queries (i.e. device uptime) and all of them are described in MIB (Management Information Base).
You can read more about SNMP protocol here: http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol
I told you guys I will be brief :)
Ok ....Now for the Installation ........
First, You will need a Linux System.......because all that I am going to explain next will be for that particular OS
I use Suse Linux 11.2, although I guess RedHat and Gentoo and Debian work just as fine .........
Ok, Login to the linux system ............By the way..............The download is available @ http://net-snmp.sourceforge.net/download.html
You need to pick up the SOURCE of the latest version ......Do not pick up binary, then you cannot play around with the source code. Get the tar.gz , since you will intend to use it on linux (Zip format is for wussies :) )
Ok, so you have the download in your home folder ........ (/home/
You will need root privilege to install so issue this command at prompt
$su - root you will be asked for root password , so give that and you are in
Navigate to the home folder where the net snmp tar.gz is kept
Issue this command at the prompt
#tar -zxvf net-snmp-5.5.tar.gz (I happen to be using version 5.5)
It will untar the whole thing and give you a directory like so
# ll
total 5408
drwxr-xr-x 19 274 500 4096 Mar 6 13:57 net-snmp-5.5
-rw-r--r-- 1 root root 5531055 Mar 3 23:21 net-snmp-5.5.tar.gz
#
Navigate into the net-snmp-5.5 directory and you should see something like so

The steps you need to do now are
1) Run ./configure
(type "./configure --help" for a quick usage summary.)
(--prefix=PATH will change the default /usr/local installation path.)
2) Optionally edit include/net-snmp/net-snmp-config.h
(due to prompting done by the configure script, this is very rarely
necessary.)
3) make
4) make test (This usually tells you right away whether everything on
the system is good to go or not)
5) make install
Ok......it will take some time....print what its doing all the while..... and then its done
You now have netsnmp installed and ready to use.
Ha Ha .....not quite.......theres still a lot of stuff that needs to be done before we can say .....yup....thats working beautifully.......
Navigate to
1. See if
2. See if the
Now you have to
First, give
#net-snmp-config --default-mibdirsYou should get the reply like so....a list of the directories which are used to pick up snmp MIB data
/root/.snmp/mibs:/usr/local/share/snmp/mibs
Now run
linux-725y:/usr/local # net-snmp-config --snmpconfpathYou should get the reply like so....a list of the paths which are used to pick up snmp configuration data
/usr/local/etc/snmp:/usr/local/share/snmp:/usr/local/lib/snmp:/root/.snmp:/var/net-snmp
# ldd /usr/local/bin/snmptranslate
linux-gate.so.1 => (0x00110000)
libnetsnmpagent.so.15 => not found
libnetsnmphelpers.so.15 => not found
libnetsnmpmibs.so.15 => not found
libnetsnmp.so.15 => not found
This means that you might get snmp*: error while loading shared libraries:
like for example as mentioned above libnetsnmp.so.20: It cannot open shared object file
If no error comes like above , no need to do anything, but if error comes, then, you have to do the steps below
Edit ld.so.conf in /etc and add the details of the lib path of /usr/local/lib and then run ldconfig
#vi /etc/ld.so.conf
/usr/X11R6/lib/Xaw3d
/usr/X11R6/lib
/usr/lib/Xaw3d
/usr/i386-suse-linux/lib
/usr/local/lib
/opt/kde3/lib
include /etc/ld.so.conf.d/*.conf
#ldconfig
# snmpconf
I can create the following types of configuration files for you.
Select the file type you wish to create:
(you can create more than one as you run this program)
1: snmpd.conf
2: snmptrapd.conf
3: snmp.conf
Other options: quit
Select File: 3
The configuration information which can be put into snmp.conf is divided
into sections. Select a configuration section for snmp.conf
that you wish to create:
1: Debugging output options
2: Textual mib parsing
3: Output style options
4: Default Authentication Options
Other options: finished
Select section: finished
I can create the following types of configuration files for you.
Select the file type you wish to create:
(you can create more than one as you run this program)
1: snmpd.conf
2: snmptrapd.conf
3: snmp.conf
Other options: quit
Select File: quit
The following files were created:
snmp.conf
These files should be moved to /usr/local/share/snmp if you
want them used by everyone on the system. In the future, if you add
the -i option to the command line I'll copy them there automatically for you.
Or, if you want them for your personal use only, copy them to
/root/.snmp . In the future, if you add the -p option to the
command line I'll copy them there automatically for you.
#cp snmp.conf /usr/local/share/snmp/
# snmptranslate -Tp -IR ipMIBThis means that everything that you have installed is working
+--ipMIB(48)
|
+--ipMIBConformance(2)
|
+--ipMIBCompliances(1)
| |
| +--ipMIBCompliance(1)
| +--ipMIBCompliance2(2)
|
+--ipMIBGroups(2)
|
+--ipGroup(1)
+--icmpGroup(2)
+--ipv4GeneralGroup(3)
+--ipv4IfGroup(4)
+--ipv6GeneralGroup2(5)
+--ipv6IfGroup(6)
+--ipLastChangeGroup(7)
+--ipSystemStatsGroup(8)
+--ipv4SystemStatsGroup(9)
+--ipSystemStatsHCOctetGroup(10)
+--ipSystemStatsHCPacketGroup(11)
+--ipv4SystemStatsHCPacketGroup(12)
+--ipIfStatsGroup(13)
+--ipv4IfStatsGroup(14)
+--ipIfStatsHCOctetGroup(15)
+--ipIfStatsHCPacketGroup(16)
+--ipv4IfStatsHCPacketGroup(17)
+--ipAddressPrefixGroup(18)
+--ipAddressGroup(19)
+--ipNetToPhysicalGroup(20)
+--ipv6ScopeGroup(21)
+--ipDefaultRouterGroup(22)
+--ipv6RouterAdvertGroup(23)
+--icmpStatsGroup(24)
linux-725y:/usr/local #
So now the errors are not going to be there because of configuration ......whatever gets screwed up , it will be because of your responsibilty :)
Next part will deal with How to write a MIB and add code from the agent.
Tuesday, February 2, 2010
The science behind Shampoo - and how we end up paying more - Always.
Whats true
There’s no shame in admitting that your hair affects your mood. According to a Dove Hair Care survey, one out of every four women has avoided an activity due to unruly hair and 88 percent say good hair boosts their confidence. So for many women, a trip to the shampoo aisle is a much more serious purchase than stocking up on toothpaste and Q-tips.
A 2008 study from market research firm Mintel reported that half of adults find the variety of shampoos and conditioners overwhelming. When Pantene, the shampoo category leader, offers 113 products in 14 different benefit-themed lines, it’s easy to see how the shelves have become so crowded—and confusing.
The good news? The majority of those options boil down to different packaging. “All shampoo is essentially a cleanser,” says Paula Begoun, author of Beautypedia.com. “Only the first five or six ingredients impact the formula’s effectiveness.” And if you do a quick survey of a few shampoo ingredients labels, you’ll quickly see how the top 10 list looks nearly the same on all of them.
Whats in it .....
But what are those ingredients, and what do they do? We broke down the ingredients on the back of the bottle.
1. Water. Up to 80 percent of shampoo is this basic element. Without enough of it, the lathering liquid wouldn’t pour from the bottle.
2. Surfactant. Basically a detergent, this additive does the bulk of the work. Surfates clean by surrounding dirt and oil so water can rinse them away. Ingredients like ammonium lauryl sulfate and ammonium laureth sulfate tend to be easier on sensitive scalps than sodium lauryl sulfate. Rumors that these chemicals can cause cancer are unfounded. While surfactants are irritating, shampoos don't contain high-enough levels to cause any real damage. Surfactants aren’t a problem unless you have sensitive skin or insist on regularly pouring gallons of the stuff in your eyes. And the cleansers shouldn’t be harmful to your hair. The shampoos sold today contain conditioners that compensate for the stripping qualities of surfactants, so you can wash daily without worry.
3. Foaming agents. Ingredients like cocamide or cocamidopropyl betaine provide the satisfying suds that complete the hair-washing experience. Lather, however, is purely aesthetic. “Lather doesn’t have anything to do with how well a shampoo works,” says Ni’Kita Wilson, a cosmetics chemist for Cosmetech Laboratories. “Manufacturers put lathering agents in shampoos because it’s what consumers expect.”
4. An acidic ingredient. Items like sodium citrate or citric acid on your shampoo label are added to keep shampoo at the right pH level. The acidic pH interacts with the hair's slightly negative charge to help the cuticle, the outer layer of the hair, maintain a smooth, flat surface.
5. Silicones like dimethicone, or anything ending in 'one.' These are polymers that deposit a lightweight coating on the hair. They help create smoothness and add shine.
6. Polyquaternium. Much like a fabric softener, it helps make hair more manageable by depositing a fatty conditioner and fighting static. It also thickens the shampoo formula so it’s easier to pour.
7. Panthenol, fatty alcohols, and nut oils. These common additives moisturize and lock in hydration.
8. Midazolidinyl urea, iodopropynyl, isothiazolinone, and sodium benzoate. “Unless you want your shampoo to grow legs and walk away, you need preservatives,” Wilson says. Since many of the other ingredients are made from organic materials, they can grow mold and bacteria. These additives keep your shampoo from turning into a science project.
“Most often, the ingredients lower down on the list aren’t present in high-enough concentrations to have any impact on the shampoo’s performance,” Begoun says. Natural extracts and other additives that manufacturers brag about on the label don’t do much for your hair, but they might make the experience more enjoyable by adding a little color or fragrance to the process. Of course, judging by the number of women (and men) sniffing shampoo in the personal-care aisle of the drugstore, fragrance is a big part of the shampoo equation. To wit: the phenomenon that was Gee, Your Hair Smells Terrific.
The catch
So if all of these ingredients are basically the same, why are some shampoos more expensive? Good question. Price rarely is an indicator of performance. “There’s no reason at all to pay more than $7 for a bottle of shampoo,” Begoun says. In fact, when Consumer Reports tested 1,700 ponytail samples by washing them in a range of shampoos, the expensive options did not produce any better results than the drugstore brands. You won’t see 10 times more results with a $30 bottle over a $3 bottle. “The only way to find out if a shampoo will work for you is by using it,” Wilson says. “Nothing on the bottle, including the price tag, can tell you if you’re really going to like the results.” If you rely on a high-priced brand to ensure a good hair day, you could be sending money down the drain.
Instead of shopping by price, Begoun suggests this strategy to help find the best formula for your hair: your shampoo, she says, should treat your scalp and your conditioner should treat the bottom few inches of your hair. So if you have an oily scalp and split ends, a shampoo formulated for oily hair will remove grease, and a repairing conditioner will help protect the ends.
If that fails? Well, there's always a headband.
Wednesday, January 27, 2010
The restaurant at the end of the Universe
This is the link
http://slezall.blogspot.com/
I would recommend everyone have a look, lots and lots of good stuff here
Here i reproduce verbatim one blog, just to show the extent of advancement we had
Value of Pye in Atharva Veda
Value of Pye in Athrava Veda
The transliteration would be as follows -
GoPeeBHaagYa MaDHuvRaaTa SHrunGiSHoDaDHiSanDHiGa
KHaLaJeeViTaKHaaTaaVa GaLaHaaLaaRaSanDHaRa
I have used capitals for those consonants which have to be deciphered for the values. Some consonants which have the emphatic pronunciation have been spelt along with H.
Tamilians are at a disadvantage. Unfortunately Tamil script has very few consonants. I know that Ka in Tamil is written for as many as four sounds - Ka, KHa, Ga and also GHa. So for writing GanGaa in Tamil, one would write KanKaa. Yet Tamil has two "na"s and two "LLa"s. They say that the second "LLa" is difficult to explain to a non-Tamilian.
Devanagaree script has better distinction. Kannada is even more detailed on the vowels, since it also distinguishes "ey" both as short and long, i.e. "ey" in "get" is written differently than "ey" in "Gate". Likewise there are short and long "oe"s in Kannada, to spell "notice" and "goat" differently.
Coming back to value of Pye, Values of identified consonants are to be put in by the "Sootra"s, which are also embedded in the jpg file. They are -
Kaa-di Nava, i.e. Ka =1, KHa = 2, Ga = 3, GHa = 4, GNa = 5, Cha = 6, ChHa = 7, Ja = 8 and JHa =9
Taa-di Nava, i.e. Ta =1, THa = 2, Da = 3, DHa = 4, NNa = 5, ta = 6, tHa = 7, da = 8 and dHa =9
Paa-di Panchak i.e. Pa =1, PHa = 2, Ba = 3, BHa = 4, Ma = 5
Yaa-dyashtaka i.e. Ya =1, Ra = 2, La = 3, Wa = 4, sha = 5, SHa = 6, Sa = 7, Ha = 8
Ksha-sh Shoonyam i.e. Ksha = 0
So, the sootras provide 4 options each for 1, 2, 3, 4 and 5, three options each for 6, 7, 8, two options for 9 and only one option for zero. Options help to put values into verse form. In
In this shloka for value of Pye, the first line is also an ode to Lord Krishna, as is clear from the mention of Gopi-Bhagya. The second line is ode to Lord Shiva, as can be read from "Gala-Haalaarasam-Dhara", one who wears a serpent around his neck. So, the shloka is both, prayers and value of Pye!!!
From the scientific mode of calculator available on computers the value is
3.1 41 59 26 53 58 97 93 23 84 62 64 33 83 27 95
Value from Shloka as deciphered is -
Go Pee BHaag Ya Ma DHuv Raa Ta SHrun Gi SHo Da DHi San DHi Ga
3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3
KHa La Jee Vi Ta KHaa Taa Va Ga La Haa Laa Ra San DHa Ra
2 3 8 4 6 2 6 4 3 3 8 3 2 7 9 2
In the shloka, the last digit denoted by the letter Ra becomes 2. In the calculator it is 5. All the rest 31 digits are identical.
The point of curiosity is, why did Rushees of Athrva-Veda need such accurate value of Pye to the thirty-second digit? Simple explanation is that they have been great astronomers. Most eminent among them was Maharshi Bhrugu, as acknowledged by none other than Lord Krishna in the tenth chapter in Geetaa. "MaharsheeNNaam Bhruguraham"!! He composed Bhrugu-samhitaa, which is the reference work for all uses of astronomy, most common being in Astrology.
Astronomy is study of Universe, Geography is study of only the Earth. And to get exactitude in the study of astronomy, orbits, spatial positions and velocities of different planets with reference to a fixed reference, the Sun, such value of Pye was needed. How such accurate value was derived is another curiosity. But we know that the mathematics of Indian almanacs gives accurate prediction of eclipses, their exact timings - sparsh-kaala, moksha-kaala and geographical boundaries of areas from where an eclipse would be visible, also whether it will be a whole eclipse, Kha-graasa or partial, Khanda-graasa. The base for all this is Bhrugu-Samhitaa, the sage, who had the grasp of the whole Universe, MaharsheeNNaam Bhruguraham!!
Wednesday, March 11, 2009
In defence of the Tata Nano Part 2
Observe:
You probably haven’t heard of Goggomobil. Goggomobil was car made in Germany from 1955 to 1969. This was the period of time that Germany was still getting on her feet economically, not unlike India today. The Goggomobil was…
all of 9′6″feet long and 4′3″ wide. It had a 15HP engine mounted in the rear (like a VW bug or the Nano) and 10″ wheels. It seated 4 and (unlike the Nano) had 2 windshield wipers. They made 250,000 of them, so someone liked them.Look at this model below. And I mean the car......
This then was the Fiat 500 which was 9′9″ long, 4′4″ wide, and weighed a tiny 1100 pounds. They made 3.6 million of them.Then, of course, you can’t forget the the Subaru 360. Japanese style cute. This was 9′10″ long, and 4′3″ wide. It weighed a whopping 900 lbs. Now, if the Subaru 360 looks like a bit of freak to you, you have willfully chosen to ignore history. This was not some Japanese only oddity. The Subaru 360 was the first car Subaru sold in the US, back in 1968. This is what launched Subaru US. (Consumer Reports said it was a death trap, by the way.)

All of the cars above are smaller than the Tata Nano. None of them are as fast, or as safe. The Subaru is unique in getting better gas mileage (66MPG by US test method).Stop whining about how small the Nano is! It’s not small! It’s not (within its market segment) dangerous. It’s not polluting. Read some history. Read some facts. This......is the car of the future.

In defence of the Tata Nano
Automobiles are one of the single largest things we do. Transportation is a huge slice of the economy. Where roads and bridges can and cannot go is a huge social issue. The design of cities, land use, environmental concerns, tax laws, sustainable wage… all these things are touched and shaped by cars. So cars a pretty good pulse on society.
Enter the Tata Nano.
In case you live in a cave, the Tata company in an Indian super company. It includes 98 companies selling in 85 countries. 20% of global steel production is by Tata. Tata’s dealings make up 3.2% of India’s GDP, making them the de facto majority shareholder of an entire country, much like GE in America.
Despite all that, when Tata announced that their automobile division would make a car for $2500 no one really cared. It was assumed that they would make yet another auto rickshaw. But, Tata had been underestimated. What they produced was not some spindly three-wheeler. It was a real car in every way. Observe the specs:
SOHC 624cc Fuel injected Twin
12″ wheels
4 wheel hydraulic brakes
Meets current India and EU emissions and safety requirements.
So naturally, everyone hated it. Now, I shouldn’t say everyone. We, the middle class never-owned-a-car-before people of India are pretty excited, actually. But people who will never buy one are really upset.The number one complaint: because it is so cheap people who didn’t own cars before will buy them increasing global warming and reducing available fuel supply, raising prices.
Well, thats just plain dumb. People who can afford the Tata Nano are using motorcycles and auto rickshaws. The vast portion of which are fitted with early model 2 cycle engines. World wide, two strokers make up about 5% of the engines. And 32% of the pollution. Replacing wheezing 2 strokes with Nanos reduces emissions.
Number two complaint: its not safe.
Again, just plain dumb. Nothing is 100% safe. Life is risk. Successful life is risk management. Yes, driving a Tata Nano is not as safe as hiding in bunker. Who cares? The people who are buying Nanos are people who were driving motorcycles previously. They are safer in Nanos than on motorcycles. Again net reduction in problems. They also meet EU standards. Since pollution is based on parts per million of pollutants rather than pollutants per car, even that doesn’t tell the whole story. A Tata Nano puts out significantly less pollution per car than say.....a Volkswagen Golf, because the Tato has a significantly smaller engine of approximately the same efficiency per cc.
Third complaint: They will reduce global fuel supply. *sigh* Ok, there might be some truth in this, but I just can’t get my underwear in bunch about it. As long as SUV s are the preferred form of transportation in the US, I don’t think anyone in the US has right to complain about a 12′ long car that gets over 50 MPG.
Fourth complaint: No, I’m not joking. People really complain about this: the wheels are too small. This is too is very dumb. To this issue and all the above I raise the issue of the kei car. Kei cars are a special legal qualification of cars in Japan. If a car meets certain kei car guidelines it can be sold as a kei car, saving both the purchaser and the producer a bundle of money. The requirements are 11′ feet long, 4.5′ wide, 6.5″ tall (they make kei spec vans and four by fours as well, hence the generous height) and a 650cc engines. In one form or another the Japanese have been making kei cars for more than 50 years. As of 2004, they were making 2 million of them a year. Many a kei jidosha (light car) has the similar features to the Nano.
So why has the Nano raised such ire in a country it can’t even be sold in?
Here’s the human issue that the first paragraph eluded to: though people complain that they shouldn’t be sold because they are unsafe, I never here this argument about motorcycles and bicycles, which offer no protection what-so-ever in a crash. So there must be an underlying emotional reason that people feel they are unsafe. I think people have an emotional need to drive a very large gas guzzling car. The existence of people who don’t have that need offends them, so they invent data (which is wrong) that says those people shouldn’t be allowed to buy the car.
The person who drives a car purely out of regard for safety and makes the majority of their other decisions out of a sense of what is safe, is leading a small boring life. Relationships consist of risk. People who take no risks have no relationships. So these people end up pretty unfulfilled. When they see people taking risks and getting more enjoyment out of their life, it really pisses them off, so they try and legislate any risks others might want to take about of existence.