My university used to go on and on about this stuff in our "Software Engineering" classes. My solution was not to listen since I was 22 and didn't give a damn. Honestly though, I think I was right not to listen, the only way to learn in my mind is through spending enough time being pissed off at what others have not documented and making sure I do at least that much in future. Oh, and Doxygen is pretty cool, at least it makes it obvious what is and is not documented.
A brilliant transplant surgeon has five patients, each in need of a different organ, each of whom will die without that organ. Unfortunately, there are no organs available to perform any of these five transplant operations. A healthy young traveler, just passing through the city the doctor works in, comes in for a routine checkup. In the course of doing the checkup, the doctor discovers that his organs are compatible with all five of his dying patients. Suppose further that if the young man were to disappear, no one would suspect the doctor.
An engineer would realise that since these patients are all missing one different organ, then one of them can be cut up to save the other four, saving the moral dilemma since any one of them would have died anyway. Philosophers are always looking for the perfect question, but an engineer knows there is always a better solution. All an engineer needs to know is how his car killed someone the last time and he can fix it.
I will take personal credit for all of the useful things you do while you are not on Slashdot, shaving your neck might not be a step in the wrong direction.
Thing that made me annoyed is when I found a very good picture that was being voted for deletion because it didn't meet commons.wikimedia.org criteria since it was in breech of France's panorama copyright laws. However it was not in breech of en.wikipedia.org where it was originally uploaded and this would never have been an issue if some moronic bot (or person) had not "helpfully" moved it.
My last authored article was for a large scale computer game with millions of player that was tagged with "not notable" before that editor had even googled it. When I messaged him, he googled it, removed his tag and appologised, but if it was really discouraging to have 4 hours of my own time marked by someone as "I think this is not worth the 30kb of harddisk space it takes to store it".
The elites of those two countries don't give a shit about the masses therein, I don't see how they could expect you to. This is what has blown my mind about America in the past when I've visited, population of 1/3rd of a billion and every single one thinks they are somehow special, it's what gives America it's character I guess. Also, Chinese masses have refrigerators, washing machines and cars, mostly what is making everyone upset is house prices at the moment, those other things are cheap.
// We ask that no one change this redirect URL. ALL (100%) revenue // generated by this Banshee Amazon integration is sent directly to the // non-profit GNOME Foundation. - public const string REDIRECT_URL = "http://integrated-services.banshee.fm/amz/redirect.do/"; + public const string REDIRECT_URL = "http://redir.linuxmint.com/mp3amazonstore/";
Wow, blatantly doing exactly the opposite of what the authors have kindly asked and redirecting funds to themselves. Completely within the terms of the GPL, completely within the bounds of what makes someone scum. I've heard the complaint that Ubuntu always takes from the ecosystem and never gives back, but this is cold, even for them. Well, this is a kick in the face for anyone who said that you can make money through making open source software, nomatter how you think of sharing your code while still covering your costs, someone's just going to rebrand it.
Apologies for my message looking terrible, I switched on slashdot's "code" format, I promise not to do it again.
China has not liked NK ever since they followed the Soviets instead of Grandpa Mao 45 years ago, also most Chinese know that NK is run by silly men who let their people starve rather than cooperate with either of their neighbours. But China has had a lot of brave men who fought and died to defend NK, many who's family and friends hold onto their memories. China does not support NK government, but while the families of these men live, it can never tell the South that it can cross the 38th parallel and throw their sacrifices away.
What I said was completely correct, it can not go critical nor can it level a city block. The specific term for a block levelling reaction is I believe is "high yield prompt criticality excursion", which sounds terrible and didn't need to be said. Criticality is something achieved in nuclear reactors and nuclear bombs, it is not achieved in centrifuges, even when they fail, thus there is no energy release beyond the normal energy released by nuclear decay. Furthermore, that plant you live near does not blow up precisely because it is designed not to, with moderators and coolants. Should its fuel rods be stacked together outside by some guy who wants to make a fort, the situation would be quite different (though 5% enriched really doesn't have much ability to actually blow up).
Well, if your idea of "catastrophe" is becoming critical and levelling a city block, then you are absolutely correct, an enrichment centrifuge cannot do that. However, that centrifuge is filled with uranium hexafluoride, which is a horrible corrosive gas that can burn through metal and will kill you if you touch or ingest it in the tiniest quantities, then I can think of quite a lot of catastrophic things that can happen, especially in a confined space with thousands of workers.
Typical CS skillset is optimised towards large systems, optimisation techniques are based on scalability rather than managing individual instructions and registers. CS people are great and managing huge codebases and datasets, most don't know anything about small systems where there is a completely different set of goals and constraints. Just like I have not met a single EE that can write legible code over 50 lines (and most embedded projects are well over 50 lines).
Though if you're smart and have a related set of skills, you can pick it up new things fast enough.
I think he said it in just a nice, palatable way. I would have said that many people who are going into Java now just didn't have much of a plan after high school and computers seemed like a reasonably tolerable career.
No, no, I can give a better explanation. A Java programmer my age was the guy in the front of the maths/physics/chem class in highschool that was forever asking dumb questions but at the class test that show's he didn't understand the topic but somehow he would manage to get full marks in assignments despite mediocre test scores and he'd have the same grade as me by the end of the term, which he would be sure to point out to me.
A Java programmer my age 5 years ago was the guy who took only the minimum of 2 honours level classes in his final year of undergrad (winding up with lower seconds), but then does a 1 year coursework masters at the same 3rd tier university, taking all the easiest honours level courses (those requiring no maths and little programming) and then spends the rest of his life making sure that he subtly mentions that he has a master's degree to any peer who might listen.
This is what Java programmers are, they're not smart, but they stick at it. They do have a CS background in the sense that they don't really have any other background. They write awful code, but they shotgun debug it until it works, leaving in all of the mess and dead code right there or commented out.
When you start breaking down coding practices into line formatting and variable names and etc... etc... etc.... your no longer programming your doing document management and personally I'm not going to write my embedded systems firmware in word so let me program.
See point 2 and 3 on your list. Variable names and line formatting helps the maintainer understand the code's function and structure, which is going to impact point 1 and 4 down the line too. Anyway, just use an editor that mandates consistent line indenting and highlights spelling errors in identifiers and those stupid things should vanish with no human effort required. As such tools are plentiful, there is no justification for leaving your documents unmanaged.
-Breaking two loops at the same time. Can be accomplished by putting these loops into a function and using return, at the expense of code clarity. Nested loops in my opinion should be expressed as nested loops when they are not performing a readily separated subtask, it saves the future maintainer from scrolling up and down to work out what all of those locals mean and things like while(condition() && !exitLoop) in the outer loop are ugly and require the program flow to be controlled by a local variable that is neither const, nor an iterator, which makes program flow difficult to analyse.
-When you have a tail-recursive algorithm, but implementing using tail recursion would be unclear or inefficient, such as having lots of local state which can be reused. A do{}while(); can be your friend here, as can splitting the function into two, one of which is recursive, but it just comes down to what feels more legible when you look at it.
-When there is a compelling reason to do cleanup in that way, mainly when dealing with c libs that do not respect RAII semantics and cannot be wrapped cleanly.
It all comes down to whether the code is easier to read with the goto or without it. In my opinion they should be used quite sparingly, when no other syntax will do, which actually makes them extremely conspicuous and helps the maintainer follow them.
Finally, you mention skipping of constructors, locality of declaration and RAII as being drawbacks with using goto in C++, I would say the opposite and would say that this is why goto is bad in C. In properly written C++, local variables tend to be consts or references that are initialised to the right value when they are declared and upon leaving a scope, any resource allocation incurred in that scope will be automatically freed. Thus you have far more checks and balances, if the compiler does not let you do that jump then you should add scoping around whatever you don't need after the label and if that is impossible, you've probably written something that relies on uninitialised variables.
Well, I'm not in outsourcing, otherwise I probably wouldn't have condemned the industry. Primarily we make software for the Chinese market, but I have licensed games that I was involved in building to both US and Russian companies eg: http://realmofthetitans.aeriagames.com/http://www.rotonline.ru/?mid=153255 (notice it is the same game with slightly different title). The Russian publisher was pretty chaotic and last minute, even compared to Chinese, but went from signing to public release in maybe 2 months of insanity, the US publisher has dragged their feet a fair bit as has still not released in the year since signing, as such it's pretty big in Russia but in the US, because of the huge delays I'm not optimistic about its chances against DOTA2 (which has got far greater hype and Valve behind it). As far as sales go, we just showed the product, it's a good, solid title, which the customer could test it, they liked it and we argued over price and the contract, very little shmoozing was done.
Point is, the product we showed and it had already been run on our own blood, sweat and tears in China for 6 months, I myself had to handle the start of open beta and debug server code from a freezing cold room near our data centre in rural Hebei, I also had to abandon our launch party (buffet at the Golden Cougar) when we had a DB overload and it needed to be fixed and the problem had to be nailed shut so it didn't happen again. I had to spend a week debugging our game client on the worst computer on the office because it was the only place where we could reproduce a D3D bug reported by customers. We had nothing to gain by doing it in any way other than correctly, China or otherwise because whatever happened was our problem. This is the difference between offshore and outsourced.
In response to the suck speculation. I know some really good Chinese programmers in Beijing, Shanghai and Guangzhou. They're not going to work for $14 and hour, unless you throw in a percentage of the company's shares and some serious pandering from management. Crap Chinese programmers cost about RMB¥5000 a month, about US$5 an hour, but prices climb extremely sharply after that. Outsourcing companies will hire those crap ones and pocket the difference, every time.
There's nothing intrinsically wrong with Chinese, Indian or whatever programmers. It's just the Chinese companies, and I assume Indian companies who actually need to sell their own product want to hire the good engineers to get the job done and so they are in demand in the market and thus expensive. To an outsourcing company however, maintenance is an externality, they don't care if something is well engineered, just if it meets the requirements to the letter, or at least appears to then its good enough, so anything will do.
Why would you go with a Chinese outsourcing company then? Well, I am in the business of making good software, but here's how it would go if I wasn't. I'd fly you on a junket and you'd stay in a 5 star hotel, paying for a few extra nights because who wants to go on an overseas trip without seeing the sights. You'd come to my office in Beijing, it is big, has a lot of people in it and they look like they are working hard. I would then precede to show you some professional looking slides and give you some serious false impressions as to what we have delivered in the past and I'd deliver it with such unerring conviction you would have to believe it. Then I would take you out to dinner, Peking duck, abalone and alcohol, I would invite some girls from the office, receptionists etc., who would smile at you and blush when you try to speak English with them, that's just what Chinese girls do, but you feel like they're into you. Then I would take you to do something else, grand sights, more booze, or a really, really good prostitute.
Now, this is what a Chinese sales guy will give your manager: optimism, presentation and vice. What can you give him? Well, results presumably, but they come later. Up front you can only give him cautious estimates and a list of things that can go wrong. Why would anyone but a non-idiot manager choose a local team of engineers who know what they are talking about when he can have a free holiday to an exotic country and hear some really pleasing things?
Outsourcing companies are there to make money, pure and simple. Nice things cost money, that can be good engineers (local or overseas) or it can be the sales team and what the sales team and their junkets and presentations.
By they way, I'm obviously not North American, but I've worked with American engineers, a few of them have been really great, most of them have been quite ordinary, kind of like what you get here in terms of ability, but usually a little more methodical and steady. The advantage is mainly that you know what you're getting when you hire locally (or find your own talent overseas rather than relying on an agency).
I've driven in the UK, I spent the whole time fretfully glancing between my speed dial to make sure I wasn't going over the limit, my periphery looking for a speed camera and very occasionally in front to see where I was going. By the time I left, I was feeling paranoid too.
If you've got millions of people who can listen to a man like Jeremy Clarkson every week and say "hmm, I think he's got a point", it's pretty safe to say that the status quo must be pretty off balance.
Your chances of contracting a fatal disease through unprotected vaginal sex now is much, much lower than it was before antibiotics, when syphilis was a death sentence. HIV and Hepatitis C are the only incurable ones, both are blood born, not STDs in the strictest sense and can be avoided by staying away from anal penetration, menstrual fluid and sex partners with obvious lesions on the genitals. Of course, you should always practice safe sex, many STDs are still truly ghastly, but nothing remains that will cause you to drift slowly and incurably into dementia and death like syphilis used to.
It's hard to get someone capable of running a government to work for the salary of a blue collar worker. If someone wants that job, either they have an enormous sense of civic duty or more likely a way to exploit that power to their own ends. I also do not want to have to feel indebted to a leader for giving up their high paying job to serve the country, I would rather have someone I can look at and scream: you're being paid $200,000pa, where's my fucking results.
Well, put it this way, it is a hell of a lot easier to turn that Pu-238 into Pu-239 through bombardment in a small reactor than it would be to isolate a useful quantity of U-235 from anything you're likely to be able to find outside of weapons, including fuel rods. I'm not saying it would be easy, but excluding fissile isotopes, that would be by far the next most convenient isotope for making a type weapon, that lets face it, is really, really hard to make. Sure, you or I could not turn it into weapons grade 239, but we couldn't make a multi point hollow pit implosion mechanism either. Gun types are simpler, but getting that U-235 is next to impossible, unless you have hundreds of tonnes of uranium and some gas centrifuges lying around.
Windows 7 is by and large better than XP, but its search functionality is a huge step back. I hit Control-F, it takes half an hour to search my drive and I can't find anything. I have no idea what its even searching, I cannot find a text string inside my plain text sourcecode files and it's too slow to be just searching filenames. So what the heck is it doing?
The best search I've seen is in Gnome, maybe an older version, you can add conditions and it will find things that match it. Intuitive, customisable and fast.
When Gnome2 came out it was exactly the same, the best applets from Gnome1 were gone, the window manager had gone from the infinitely customisable Sawfish to bare bones Metacity, most configuration options were gone, 2.6 they brought in "spatial file manager" and told everyone to change the way they use directories to accommodate.
Slowly but surely, everything came flooding back and eventually it had reverted to a usable desktop that was actually better than 1.4. But make no doubt about it, every big decision made by "designers" up unto this point still had been 100% wrong, the changes that repaired it were all done as technical improvements by the maintainers.
I was a gnome developer for 2 years, maintaining some of the libraries the desktop uses. You'd be surprised how much power is vested in the maintainers of the various components and how much good can be done by these people. The one and only problem is the release team with the power to swap out a working component in favour of a proof of concept, which tends to be run by narcissists. Beyond the release team, Gnome developers are very rational people who care deeply about their users.
Governments exist to be coercive, if coercion was unneeded then governments would be too. That sounds circular, but I am sure we can all think of a few examples of where governments should be coercive, such as in the case of criminal law, breech of contract, advertising/labelling standards, traffic laws, fire safety codes and so forth, because I have seen times and places where such things have not been enforced and things have been unpleasant. Thus it is silly to make blanket statements about government coercion being bad.
In this case, the government has already interfered with people's lives by paying people to have children. If its allowed to do that, then I don't see why it shouldn't at least be discriminating enough with this money to make sure that the parents are giving the government the kind of children it paid for, otherwise its the parents right to do anything they want with their own child, but with their own money.
My university used to go on and on about this stuff in our "Software Engineering" classes. My solution was not to listen since I was 22 and didn't give a damn. Honestly though, I think I was right not to listen, the only way to learn in my mind is through spending enough time being pissed off at what others have not documented and making sure I do at least that much in future. Oh, and Doxygen is pretty cool, at least it makes it obvious what is and is not documented.
A brilliant transplant surgeon has five patients, each in need of a different organ, each of whom will die without that organ. Unfortunately, there are no organs available to perform any of these five transplant operations. A healthy young traveler, just passing through the city the doctor works in, comes in for a routine checkup. In the course of doing the checkup, the doctor discovers that his organs are compatible with all five of his dying patients. Suppose further that if the young man were to disappear, no one would suspect the doctor.
An engineer would realise that since these patients are all missing one different organ, then one of them can be cut up to save the other four, saving the moral dilemma since any one of them would have died anyway. Philosophers are always looking for the perfect question, but an engineer knows there is always a better solution. All an engineer needs to know is how his car killed someone the last time and he can fix it.
I will take personal credit for all of the useful things you do while you are not on Slashdot, shaving your neck might not be a step in the wrong direction.
Thing that made me annoyed is when I found a very good picture that was being voted for deletion because it didn't meet commons.wikimedia.org criteria since it was in breech of France's panorama copyright laws. However it was not in breech of en.wikipedia.org where it was originally uploaded and this would never have been an issue if some moronic bot (or person) had not "helpfully" moved it.
My last authored article was for a large scale computer game with millions of player that was tagged with "not notable" before that editor had even googled it. When I messaged him, he googled it, removed his tag and appologised, but if it was really discouraging to have 4 hours of my own time marked by someone as "I think this is not worth the 30kb of harddisk space it takes to store it".
The elites of those two countries don't give a shit about the masses therein, I don't see how they could expect you to. This is what has blown my mind about America in the past when I've visited, population of 1/3rd of a billion and every single one thinks they are somehow special, it's what gives America it's character I guess. Also, Chinese masses have refrigerators, washing machines and cars, mostly what is making everyone upset is house prices at the moment, those other things are cheap.
Did anyone take a gander at the changelog?
// We ask that no one change this redirect URL. ALL (100%) revenue
// generated by this Banshee Amazon integration is sent directly to the
// non-profit GNOME Foundation.
- public const string REDIRECT_URL = "http://integrated-services.banshee.fm/amz/redirect.do/";
+ public const string REDIRECT_URL = "http://redir.linuxmint.com/mp3amazonstore/";
Wow, blatantly doing exactly the opposite of what the authors have kindly asked and redirecting funds to themselves. Completely within the terms of the GPL, completely within the bounds of what makes someone scum. I've heard the complaint that Ubuntu always takes from the ecosystem and never gives back, but this is cold, even for them. Well, this is a kick in the face for anyone who said that you can make money through making open source software, nomatter how you think of sharing your code while still covering your costs, someone's just going to rebrand it.
Apologies for my message looking terrible, I switched on slashdot's "code" format, I promise not to do it again.
China has not liked NK ever since they followed the Soviets instead of Grandpa Mao 45 years ago, also most Chinese know that NK is run by silly men who let their people starve rather than cooperate with either of their neighbours. But China has had a lot of brave men who fought and died to defend NK, many who's family and friends hold onto their memories. China does not support NK government, but while the families of these men live, it can never tell the South that it can cross the 38th parallel and throw their sacrifices away.
What I said was completely correct, it can not go critical nor can it level a city block. The specific term for a block levelling reaction is I believe is "high yield prompt criticality excursion", which sounds terrible and didn't need to be said. Criticality is something achieved in nuclear reactors and nuclear bombs, it is not achieved in centrifuges, even when they fail, thus there is no energy release beyond the normal energy released by nuclear decay. Furthermore, that plant you live near does not blow up precisely because it is designed not to, with moderators and coolants. Should its fuel rods be stacked together outside by some guy who wants to make a fort, the situation would be quite different (though 5% enriched really doesn't have much ability to actually blow up).
Well, if your idea of "catastrophe" is becoming critical and levelling a city block, then you are absolutely correct, an enrichment centrifuge cannot do that. However, that centrifuge is filled with uranium hexafluoride, which is a horrible corrosive gas that can burn through metal and will kill you if you touch or ingest it in the tiniest quantities, then I can think of quite a lot of catastrophic things that can happen, especially in a confined space with thousands of workers.
Typical CS skillset is optimised towards large systems, optimisation techniques are based on scalability rather than managing individual instructions and registers. CS people are great and managing huge codebases and datasets, most don't know anything about small systems where there is a completely different set of goals and constraints. Just like I have not met a single EE that can write legible code over 50 lines (and most embedded projects are well over 50 lines).
Though if you're smart and have a related set of skills, you can pick it up new things fast enough.
I think he said it in just a nice, palatable way. I would have said that many people who are going into Java now just didn't have much of a plan after high school and computers seemed like a reasonably tolerable career.
No, no, I can give a better explanation. A Java programmer my age was the guy in the front of the maths/physics/chem class in highschool that was forever asking dumb questions but at the class test that show's he didn't understand the topic but somehow he would manage to get full marks in assignments despite mediocre test scores and he'd have the same grade as me by the end of the term, which he would be sure to point out to me.
A Java programmer my age 5 years ago was the guy who took only the minimum of 2 honours level classes in his final year of undergrad (winding up with lower seconds), but then does a 1 year coursework masters at the same 3rd tier university, taking all the easiest honours level courses (those requiring no maths and little programming) and then spends the rest of his life making sure that he subtly mentions that he has a master's degree to any peer who might listen.
This is what Java programmers are, they're not smart, but they stick at it. They do have a CS background in the sense that they don't really have any other background. They write awful code, but they shotgun debug it until it works, leaving in all of the mess and dead code right there or commented out.
I think a lot of people here got a deep sense of pathos for your coworkers when they saw what you had written.
When you start breaking down coding practices into line formatting and variable names and etc... etc... etc.... your no longer programming your doing document management and personally I'm not going to write my embedded systems firmware in word so let me program.
See point 2 and 3 on your list. Variable names and line formatting helps the maintainer understand the code's function and structure, which is going to impact point 1 and 4 down the line too. Anyway, just use an editor that mandates consistent line indenting and highlights spelling errors in identifiers and those stupid things should vanish with no human effort required. As such tools are plentiful, there is no justification for leaving your documents unmanaged.
It all comes down to whether the code is easier to read with the goto or without it. In my opinion they should be used quite sparingly, when no other syntax will do, which actually makes them extremely conspicuous and helps the maintainer follow them.
Finally, you mention skipping of constructors, locality of declaration and RAII as being drawbacks with using goto in C++, I would say the opposite and would say that this is why goto is bad in C. In properly written C++, local variables tend to be consts or references that are initialised to the right value when they are declared and upon leaving a scope, any resource allocation incurred in that scope will be automatically freed. Thus you have far more checks and balances, if the compiler does not let you do that jump then you should add scoping around whatever you don't need after the label and if that is impossible, you've probably written something that relies on uninitialised variables.
It's best to take all figures, especially those concerning NaCl with a grain of salt.
China acceeded to the Nuclear Non-Proliferation Treaty, India has not.
Well, I'm not in outsourcing, otherwise I probably wouldn't have condemned the industry. Primarily we make software for the Chinese market, but I have licensed games that I was involved in building to both US and Russian companies eg: http://realmofthetitans.aeriagames.com/ http://www.rotonline.ru/?mid=153255 (notice it is the same game with slightly different title). The Russian publisher was pretty chaotic and last minute, even compared to Chinese, but went from signing to public release in maybe 2 months of insanity, the US publisher has dragged their feet a fair bit as has still not released in the year since signing, as such it's pretty big in Russia but in the US, because of the huge delays I'm not optimistic about its chances against DOTA2 (which has got far greater hype and Valve behind it). As far as sales go, we just showed the product, it's a good, solid title, which the customer could test it, they liked it and we argued over price and the contract, very little shmoozing was done.
Point is, the product we showed and it had already been run on our own blood, sweat and tears in China for 6 months, I myself had to handle the start of open beta and debug server code from a freezing cold room near our data centre in rural Hebei, I also had to abandon our launch party (buffet at the Golden Cougar) when we had a DB overload and it needed to be fixed and the problem had to be nailed shut so it didn't happen again. I had to spend a week debugging our game client on the worst computer on the office because it was the only place where we could reproduce a D3D bug reported by customers. We had nothing to gain by doing it in any way other than correctly, China or otherwise because whatever happened was our problem. This is the difference between offshore and outsourced.
In response to the suck speculation. I know some really good Chinese programmers in Beijing, Shanghai and Guangzhou. They're not going to work for $14 and hour, unless you throw in a percentage of the company's shares and some serious pandering from management. Crap Chinese programmers cost about RMB¥5000 a month, about US$5 an hour, but prices climb extremely sharply after that. Outsourcing companies will hire those crap ones and pocket the difference, every time.
There's nothing intrinsically wrong with Chinese, Indian or whatever programmers. It's just the Chinese companies, and I assume Indian companies who actually need to sell their own product want to hire the good engineers to get the job done and so they are in demand in the market and thus expensive. To an outsourcing company however, maintenance is an externality, they don't care if something is well engineered, just if it meets the requirements to the letter, or at least appears to then its good enough, so anything will do.
Why would you go with a Chinese outsourcing company then? Well, I am in the business of making good software, but here's how it would go if I wasn't. I'd fly you on a junket and you'd stay in a 5 star hotel, paying for a few extra nights because who wants to go on an overseas trip without seeing the sights. You'd come to my office in Beijing, it is big, has a lot of people in it and they look like they are working hard. I would then precede to show you some professional looking slides and give you some serious false impressions as to what we have delivered in the past and I'd deliver it with such unerring conviction you would have to believe it. Then I would take you out to dinner, Peking duck, abalone and alcohol, I would invite some girls from the office, receptionists etc., who would smile at you and blush when you try to speak English with them, that's just what Chinese girls do, but you feel like they're into you. Then I would take you to do something else, grand sights, more booze, or a really, really good prostitute.
Now, this is what a Chinese sales guy will give your manager: optimism, presentation and vice. What can you give him? Well, results presumably, but they come later. Up front you can only give him cautious estimates and a list of things that can go wrong. Why would anyone but a non-idiot manager choose a local team of engineers who know what they are talking about when he can have a free holiday to an exotic country and hear some really pleasing things?
Outsourcing companies are there to make money, pure and simple. Nice things cost money, that can be good engineers (local or overseas) or it can be the sales team and what the sales team and their junkets and presentations.
By they way, I'm obviously not North American, but I've worked with American engineers, a few of them have been really great, most of them have been quite ordinary, kind of like what you get here in terms of ability, but usually a little more methodical and steady. The advantage is mainly that you know what you're getting when you hire locally (or find your own talent overseas rather than relying on an agency).
I've driven in the UK, I spent the whole time fretfully glancing between my speed dial to make sure I wasn't going over the limit, my periphery looking for a speed camera and very occasionally in front to see where I was going. By the time I left, I was feeling paranoid too.
If you've got millions of people who can listen to a man like Jeremy Clarkson every week and say "hmm, I think he's got a point", it's pretty safe to say that the status quo must be pretty off balance.
Your chances of contracting a fatal disease through unprotected vaginal sex now is much, much lower than it was before antibiotics, when syphilis was a death sentence. HIV and Hepatitis C are the only incurable ones, both are blood born, not STDs in the strictest sense and can be avoided by staying away from anal penetration, menstrual fluid and sex partners with obvious lesions on the genitals. Of course, you should always practice safe sex, many STDs are still truly ghastly, but nothing remains that will cause you to drift slowly and incurably into dementia and death like syphilis used to.
It's hard to get someone capable of running a government to work for the salary of a blue collar worker. If someone wants that job, either they have an enormous sense of civic duty or more likely a way to exploit that power to their own ends. I also do not want to have to feel indebted to a leader for giving up their high paying job to serve the country, I would rather have someone I can look at and scream: you're being paid $200,000pa, where's my fucking results.
Well, put it this way, it is a hell of a lot easier to turn that Pu-238 into Pu-239 through bombardment in a small reactor than it would be to isolate a useful quantity of U-235 from anything you're likely to be able to find outside of weapons, including fuel rods. I'm not saying it would be easy, but excluding fissile isotopes, that would be by far the next most convenient isotope for making a type weapon, that lets face it, is really, really hard to make. Sure, you or I could not turn it into weapons grade 239, but we couldn't make a multi point hollow pit implosion mechanism either. Gun types are simpler, but getting that U-235 is next to impossible, unless you have hundreds of tonnes of uranium and some gas centrifuges lying around.
Windows 7 is by and large better than XP, but its search functionality is a huge step back. I hit Control-F, it takes half an hour to search my drive and I can't find anything. I have no idea what its even searching, I cannot find a text string inside my plain text sourcecode files and it's too slow to be just searching filenames. So what the heck is it doing?
The best search I've seen is in Gnome, maybe an older version, you can add conditions and it will find things that match it. Intuitive, customisable and fast.
When Gnome2 came out it was exactly the same, the best applets from Gnome1 were gone, the window manager had gone from the infinitely customisable Sawfish to bare bones Metacity, most configuration options were gone, 2.6 they brought in "spatial file manager" and told everyone to change the way they use directories to accommodate.
Slowly but surely, everything came flooding back and eventually it had reverted to a usable desktop that was actually better than 1.4. But make no doubt about it, every big decision made by "designers" up unto this point still had been 100% wrong, the changes that repaired it were all done as technical improvements by the maintainers.
I was a gnome developer for 2 years, maintaining some of the libraries the desktop uses. You'd be surprised how much power is vested in the maintainers of the various components and how much good can be done by these people. The one and only problem is the release team with the power to swap out a working component in favour of a proof of concept, which tends to be run by narcissists. Beyond the release team, Gnome developers are very rational people who care deeply about their users.
Governments exist to be coercive, if coercion was unneeded then governments would be too. That sounds circular, but I am sure we can all think of a few examples of where governments should be coercive, such as in the case of criminal law, breech of contract, advertising/labelling standards, traffic laws, fire safety codes and so forth, because I have seen times and places where such things have not been enforced and things have been unpleasant. Thus it is silly to make blanket statements about government coercion being bad.
In this case, the government has already interfered with people's lives by paying people to have children. If its allowed to do that, then I don't see why it shouldn't at least be discriminating enough with this money to make sure that the parents are giving the government the kind of children it paid for, otherwise its the parents right to do anything they want with their own child, but with their own money.