Later as you start to get it, research the proper ways to do thing. Don't start worrying about 'proper' form initially unless u wanna go back to college. Just hack stuff for entertainment with only an hour a day you could do some stuff.
Seriously?!? You need to know the proper ways to do stuff, because you will never be a lone coder in the real world. You need to understand other people's code, and they need to understand yours. Which means learning the standards and doing things right. Bad habits stick....
Scripting languages (like PHP and Python) rely on enormous libraries. These can take a long time to learn, and learn well. They also tend to be moving targets.
Libraries only become necessary when you want to do something that relies on them. If you're learning "to program" rather than learning "to program Python", you won't need to learn all the libraries. The core language is pretty flexible, and I'm already doing some very interesting stuff with it, using only 2 library functions (Math.floor and random.random).
String processing and list processing don't require libraries, so compared to many (non-scripting) languages, the libraries are far less of a concern....
I must commend you on your charitable work. You would do it in your own time, but you do it in someone else's time, because you can. How magnanimous of you.
I've been a lapsed coder too, and I wouldn't say it shows lack of love. People get distracted. People let themselves get distracted. Heck, who among us can really be claiming to "do what we love"? I spent years suffering in corporate IT and studying part-time to get out of it. I let myself ignore the things that made me really happy -- people, places, travel, physical activity, and yes: even coding.
If the marketability of your skillsets is your primary concern, learning languages like PHP, Java, Javascript, or C# is clearly the best way to go. I sure wouldn't want a language like Ruby or Python to be the only one I am proficient with.
But the OP isn't looking for a single language for marketability. He said himself that he's looking to hone his chops and get back into programming after a hiatus:
My question to you all is, what language should I start with, to learn and get back into the principles of programming, that will help me build a personal portfolio, but will also lend to learning other languages?
He's looking for a "gateway" drug of a language, and Python fits the bill perfectly. You get to noodle with some of the more advanced concepts in computing without fighting with many of the more eccentric features of some of the languages you mentioned.
Python has whitespace issues, I disagree one should learn that first. Until Python can mature and use curly braces ({,}) or even Pascal/Ada style Begin and End for block indications rather than whitespace indentation, I cannot recommend Python.
Everything in Python was done for a reason, and mostly that reason was readability. However much it bugs me that I have to manually correct the indentation in IDLE if I copy and paste a code block (admittedly bad practice, but often required), I always remind myself that it's there to stop me being lazy and writing something that gets confused further down the line.
Beginning and end delimiters are designed for ease of computer processing, but humans aren't that good at processing them -- we're not stack machines! It's a normal C convention to indent like Python for this very reason -- debugging and maintaining other people's code is hard if incorrect indentation causes us to misread the flow control. But because it's convention rather than syntax, it never gets done, and productivity is lost.
Yes, it bugs me that heavily structured code ends up filling loads of columns, and it may not be "idiomatic", but that's my best way of reducing the overhead due to multiple nested function calls (come on guys, what's wrong with macros??).
I'd be all for a flexible programming language that isn't human readable until it's being viewed in a dedicated editor, but as long as code's in plaintext, Python's doing things the right way, in my book.
It's easy, it's fun, and it's versatile. It would be useful to all of the field you mentioned and would also be useful for scripting if you do end up going back to IT.
Seconded. I've just left a career in IT (a longer one than the OP) and even though I was heading for education, somewhere along the way, I decided to start coding again (I'm trying to develop learning software to use for better homework tasks, and managing classwork). I hadn't really been planning on picking up Python, but a couple of things pushed me that way -- one was that I started looking at Natural Language Processing (and the NLTK for Python is pretty comprehensive, as well as free) and the other was that I started doing a MOOC course on web app development which was based around Python.
What I found once I started was that Python made all the concepts I'd previously learned in university with C very, very easy. By lifting the difficulty out of handling strings, lists and other not-complicated-but-not-elementary datastructures, it let me focus on the "bigger picture" of process and task design.
So in the end, whether I deploy my apps online using a Python-based server or I rewrite them to another language based on the Python prototype, the end result would not be possible without Python.
There are a couple of things that bug me about the language (there's no language without its quirks) but so far I believe its a damn good option for the returning lapsed programmer.
And you've proved yourself a small-minded racist bigot, by being well and truly wrong. The continuous tense thing is often charicatured, but very few charicatures get it right, coming out with ungrammatical[1] nonsense such as "I am thinking you are being right". There are certain verb classes that go into the continuous in certain grammatical situations, but not all. This is to do with which verbs classes have a non-continuous present meaning. Consider that having in phrases such as "I am having" in English always means eating, drinking or otherwise experiencing, but never possessing or owning. As far as I recall, this still holds true in Indian English. Going back to my earlier example (I am thinking you are being right): the "you are being" thing never occurs because the verb "to be" occurs as present in the Indic languages (it's what the progressive aspect is built on, after all) and I believe that the "I am thinking" thing is wrong as well, because the "thinking" here is a belief (and most languages use the word "believe", not "think") and not something that's liable to change in the immediate future. "I am thinking" in English is used when we're discussing a current process of consideration that we expect to end soon. (eg I am thinking of going to the shop -- I'll either decide to go or not, and the thinking is finished.) I don't believe a Hindi speaker would ever describe their settled beliefs as transitory, and therefore would never use the progressive in either Hindi or English to express it. The same phenomenon occurs in the Goidelic language family, although Scottish Gaelic has recently developed a tendency to use the continuous aspect where it probably shouldn't be.
And no, it's not rocket science, it's linguistics, which is something I'd put good money on you never having studied. I haven't studied Indian English in any depth since 2005, so you'll have to excuse any minor inaccuracies in my description.
[1] "ungrammatical" here refers to it being against the rules of grammar of Indian English.
You forgot the quotation marks around English. As in: "so 'English' is the standard in business and technology.".
Because, let's face it, the English spoken/written in India is a pretty simplified version of the actual thing.
What do you mean, simplified? If it's so simple, you try speaking it.
Just because something is different doesn't mean it is simplified. There are rules and structures that have been borrowed in from the Indic languages (the indo-european languages spoken in the north) and there are rules and structures that they learned from pre-Victorian school books. It's actually a fascinating dialect/language to study. I used to be able to speak it, but I can't any more.
Part of the Empire? India was part of the thuggish, cretan British Empire for around 200 or so years.
Hold on a minute, please don't assume that I'm a fan of my country's imperial past. I'm not.
It was Bharat for a bit longer than that (a few thousand at least). Hindustani is the official language of India as codified in the constitution (http://en.wikipedia.org/wiki/Hindi-Urdu#Official_status). Hindustani is actually a mix of Hindi and Urdu. I suggest you read more before you comment on something you know shit about.
Well I'm guessing you're from the north, because there are plenty of speakers of Dravidian languages who would take issue with you. The official status, as explained in the article, is as the language of the federal government and half of India wants that to mean exactly what it says. Hindi is not "their" language and they're happier speaking English with other Indians as a neutral language. Here's an experiment for you: hop in an auto in Thiruvanathapuram and speak to the driver in Hindi. Then, at your destination, hop in another and speak to the driver in English. Tell me which works better for you.
And you're unlikely to find much discussion on the finer points of any programming language in any language other than English. That's just a retarded remark to begin with considering that English is the lingua franca of the planet.
Go back to school and learn something. Idiot.
Well considering that was part of my point, there's no need to insult me about it.
But the situation is different in India from other countries because English is so common. If you go into a book shop in most countries, you'll find a lot of programming books in the local language. The last time I visited Landmark in the Forum (Bangalore), I don't recall seeing any programming books in anything other than English. For that matter, I went to the spoken languages section too, and as far as I recall, the only books in Kannada were to learn Hindi or English, and the only books in Hindi taught English or Kannada....
Now why don't you go back to school and learn some manners!
Well, Mexico is a major trading partner to the US, and certain parts of South America are to Spain what the Phillippines and India are to the US and the UK -- the main source of shared-language off-shore workers. And because they are mostly genuinely native Spanish speakers (as opposed to the various Indians and Phillipinians with various native languages) the whole off-shoring should be much smoother there.
The big advantage in Spanish in an English-speaking country would have to be the potential to bridge two different off-shore operations. I'm thinking mostly of when (for example) a multinational buys out another multinational, and tries to integrate the two corporate structures into one.
And there is no such thing as "effortless" language learning.
...yet. But it's something that a lot of people are already working on. Computer games are fun because we're constantly learning. Computer games are boring when we're not learning enough, and they're frustrating when they expect us to learn too fast. Therefore we can conclude that the problems in education are all about pacing and difficulty. All learning can be effortless, and when teachers start listening to science, they'll start approaching that effortlessness (although probably asymptotally.)
But when labour costs start to rise in China where is the next place that the big multi-nationals will seek to keep their cost base as low as possible? If you can determine that and then learn the local language then you could reap big rewards when the off-shoring goes there.
This is an excellent point. The real money is in handover, and that's mostly done for all the established off-shoring locations. If you ready to do a handover in the next big location, you have a chance.
But you'll be hard pushed to assess that yourself, so it'll take a hell of a lot of reading and a hell of a lot of luck to achieve it.
The other option is to look at it not in terms of a single big outsourcing market, but to look for parallel outsourcing markets. At the moment there are two major outsourcing markets: English-speaking and Spanish-speaking. I think the next big opportunity is for those who are in a position to act as a "bridge" between the two operations when companies try to integrate them. Who's going to get India and the Philippines talking to Bolivia and Peru? Maybe it'll be you....
The major language in India is English (it was a part of the Empire for a very long time). While many try to push Hindi, it is not truly "national", so English is the standard in business and technology. You're unlikely to find much discussion of the finer points of Python list comprehensions in Hindi....
Yes, but we're talking about the API, not the software. There are hundreds of formerly-useful websites out there that ran on a now-withdrawn API. I always used to love using "GoogleFight" to compare the relative frequency of two phrases, but the old API is gone, even though Google is still going, (and other Google APIs are still in operation) and GoogleFight no longer does anything. For a quick reference as a language learner, comparing Google figures was invaluable.
The "authorities"? I thought the police department's motto was "to protect and to serve". They are not authorities. They are certainly not judge, jury and executioner. Visiting multi-volt torture on someone already under their control who hasn't even committed any criminal act is just not cricket....
Are you telling me you don't take any deductions or credits? No standard deduction? Do you pay a use tax in your state for all the online purchases you made and did not pay sales tax on?
Are you telling me you're not aware that there's a world outside your borders?
In my country, I get tax deducted automatically from my salary. My "sales tax" is applied automatically, and if I buy mail order from another member state of the European Union, I pay their equivalent tax. If I import from outwith the EU, customs check my package and bill me for the import duty. Some companies will lie on the customs label and I don't get charged, or sometimes the customs themselves don't bother (presumably because they're too busy to process everything fully and restrict themselves to high-value items. No, I don't go back to customs to correct the mistake. I've never even checked whether it's possible to do so. But I never seek to find a loophole to avoid the duty.
Is accepting other people's errors as a little bonus equivalent to what Google is doing? No. If I was to set myself up a corporation in a tax haven then quit my job and take up a job as a remote worker for my new corporation and contract myself back to my former employer, that would be equivalent to what Google is doing.
And that, dear boy, would be illegal. As a worker, I am obliged to pay taxes in the country I am resident and working in. I live here, I work here, I pay tax here.
Google is not a Bermudan company. They are based in Mountain View, California. Google does not do its work in Bermuda -- they have major datacentres and development offices all over the world, and next to no physical footprint in Bermuda.
Every company should avoid paying every dime of taxes they can. It's the only defense we have against government growth short of a revolution.
"Government growth"?!? Government worldwide is already shrinking, and it's the lack of proper regulatory oversight that caused the global financial crisis. That may not seem to be the case in America, where government regulation appeared to precipitate the crisis, but the reason that they wanted to force the banks to give more high-risk loans was an attempt to "shrink" government by eliminating the need for benefit schemes for low-income households. Meanwhile, in the rest of the world, our banks were allowed to invest people's money in these crazy US debts because the governments didn't want to "interfere in the market". And one of the few countries that did regulate, Spain, was screwed over anyway, because of their national reliance on foreign debt (holiday-home mortgages).
Spain has been forced into "austerity measures" that essentially mandate the "small government" philosophy, and guess what? There's a revolution forming against it, because the jobless want to somewhere to live, and something to eat, and some help getting the skills they need to work, and the private sector doesn't gain any profit from such charity....
Exactly. And the summary says: "One must admit to being impressed by his honesty."
Why should anyone be impressed by his "honesty"? (Tax avoidance is, in my book, inherently dishonest, even if legal.) At least the CEOs that decline to comment show some level of guilt. If Schmidt can stand up and say that, it shows him up as self-entitled, sociopathic, or both.
Every major release of Linux involves axing legacy support for lots of stuff. It has to get cut out because the monolithic kernel means installing it all on every system. This results in the ridiculous situation where people start working on legacy forks and have to keep rolling changes from the main fork into theirs -- that's avoidable dev time, because a modular kernel would give them the ability to write a... module, one that just plugs in. Bootup is slowed by looking for devices that your computer doesn't have and wouldn't be physically capable of connecting to. If there's a small change to the kernel, you have to download a massive chunk of binary data (unless you're a compile-from-source guy, but I'm not).
I say that even though I like Linux. I would use it as my main OS if they only fixed the blasted thing to switch on my laptop backlight with me having to "sudo setpci" every time I wake it up from sleep....
Nope. The point of a microkernel is about long-term stability and code maintainability, and run-time security. User-space services shouldn't be able crash the kernel, so the kernel can just restart the services. There are some elements of this in all *n*x systems -- print daemons and the like.
The Linux monolithic kernal was easier to get up and running than the Hurd microkernel, but there's a lot of legacy stuff drifting round the Linux codebase because a lot of Linux's development was hack upon hack. Yes, good quality hacking, I'll give you that, but cruft is as cruft does....
I was just trying to set the cat among the pigeons, so to speak.
But now that we're on the subject: it took a monolithic kernel for the project to be manageable to a single coder, and Linus made the original kernel himself. The Hurd isn't finished because a decent microkernel needs a lot of development time. Paradoxical, then, that the Linux community has a critical mass of development talent that could knock together a microkernel achitecture in a couple of months, if they wanted to, but the projects with a good architecture roadmap are lacking people.
I always hoped that the Linux community would evolve to take a "subtractive" approach to microkernel development, refactoring the codebase iteratively by isolating kernel functions and moving them to non-kernel processes, but the Linux crowd (and Linus himself) seems to have confused the success of Linux with evidence of the superiority of monolithic kernel architecture.
So Linux continues to be the embodiment of modern coding ethos: "hack it till it works, stuff elegant design".
So what? The answer will be different every year.
Later as you start to get it, research the proper ways to do thing. Don't start worrying about 'proper' form initially unless u wanna go back to college. Just hack stuff for entertainment with only an hour a day you could do some stuff.
Seriously?!? You need to know the proper ways to do stuff, because you will never be a lone coder in the real world. You need to understand other people's code, and they need to understand yours. Which means learning the standards and doing things right. Bad habits stick....
Scripting languages (like PHP and Python) rely on enormous libraries. These can take a long time to learn, and learn well. They also tend to be moving targets.
Libraries only become necessary when you want to do something that relies on them. If you're learning "to program" rather than learning "to program Python", you won't need to learn all the libraries. The core language is pretty flexible, and I'm already doing some very interesting stuff with it, using only 2 library functions (Math.floor and random.random).
String processing and list processing don't require libraries, so compared to many (non-scripting) languages, the libraries are far less of a concern....
I must commend you on your charitable work. You would do it in your own time, but you do it in someone else's time, because you can. How magnanimous of you.
I've been a lapsed coder too, and I wouldn't say it shows lack of love. People get distracted. People let themselves get distracted. Heck, who among us can really be claiming to "do what we love"? I spent years suffering in corporate IT and studying part-time to get out of it. I let myself ignore the things that made me really happy -- people, places, travel, physical activity, and yes: even coding.
If the marketability of your skillsets is your primary concern, learning languages like PHP, Java, Javascript, or C# is clearly the best way to go. I sure wouldn't want a language like Ruby or Python to be the only one I am proficient with.
But the OP isn't looking for a single language for marketability. He said himself that he's looking to hone his chops and get back into programming after a hiatus:
He's looking for a "gateway" drug of a language, and Python fits the bill perfectly. You get to noodle with some of the more advanced concepts in computing without fighting with many of the more eccentric features of some of the languages you mentioned.
Python has whitespace issues, I disagree one should learn that first. Until Python can mature and use curly braces ({,}) or even Pascal/Ada style Begin and End for block indications rather than whitespace indentation, I cannot recommend Python.
Everything in Python was done for a reason, and mostly that reason was readability. However much it bugs me that I have to manually correct the indentation in IDLE if I copy and paste a code block (admittedly bad practice, but often required), I always remind myself that it's there to stop me being lazy and writing something that gets confused further down the line.
Beginning and end delimiters are designed for ease of computer processing, but humans aren't that good at processing them -- we're not stack machines! It's a normal C convention to indent like Python for this very reason -- debugging and maintaining other people's code is hard if incorrect indentation causes us to misread the flow control. But because it's convention rather than syntax, it never gets done, and productivity is lost.
Yes, it bugs me that heavily structured code ends up filling loads of columns, and it may not be "idiomatic", but that's my best way of reducing the overhead due to multiple nested function calls (come on guys, what's wrong with macros??).
I'd be all for a flexible programming language that isn't human readable until it's being viewed in a dedicated editor, but as long as code's in plaintext, Python's doing things the right way, in my book.
It's easy, it's fun, and it's versatile. It would be useful to all of the field you mentioned and would also be useful for scripting if you do end up going back to IT.
Seconded. I've just left a career in IT (a longer one than the OP) and even though I was heading for education, somewhere along the way, I decided to start coding again (I'm trying to develop learning software to use for better homework tasks, and managing classwork). I hadn't really been planning on picking up Python, but a couple of things pushed me that way -- one was that I started looking at Natural Language Processing (and the NLTK for Python is pretty comprehensive, as well as free) and the other was that I started doing a MOOC course on web app development which was based around Python.
What I found once I started was that Python made all the concepts I'd previously learned in university with C very, very easy. By lifting the difficulty out of handling strings, lists and other not-complicated-but-not-elementary datastructures, it let me focus on the "bigger picture" of process and task design.
So in the end, whether I deploy my apps online using a Python-based server or I rewrite them to another language based on the Python prototype, the end result would not be possible without Python.
There are a couple of things that bug me about the language (there's no language without its quirks) but so far I believe its a damn good option for the returning lapsed programmer.
And you've proved yourself a small-minded racist bigot, by being well and truly wrong. The continuous tense thing is often charicatured, but very few charicatures get it right, coming out with ungrammatical[1] nonsense such as "I am thinking you are being right". There are certain verb classes that go into the continuous in certain grammatical situations, but not all. This is to do with which verbs classes have a non-continuous present meaning. Consider that having in phrases such as "I am having" in English always means eating, drinking or otherwise experiencing, but never possessing or owning. As far as I recall, this still holds true in Indian English. Going back to my earlier example (I am thinking you are being right): the "you are being" thing never occurs because the verb "to be" occurs as present in the Indic languages (it's what the progressive aspect is built on, after all) and I believe that the "I am thinking" thing is wrong as well, because the "thinking" here is a belief (and most languages use the word "believe", not "think") and not something that's liable to change in the immediate future. "I am thinking" in English is used when we're discussing a current process of consideration that we expect to end soon. (eg I am thinking of going to the shop -- I'll either decide to go or not, and the thinking is finished.) I don't believe a Hindi speaker would ever describe their settled beliefs as transitory, and therefore would never use the progressive in either Hindi or English to express it. The same phenomenon occurs in the Goidelic language family, although Scottish Gaelic has recently developed a tendency to use the continuous aspect where it probably shouldn't be.
And no, it's not rocket science, it's linguistics, which is something I'd put good money on you never having studied. I haven't studied Indian English in any depth since 2005, so you'll have to excuse any minor inaccuracies in my description.
[1] "ungrammatical" here refers to it being against the rules of grammar of Indian English.
You forgot the quotation marks around English. As in: "so 'English' is the standard in business and technology.". Because, let's face it, the English spoken/written in India is a pretty simplified version of the actual thing.
What do you mean, simplified? If it's so simple, you try speaking it.
Just because something is different doesn't mean it is simplified. There are rules and structures that have been borrowed in from the Indic languages (the indo-european languages spoken in the north) and there are rules and structures that they learned from pre-Victorian school books. It's actually a fascinating dialect/language to study. I used to be able to speak it, but I can't any more.
Part of the Empire? India was part of the thuggish, cretan British Empire for around 200 or so years.
Hold on a minute, please don't assume that I'm a fan of my country's imperial past. I'm not.
It was Bharat for a bit longer than that (a few thousand at least). Hindustani is the official language of India as codified in the constitution (http://en.wikipedia.org/wiki/Hindi-Urdu#Official_status). Hindustani is actually a mix of Hindi and Urdu. I suggest you read more before you comment on something you know shit about.
Well I'm guessing you're from the north, because there are plenty of speakers of Dravidian languages who would take issue with you. The official status, as explained in the article, is as the language of the federal government and half of India wants that to mean exactly what it says. Hindi is not "their" language and they're happier speaking English with other Indians as a neutral language. Here's an experiment for you: hop in an auto in Thiruvanathapuram and speak to the driver in Hindi. Then, at your destination, hop in another and speak to the driver in English. Tell me which works better for you.
And you're unlikely to find much discussion on the finer points of any programming language in any language other than English. That's just a retarded remark to begin with considering that English is the lingua franca of the planet.
Go back to school and learn something. Idiot.
Well considering that was part of my point, there's no need to insult me about it.
But the situation is different in India from other countries because English is so common. If you go into a book shop in most countries, you'll find a lot of programming books in the local language. The last time I visited Landmark in the Forum (Bangalore), I don't recall seeing any programming books in anything other than English. For that matter, I went to the spoken languages section too, and as far as I recall, the only books in Kannada were to learn Hindi or English, and the only books in Hindi taught English or Kannada....
Now why don't you go back to school and learn some manners!
Well, Mexico is a major trading partner to the US, and certain parts of South America are to Spain what the Phillippines and India are to the US and the UK -- the main source of shared-language off-shore workers. And because they are mostly genuinely native Spanish speakers (as opposed to the various Indians and Phillipinians with various native languages) the whole off-shoring should be much smoother there.
The big advantage in Spanish in an English-speaking country would have to be the potential to bridge two different off-shore operations. I'm thinking mostly of when (for example) a multinational buys out another multinational, and tries to integrate the two corporate structures into one.
And there is no such thing as "effortless" language learning.
...yet. But it's something that a lot of people are already working on. Computer games are fun because we're constantly learning. Computer games are boring when we're not learning enough, and they're frustrating when they expect us to learn too fast. Therefore we can conclude that the problems in education are all about pacing and difficulty. All learning can be effortless, and when teachers start listening to science, they'll start approaching that effortlessness (although probably asymptotally.)
But when labour costs start to rise in China where is the next place that the big multi-nationals will seek to keep their cost base as low as possible? If you can determine that and then learn the local language then you could reap big rewards when the off-shoring goes there.
This is an excellent point. The real money is in handover, and that's mostly done for all the established off-shoring locations. If you ready to do a handover in the next big location, you have a chance.
But you'll be hard pushed to assess that yourself, so it'll take a hell of a lot of reading and a hell of a lot of luck to achieve it.
The other option is to look at it not in terms of a single big outsourcing market, but to look for parallel outsourcing markets. At the moment there are two major outsourcing markets: English-speaking and Spanish-speaking. I think the next big opportunity is for those who are in a position to act as a "bridge" between the two operations when companies try to integrate them. Who's going to get India and the Philippines talking to Bolivia and Peru? Maybe it'll be you....
The major language in India is English (it was a part of the Empire for a very long time). While many try to push Hindi, it is not truly "national", so English is the standard in business and technology. You're unlikely to find much discussion of the finer points of Python list comprehensions in Hindi....
Ah yes... it seems to be working in FF but not in IE. Sorry, my mistake.
Yes, but we're talking about the API, not the software. There are hundreds of formerly-useful websites out there that ran on a now-withdrawn API. I always used to love using "GoogleFight" to compare the relative frequency of two phrases, but the old API is gone, even though Google is still going, (and other Google APIs are still in operation) and GoogleFight no longer does anything. For a quick reference as a language learner, comparing Google figures was invaluable.
What if it's a sting? What if they expect the real culprit to attempt to fit someone else up and take the cash?
The "authorities"? I thought the police department's motto was "to protect and to serve". They are not authorities. They are certainly not judge, jury and executioner. Visiting multi-volt torture on someone already under their control who hasn't even committed any criminal act is just not cricket....
Are you telling me you don't take any deductions or credits? No standard deduction? Do you pay a use tax in your state for all the online purchases you made and did not pay sales tax on?
Are you telling me you're not aware that there's a world outside your borders?
In my country, I get tax deducted automatically from my salary. My "sales tax" is applied automatically, and if I buy mail order from another member state of the European Union, I pay their equivalent tax. If I import from outwith the EU, customs check my package and bill me for the import duty. Some companies will lie on the customs label and I don't get charged, or sometimes the customs themselves don't bother (presumably because they're too busy to process everything fully and restrict themselves to high-value items. No, I don't go back to customs to correct the mistake. I've never even checked whether it's possible to do so. But I never seek to find a loophole to avoid the duty.
Is accepting other people's errors as a little bonus equivalent to what Google is doing? No. If I was to set myself up a corporation in a tax haven then quit my job and take up a job as a remote worker for my new corporation and contract myself back to my former employer, that would be equivalent to what Google is doing.
And that, dear boy, would be illegal. As a worker, I am obliged to pay taxes in the country I am resident and working in. I live here, I work here, I pay tax here.
Google is not a Bermudan company. They are based in Mountain View, California. Google does not do its work in Bermuda -- they have major datacentres and development offices all over the world, and next to no physical footprint in Bermuda.
Every company should avoid paying every dime of taxes they can. It's the only defense we have against government growth short of a revolution.
"Government growth"?!? Government worldwide is already shrinking, and it's the lack of proper regulatory oversight that caused the global financial crisis. That may not seem to be the case in America, where government regulation appeared to precipitate the crisis, but the reason that they wanted to force the banks to give more high-risk loans was an attempt to "shrink" government by eliminating the need for benefit schemes for low-income households. Meanwhile, in the rest of the world, our banks were allowed to invest people's money in these crazy US debts because the governments didn't want to "interfere in the market". And one of the few countries that did regulate, Spain, was screwed over anyway, because of their national reliance on foreign debt (holiday-home mortgages).
Spain has been forced into "austerity measures" that essentially mandate the "small government" philosophy, and guess what? There's a revolution forming against it, because the jobless want to somewhere to live, and something to eat, and some help getting the skills they need to work, and the private sector doesn't gain any profit from such charity....
Exactly. And the summary says: "One must admit to being impressed by his honesty."
Why should anyone be impressed by his "honesty"? (Tax avoidance is, in my book, inherently dishonest, even if legal.) At least the CEOs that decline to comment show some level of guilt. If Schmidt can stand up and say that, it shows him up as self-entitled, sociopathic, or both.
Every major release of Linux involves axing legacy support for lots of stuff. It has to get cut out because the monolithic kernel means installing it all on every system. This results in the ridiculous situation where people start working on legacy forks and have to keep rolling changes from the main fork into theirs -- that's avoidable dev time, because a modular kernel would give them the ability to write a... module, one that just plugs in. Bootup is slowed by looking for devices that your computer doesn't have and wouldn't be physically capable of connecting to. If there's a small change to the kernel, you have to download a massive chunk of binary data (unless you're a compile-from-source guy, but I'm not).
I say that even though I like Linux. I would use it as my main OS if they only fixed the blasted thing to switch on my laptop backlight with me having to "sudo setpci" every time I wake it up from sleep....
HURD will be finished any day now....
And when they try to switch it off it will react to defend itself....
Nope. The point of a microkernel is about long-term stability and code maintainability, and run-time security. User-space services shouldn't be able crash the kernel, so the kernel can just restart the services. There are some elements of this in all *n*x systems -- print daemons and the like.
The Linux monolithic kernal was easier to get up and running than the Hurd microkernel, but there's a lot of legacy stuff drifting round the Linux codebase because a lot of Linux's development was hack upon hack. Yes, good quality hacking, I'll give you that, but cruft is as cruft does....
I was just trying to set the cat among the pigeons, so to speak.
But now that we're on the subject: it took a monolithic kernel for the project to be manageable to a single coder, and Linus made the original kernel himself. The Hurd isn't finished because a decent microkernel needs a lot of development time. Paradoxical, then, that the Linux community has a critical mass of development talent that could knock together a microkernel achitecture in a couple of months, if they wanted to, but the projects with a good architecture roadmap are lacking people.
I always hoped that the Linux community would evolve to take a "subtractive" approach to microkernel development, refactoring the codebase iteratively by isolating kernel functions and moving them to non-kernel processes, but the Linux crowd (and Linus himself) seems to have confused the success of Linux with evidence of the superiority of monolithic kernel architecture.
So Linux continues to be the embodiment of modern coding ethos: "hack it till it works, stuff elegant design".