Thursday, January 29, 2004

User Friendly

Check this comic out...

And incase you're interested subscribe to its RSS (RDF) feed to automatically get your daily dose...

Sunday, January 25, 2004

Characteristics of good devs

Totally subjective. Not like it's something written by someone famous either. But I liked some points. Your thoughts?

There are two other pdf's on his site. I haven't gone through them yet, but they look interesting...

Sunday, January 18, 2004

I-nodes (index-nodes)

i-nodes is the method in which the linux filesystem is implemented. i am refering to a book - modern operating systems by andrew s. tanenbaum for this blog.

files, directories etc are stored on the hard disk. a method has to be devised so as to know which file is stored in which block(s) of the hdd. additional info like permissions, file attributes etc might also be stored. in linux this is stored in the form of i-nodes. an i-node is basically a pointer.

|------------------------------------------------~ ~--------|
| boot0 | super1 | inodes.... | data blocks.. |
|------------------------------------------------~ ~--------|

this is an image of a hdd. block0 is the boot. block 1 contains critical info about the file system like no of i-nodes, no of disk blocks etc. then there is a section where i-node data-structures are stored and then the actual data blocks start till the end of the partition. each i-node entry can be identified by a unique number, like 1,34,671 etc. this number can be used to locate the actual stored i-node data structure on the hdd.

now each file/directory has one inode associated with it. you can $>ls -i to see inode numbers for individual files/directories.i'll cover file attributes later.firstly how to locate a file using absolute or relative paths.
consider an absolute path like /usr/home/blog.txt first the os will find the i-node for /. the listing for the / dir i-node number will contain an entry for the /usr dir. the os can transverse down one level. inside the i-node entry for /usr, the entry for the blog.txt i-node will be present. that i-node will contain the block on the hdd where the file is stored. thus th os can access the file.
for relative paths the dot(.) and two dots(..) operators come into play. the . stands for current dir and .. stands for parent dir. so if you want to access a file like ../home/blog.txt when you are currently in /usr/shop, the first i-node obtained is .., or parent of /usr/shop which is /usr. inside this i-node listing it is possible to find the home dir, and then move lower to the blog.txt file.

more on the i-node data structure. it contains the following info - mode, link count, uid, gid, file size, times, addr of first 10 disk blocks, single indirect block, double and triple indirect blocks.
mode is the file permissions which are read, write and execute,set for user, group and others.
link count is the number of links to a file. if 0 links exist and the file is deleted then the file is removed. can hrishi/dinesh explain on soft/hard links coz i am a bit confused on this.
uid, gid are user id and group id.
times are file creation times.
indirect blocks exist for large files which span many hdd blocks. so a single indirect block can point to more actual block addresses. a double indirect block will point to many single indirect block, hence larger files can be stored. and a triple indirect block references to nuber of double indirect block forming a tree structure. normally triple indirect blocks are sufficient for very large files. i do not know whats the maximum capacity though.

in ms-dos, a linked list allocation using indices is used for the file sys organisation. however the entire table must be in memory to work.

Friday, January 16, 2004

Keeping volume steady

So, as you've noticed the last few posts have been really just pointers to articles rather than something I have written myself. A lot of times, we don't really have a lot of time to actually write stuff ourselves. In those situations, to keep the volume of the blog going and also to keep it fresh, post links to some articles you've read that you liked and think we would be interested in - something topical. That in itself will/should start some discussion.

Also, Hrishi and Dinesh post some stuff! This is turning into a two man band ;-)


Another one from The Economist (this is a freakn good mag), on bugs/testing/code culture etc...

Yeah I know I'm going a bit overboard here with links, but it's all good stuff :-)

Proving programs - have you heard of this? I have not been able to figure this one out. I had a course where we dabled a bit in this, but nothing got through. Dyou guys have any clue on how a program is proved?

Right now, software is only tested, not proved. The difference, I guess, is that testing can only handle a limited set of cases/paths, but when you prove something it's for every case. But the process is still a mystery to me. I can't visualize it in my mind.

Re: What goes around comes around

I hope it is not just a bubble like the ".com" era that will burst in the coming few years. What then will India do? And China is always a looming threat. When you can get it for x percent cheaper in China, why not go there?

the indian economy is certainly very hyped nowadays. the markets are at their highest ever levels, and everyone is bullish. every second day there are articles of india becoming a super prower in 20 years or so. a large section of the indian population still lives under the poverty line, and the economic divide is getting ever greater. many people are hoping that the money with the middle/upper class will trickle down to lawer sections. there are many issues like corruption in government and caste/religion poitics. many things are going great nowadays, but there is a long way to go.
another fad here, (and rightly) is comparison with china. this question is asked everywhere always. but somehow i do not think china is all that great. they have major social problems, communist roots. there was talk here of chinese goods flooding the indian market, destroying local co's. everything from motor bikes to bulbs. the goods came, and were discarded. the goods were cheap but of highly inferior quality. what about in america? so in the end india has to do a lot but if it can maintain a price vs quality ratio, then things should be fine. already we hear news of india becoming a auto-components hub. there are few more examples, but the number is slowly improving.

But from what I've read, it seems that the jobs being outsourced are not the greatest jobs in the world. It seems that it is the more repetitive manual labor that is getting pushed to India.

true that a lot of labour intensive jobs are being switched. but those jobs also go to some indians. many people i know are working in call centers. and earn as much or even more as engineers in general co's. so in the end its great. personally i would consider it a failure if i have to work in a call-center after all these years of education. but again something is better than sitting at home.

And it is not the case that companies over here are completely moving offshore. Part of their IT deparment might have shifted, but they still have local devs.

i doubt if you will ever have a complete shift of jobs. only parts will be outsourced. the question is major or minor parts.

i read an article quite some time back. it explained how there was a time when shifting of ic component manufacturing to east asia was something like the current indian case of outsourcing. co's were very shy of declaring that korean co's were manufacturing a low costs. finally the industry accepted it and co's which were not using foreign chips were at a downside. a similar thing might happen with outsourcing. it needs time to mature and gain acceptance.

The many faces of GC

Interesting to see that allocation of an object in .NET/Java is FASTER than in C/C++! Infact, since it's just incrementing of a pointer, it is probably as fast as a stack allocation. Deallocation, of course, is another story ;-)

I like how Java is not really associated with any particular GC scheme. This is good design - a proper componentized system.

The article talks about .NET only having one GC implementation. But that is not really true. The framework actually comes in two flavors... a workstation version and a server version. They have different goals in that the workstation version is more optimized for response-time whereas the server version is more concerned with throughput and also takes multiple processors into account. Similarly, the .NET Compact framework most probably has a different GC implementation customized to suit smaller memories. Also, different third party implementors like Mono are free to use whatever GC scheme they want, just like the different JVM implementations.

Localization of Software

Good article on The Economist.

I read a while back about some Scandanavian country with a relatively low population protesting about Microsoft not offering Office in a localized version. Eventually, Microsoft gave in and agreed to put out a version in their language. I feel eventually, as more and more people start using software around the world, ALL software will have to be localized. Right now, no one really pays much attention to it. English is sort of the default language when it comes to anything to do with computers. But as computer use grows, so will the importance of language.

What do you think of this?

Sunday, January 11, 2004

Re: What goes around comes around

The Indian economy as you say is really booming and rightly there is a very optimistic atmosphere everywhere. But, how long do you think it will last? I hope it is not just a bubble like the ".com" era that will burst in the coming few years. What then will India do? And China is always a looming threat. When you can get it for x percent cheaper in China, why not go there? It might even get to the point sometime in the future where India outsources to China!

The job scene here for the IT industry is looking quite bleak. And the tech guys are not happy. I constantly see angry posts on message boards about all the jobs going to India. I've read them as far back as 2001. It wasn't as common then, but now it is quite widespread. Back then, it was mostly complaints about tech support - How the accents were affecting communication. Now, they are training Indians to talk in an American accent and even written communication is being "Americanized".

From a personal perspective, I look at myself as very much an Indian and think from an Indian point of view. From this regard, I am quite pleased with what has happened. India (and other developing countries) are finally getting their day in the sun. I agree totally with what Rahul said about how the third world countries have been affected by globalization in a negative way. The farmers in the richer countries are compensated regardless of how well their crop does. The government makes it happen - so naturally they have more power than the other developing nation farmers. It seems that when globalization is affecting them in a positive way, its great, but when the tide turns, they start to complain. The developing nations have complained as well, but since the developed nations have more power, they will do something about it... Like the US has reduced the number of H1B's.

But from what I've read, it seems that the jobs being outsourced are not the greatest jobs in the world. It seems that it is the more repetitive manual labor that is getting pushed to India. Of course this is a generalization, but that is the impression I get. The call center phenomenon for example. Would you really consider working there? It is essentially tele marketing. Even medical transcriptions etc... not very "intellectually stimulating" work. The IT jobs too - they are mostly tech support. And it is not the case that companies over here are completely moving offshore. Part of their IT deparment might have shifted, but they still have local devs. Correct me if I am wrong. This is just a feel I am getting.

What is going to happen is the salaries over here is going to go down. Obvisously, not to the level of the comparable Indian rates. But relatively they will definitely come down. It has already started to happen. The IT proffession will not look as glamorous as before. It will be harder to get jobs, but that's the way it is. That's what globalization does.

My 2 cents.

India Day

I'm sure you've heard about this. It is most probably being televised in the Indian media. Anyway, there are some good webcasts at their site. One particularly good one was one with Mukesh Ambani and a Harvard Prof (forget his name). Check it out in case you haven't already.

Friday, January 09, 2004

java on a microcontroller

dinesh and i are working on a project in barc. the project is basically programming a 8051 microcontroller dervivative to first store data from various digital detector devices and then transmit that data at periodic intervals to a central station. many such kits are installed all over the country, and regularly collect important data. the chip should be able to send the data either over phone lines (like normal dial up), or ethernet (a v-sat link), or GSM (mobile communication), or internet (dial up to an isp).

as the project goes on i'll try to keep you updated.

for now i'll speak about the heart of the project, the microcontroller. we are using DS80c400, from dallas semiconductors. see this is a very advanced chip. it has serial ports, an ethernet port, a can bus(more on this later) for connectivity. the chip has 1mb ram, and 1 mb flash rom, a real time clock, and a tcp/ip stack along with a mac address and support for ipv6. also the chip can be programmed in assembly, C, or my favourite java.

the chip has a tcp/ip stack. so after we give it an ip address, we can actually start an ftp or telnet server on the chip. the chip supports *nix style commands like adduser, rm, ls, df, etc. and the superuser is root. so basically you can remote login to the chip and then transfer files or issue commands to the shell. there are two processes running always. a init process and a second java GC ie garbage collector.

that brings me to java. this chip can be programmed in java, but not any crappy restricted api. but the j2se. you cannot (obviously) run graphics stuff like swing,awt. but it can handle networking, threading, io(also file) other than the basic lang and util stuff. we have conected the chip, actually motherboard to the local network hub by rj45 cable and assigned an ip add. java files are then written and compiled on a seperate pc. these are then converted to a .tini file. tini is actually a java based propriety framework by dallas semiconductors. it packages all the necessary .class files and adds some more info. this tini file just has to be transferred by ftp. next java the .tini file. thats all. in normal java apps, the jvm executes the class file and the garbage collector is actually just a daemon thread. but in this implementation, the gc is a seperate process. you can read more on tini on the dallas site(which even i have to).

so far we have implemented a test server. we start a ServerSocket like in an earlier blog and wait for connections. then the incoming Socket input stream is read (which should be from central station). this will be some command, like say provide current chip time. then the Server returns the appropriate message or error.

some more links

Saturday, January 03, 2004

Linux fundamentals

the source for this and future continuing blogs is the lpi certification tutorial series by daniel robbins on ibm developerworks. daniel robbins happens to be the creator of gentoo linux, a distro i have mentioned earlier.

we'll start of with some basic bash commands.
bash is a shell, an acronym for "Bourne-again shell". there are many shells like csh, tsh .. to know which shell yu're on type
$ echo $SHELL
output will be like /bin/bash
in the above eg., $ is the prompt and $SHELL is an environment variable. for the root user the # is the prompt.
you can $ exit to logout.

this like in win means change directory. the path can be relative (/usr/bin) or absolute (../java/bin).
the tilde ~ character signifies the current users home directory. so if i say
$ cd ~
i go to my home directory. this can be displayed be an env variable $HOME.

this command displays the present working directory.
$ pwd

this command is equivalent to dir. it has many imp options.

files in the specified directory will be displayed.
$ ls /usr
X11R6 doc lib man sbin
bin include portage share tmp

By specifying the -a option, you can see all of the files in a directory, including hidden files those that begin with . As you can see in the following example, ls -a reveals the . and .. special directory links:
$ ls -a
. bin include share tmp
.. distfiles local src X11R6

here .hide.txt was a hidden file. any file which starts with a . is a hidden file. similarly a file name ending with a ~ is a backup file.

for a more verbose listing use the -l option
$ ls -l /usr
drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6
drwxr-xr-x 2 root root 14576 Dec 27 08:56 bin
drwxr-xr-x 2 root root 8856 Dec 26 12:47 distfiles
lrwxrwxrwx 1 root root 9 Dec 22 20:57 doc -> share/doc

the first column displays permissions information for each item in the listing. that i'll explain later. the next column lists the number of links to each filesystem object, which i'll explain with inodes and/or linking. the third and fourth columns list the owner and group, respectively. the fifth column lists the object size. the sixth column is the "last modified" time or "mtime" of the object. the last column is the object's name. If the file is a symbolic link, you'll see a trailing -> and the path to which the symbolic link points.

and you can always combine options like
$ ls -la /

Finally, the -i ls option can be used to display the inode numbers of the filesystem objects in the listing:
$ ls -i /usr
1409 X11R6 314258 i686-linux
43090 libexec 13394 sbin
inodes i'll have to cover later

similar to dir, for making directories
$mkdir newdir

this command is used to update the modifies time of a file. if the file does not exist then a blank file is created
$ touch britney
this will create a file called britney if it does not exist. this command can be used in a case where i want to fool the compiler to compile a source file evennthough it has not been changed.

the echo command, which takes its arguments and prints them to standard output.
$ echo "firstfile"

echo and redirection
Now, the same echo command with output redirection:
$ echo "firstfile" > copyme
the > command redirects the output from the std output to a file, copyme in this case. there are other redirections also like < for acting as a source rather than the std input.
$ cat < src > dest
the above command will copy the contents of a file src to dest.

cat and cp
to display the contents of the file on the terminal, use the cat command:
$ cat copyme
now, we can use a basic invocation of the cp command to create a copiedme file from the original copyme file:
$ cp copyme copiedme
on investigation, we find that they are truly separate files; their inode numbers are
$ ls -i copyme copiedme
648284 copiedme 650704 copyme

use the mv command to rename "copiedme" to "movedme". the inode number will remain the same; however, the filename that points to the inode will change.
$ mv copiedme movedme
$ ls -i movedme
648284 movedme
a moved file's inode number will remain the same as long as the destination file resides on the same filesystem as the source file. the same filesystem as the source file.

Friday, January 02, 2004

Re: why linux??

Best part was the "we are programmers" bit. I think that is the greatest thing about Linux/Unix. It makes you learn a lot about details. With Windows, everything is "clean". You just have to get used to the UI.

And I have the same feeling when I use the cmd line to compile something. I feel high and mighty for a few mins. Then I go back to being a loser using the UI.

Keep the Linux blogs coming.

why linux??

mohn wrote to me some time back saying that he was somehow not motivated enough to spend time learning linux. so here are a few reasons i feel really attracted to this os.

open/free source
i am not sure how to earn money developing open/free source. but i certainly use a lot of such projects. even in java i use a lot(almost everything i use) of open software. i really love the concept of open source software(oss) of sharing knowledge. the community develops and shares. rapid bug removal, better security..

we are programmers
as a prog i would like to learn a lot on computers/software. not only a particular language but more on the overall working. linux is not the easiest os. and you inherently end up learning different things on the os. things we take for granted in windows are more apparent in linux. and as prog i guess we get more interested to explore more. take for instance the boot process, services, file systems, .. the list is endless. personally i have learnt a lot on how the os works, but the todo part is more than enough for a life-time. we might not end up being kernel guru's but can still learn a lot. also if you read books on os'es like how processes work, simply open a c file to see the actual implementaion yourself.

i don't know if i should call this a merit. there is so much choice, right from a distro, to a file-sys, to a window manager, to browsers, and every type of app. i found it really overwhelming. i somehow settled on a particular set of apps on red hat and will soon shift to (try to) gentoo. so that should keep me busy.

shell, command-line
everything in linux was made to work on the shell. you can always do a job clicking on a gui. but seriously,.. working on a shell gives me a major high. makes me feel like a real prog. you discover a lot of command line applications, and compiling a kernel should be a good ego booster.

so if you want more eureka moments in your life... learn linux.

if any of you are not motivated enough, send me travelling fare to come there and kick your ???. {read a 3 letter word) (regular expression joke).

i'll try to cover some basic topics from next time. you guys should obviously join in.

Re: Assemblies and Metadata 2

what are the advantages of having assemblies and metadata?

what i noticed was..
assemblies help create a single file for a number of classes. unlike java where only one class can be defined in a file. i need to create a jar package to better distribute my files.

metadata is going to be introduced in the next version of java 1.5 code name tiger later this year. how does metadata help? mohn said that method signatures properties can be exposed. but can't that be done by simple reflection? there are ways of setting permissions etc as well in java but i do not how.

also mohn spoke of how i can have very efficient version control by configuration files. simply update a file and change the version number, and similarly in the metadata of the calling code. but who is allowed to change whether a new version of a file is to be used. such power in a users hand can be awkward. or how else do you upgrade a part of an app? new blog on config files.!!

Re: What goes around comes around

firstly.. happy new to all of you guys..

thank god we are on the receiving end of the job flow. outsourcing has become a major issue right now. here in india we regularly here of X co shifting thousands of jobs etc. not only call centers but major software companies like ibm, intel, accenture, ms.. of late even jobs like accounting, and other such tasks. one article (maybe on slashdot) rightly said that india will become the back-office of the world, like china has become the manufacturing hub.

the indian economy is booming as never before. the forex reserves are at an all time high. and everyone everywhere is bullish. we've had a great monsoon and even the manufacturing sector is growing.

what do you guys feel about outsourcing? our economy and india in the future? how much is hype and what do you really see happening? i wanted to ask mohn, how bad is the job scene really in the u.s. is it mainly because of the slow economy, plus the burn of loosing more jobs, to cheap india labour?

actually like the article said, globalisation/ free trade make this happen. we in the third world countries have always been affected by so called free trade. the developed countries simply dump all their extra produce destroying local economies. agriculture is one such area. the us and other countries provide heavy subsidies to their farmers while doing so is actually illegal under wto in a way i do not feel bad that a few jobs are lost abroad. its just that everything has to happen smoothly so that there is no backlash. and we indians have to be aware of competition. countries like china are catching up. like we are in manufacturing. our companies will have to always keep up in quality as well as cost.

we still have to improve in many areas. infrasturcture and government control are high on the list. lots of development work is going on and the recent advances in some sectors like telecom are excellent.

times are going to change for the good. super power no, but major power for sure.

Thursday, January 01, 2004

What goes around comes around

Came across this on a message board...

Written by George Monbiot, Tuesday October 21, 2003 and appeared in British Press

If you live in a rich nation in the English-speaking world, and most of your work involves a computer or a telephone, don't expect to have a job in five years' time. Almost every large company which relies upon remote transactions is starting to dump its workers and hire a cheaper labour force overseas. All those concerned about economic justice and the distribution of wealth at home should despair. All those concerned about global justice and the distribution of wealth around the world should rejoice. As we are, by and large, the same people, we have a problem.

Britain's industrialization was secured by destroying the manufacturing capacity of India. In 1699, the British government banned the import of woolen cloth from Ireland, and in 1700 the import of cotton cloth (or calico) from India. Both products were forbidden because they were superior to our own. As the industrial revolution was built on the textiles industry, we could not have achieved our global economic dominance if we had let them in. Throughout the late 18th and 19th centuries, India was forced to supply raw materials to Britain's manufacturers, but forbidden to produce competing finished products. We are rich because the Indians are poor.

Now the jobs we stole 200 years ago are returning to India. Last week the Guardian revealed that the National Rail Enquiries service is likely to move to Bangalore, in south-west India. Two days later, the HSBC bank announced that it was cutting 4,000 customer service jobs in Britain and shifting them to Asia. BT, British Airways, Lloyds TSB, Prudential, Standard Chartered, Norwich Union, BUPA, Reuters, Abbey National and PowerGen have already begun to move their call centres to India. The British workers at the end of the line are approaching the end of the line.

There is a profound historical irony here. Indian workers can outcompete British workers today because Britain smashed their ability to compete in the past. Having destroyed India's own industries, the East India Company and the colonial authorities obliged its people to speak our language, adopt our working practices and surrender their labour to multinational corporations. Workers in call centres in Germany and Holland are less vulnerable than ours, as Germany and Holland were less successful colonists, with the result that fewer people in the poor world now speak their languages.

The impact on British workers will be devastating. Service jobs of the kind now being exported were supposed to make up for the loss of employment in the manufacturing industries which disappeared overseas in the 1980s and 1990s. The government handed out grants for cybersweatshops in places whose industrial workforce had been crushed by the closure of mines, shipyards and steelworks. But the companies running the call centres appear to have been testing their systems at government expense before exporting them somewhere cheaper.

It is not hard to see why most of them have chosen India. The wages of workers in the service and technology industries there are roughly one tenth of those of workers in the same sectors over here. Standards of education are high, and almost all educated Indians speak English. While British workers will take call-centre jobs only when they have no choice, Indian workers see them as glamorous. One technical support company in Bangalore recently advertised 800 jobs. It received 87,000 applications. British call centres moving to India can choose the most charming, patient, biddable, intelligent workers the labour market has to offer.

There is nothing new about multinational corporations forcing workers in distant parts of the world to undercut each other. What is new is the extent to which the labour forces of the poor nations are also beginning to threaten the security of our middle classes. In August, the Evening Standard came across some leaked consultancy documents suggesting that at least 30,000 executive positions in Britain's finance and insurance industries are likely to be transferred to India over the next five years. In the same month, the American consultants Forrester Research predicted that the US will lose 3.3 million white-collar jobs between now and 2015. Most of them will go to India.

Just over half of these are menial "back office" jobs, such as taking calls and typing up data. The rest belong to managers, accountants, underwriters, computer programmers, IT consultants, biotechnicians, architects, designers and corporate lawyers. For the first time in history, the professional classes of Britain and America find themselves in direct competition with the professional classes of another nation. Over the next few years, we can expect to encounter a lot less enthusiasm for free trade and globalization in the parties and the newspapers which represent them. Free trade is fine, as long as it affects someone else's job.

So a historical restitution appears to be taking place, as hundreds of thousands of jobs, many of them good ones, flee to the economy we ruined. Low as the wages for these positions are by comparison to our own, they are generally much higher than those offered by domestic employers. A new middle class is developing in cities previously dominated by caste. Its spending will stimulate the economy, which in turn may lead to higher wages and improved conditions of employment. The corporations, of course, will then flee to a cheaper country, but not before they have left some of their money behind. According to the consultants NASSCOM and McKinsey, India - which is always short of foreign exchange - will be earning some $17bn a year from outsourced jobs by 2008.

On the other hand, the most vulnerable communities in Britain are losing the jobs which were supposed to have rescued them. Almost two-thirds of call-centre workers are women, so the disadvantaged sex will slip still further behind. As jobs become less secure, multinational corporations will be able to demand ever harsher conditions of employment in an industry which is already one of the most exploitative in Britain. At the same time, extending the practices of their colonial predecessors, they will oblige their Indian workers to mimic not only our working methods, but also our accents, our tastes and our enthusiasms, in order to persuade customers in Britain that they are talking to someone down the road. The most marketable skill in India today is the ability to abandon your identity and slip into someone else's.

So is the flight to India a good thing or a bad thing? The only reasonable answer is both. The benefits do not cancel out the harm. They exist, and have to exist, side by side. This is the reality of the world order Britain established, and which is sustained by the heirs to the East India Company, the multinational corporations. The corporations operate only in their own interests. Sometimes these interests will coincide with those of a disadvantaged group, but only by disadvantaging another.

For centuries, we have permitted ourselves to ignore the extent to which our welfare is dependent on the denial of other people's. We begin to understand the implications of the system we have created only when it turns against ourselves.

Moderator comment: This is an article which I think is worth circulating among all of us for the following reasons :

It deals with a topic that is affecting the lives of millions of us - for the first time ever, Indians in cities like Bangalore are taking over white collar jobs from those in Britain and USA. It deals with this topic in a very objective, and humorous, way. It has been written by an Englishman who is himself in danger of losing his job, yet he does not allow his position or nationality to blind him to historical as well as current realities. Most important, it draws our attention to changes that are taking place in the world which may have far-reaching consequences.

So far, globalization has meant breaking down barriers to the transport of goods across national boundaries. But if goods can travel freely, why not human beings? So many of the inequities in our societies arise because of the differences in wage structures in different parts of the world, and the trend this article deals with is a consequence of that difference. But sooner or later people are going to ask - why have these differences at all? Why not allow free travel all over the world? Who gains by the elaborate visa and passport systems we have introduced? Only those in power have a vested interest in maintaining these barriers, in perpetuating the compartments into which we divide ourselves. So a time may come when Marx's famous slogan, "Workers of all nations, unite, you have nothing to lose but your chains!" (this slogan is just about totally forgotten even in the Communist countries these days!!) will be replaced by "Peoples of all nations, unite! You have nothing to lose but your governments!"

I hope you will enjoy the article as much as I did.

The jobs Britain stole from the Asian subcontinent 200 years ago are now being returned