Here's the single biggest way you can help most open source projects, especially the relatively small ones: be active on the forums and help to answer questions from less experienced users. I run several open source projects, and user support can really cut into the time I have for developing them. Every time a user posts a helpful answer to another user's question, it means I don't have to do it myself, which means I can spend that time coding instead.
Bug reports and feature requests are also useful. Learn to write good bug reports: the more precise and detailed, the better. A report that says, "Feature X doesn't work," is much less useful than a report that says, "Load the attached data file, select the 'Vaporize' command, and note the lack of an earth-shattering kaboom when you click OK."
And of course, it's completely false to claim they don't get any money from second sale customers. Charging $70 for a game is ridiculous. But if you know you can resell it for $30 when you're done, that brings the price down to a much more reasonable $40. If the used game market didn't exist, I suspect there would be a lot fewer people willing to buy new games at their current prices.
Why am I really scared by the idea that every car will be remotely controllable via a wireless connection? Of course there's no risk. It's completely inconceivable that someone will figure out how to hack into the control system, bypassing whatever authentication is required and taking control of random cars as they drive down the road. We all know things like that could never happen, since of course these cars will have unbreakable security.
I began converting to CFLs about eight years ago, and have been using them almost exclusively for several years. I have never had a single one burn out, not even the ones I've been using every day for eight years. Maybe I've just been lucky. More likely, though, it means my electricity isn't too noisy, that I've been getting good quality bulbs (though most of them are from Costco and Home Depot, which are some of the very cheapest places I've found to get them), or that I actually follow the instructions about not using "non-dimmable" ones on circuits with dimmers or timers.
I've also been impressed by the improvement in quality over that time. Modern CFLs truly come on instantly with no flicker (though it does take about a minute for them to reach full brightness), and I can't tell the difference between the light they produce and that from incandescents.
I've used Pthreads successfully as a cross-platform threading library. http://sourceware.org/pthreads-win32 is a quite good implementation for Windows, and it's built into Linux (and all other POSIX compatible OS's, such as OS X, as well).
It's fine to eat prime rib and tira misu with some cheese-coated appetizer, but a coke, fries and grilled chicken sandwich from McDonalds is a sin?
Think of this as a direct solution to an engineering problem. You identify a serious problem (widespread obesity leading to increased heart disease, diabetes, etc.). You study the problem and identify the major factors contributing to it (junk food, sodas, food advertising to children, etc.). Then you find ways to directly address those contributing factors. No one is talking about a tiramisu tax because, frankly, tiramisu has a negligible impact on public health. Sodas have a huge impact on public health, and that's why it makes sense to target them.
Strong typing helps _only_ weak programmers, the rest of us either (a) remember the types of our variables or (b) expect "1" + "2" -> 3, not "12".
As a programmer with 25 years of experience, I could hardly disagree more. When developing any large project, static typing is hugely beneficial. It lets you catch far, far more errors at compile time. In a dynamic language, those would all be runtime errors that could easily slip through your testing and make it out to a customer. It makes automated refactoring possible. (Ever try doing a major restructuring of a 500k line code base written in a dynamic language? Good luck!) It enables all sorts of static analyses that let you be a more productive programmer. Try using a really good Java IDE like Intellij IDEA, then try the best Python or Ruby editor available, and you'll feel like you've gone back to the stone age. No "Find Usages"? No autocompletion? No "Go to Definition"? You simply can't do these things in a dynamic language, because the editor has no idea what the type of any variable is.
This isn't meant to criticize dynamic languages. They definitely have their place. But 90% of the symbols in most programs should be statically typed. I don't see why more languages don't simply offer both options. In those that do (e.g. Groovy), type declarations are simply optional. If you declare a type, it gets checked at compile time. If you don't, that symbol becomes dynamically typed. It works very well.
Seriously, every other form of communications already has taxes and surcharges on it. Take a look at your phone bill some time and see if you can figure out what all the different items on it really are.
If you object to paying an extra 15 cents per month, just say so. If you don't think this is the best way for the government to spend that money, say so. But don't call it a slippery slope when it's nothing of the sort. It's just putting internet access into the same category as cell phone, land line, cable, etc.
There's a long history of innovative, unconventional game controllers. Most of them are nothing more than interesting historical footnotes. Few people bought them and few games used them.
What makes the Wiimote different is that it's the standard controller for the console. It comes bundled with every single console sold. That's why game developers actually use it: they aren't restricting their market.
If Microsoft decides to bundle this thing with every Xbox sold, then it's a big deal. If it's an optional accessory that you have to buy separately, then it's another historical footnote.
I've been using Netbeans for C++ development for about a year, and I'm generally happy with it. It's true that C++ support is much less sophisticated than Java support (many fewer refactorings supported, etc.), but all the basics are there, and they work well enough.
Prior to that I used Eclipse, and wasn't at all happy with it. If Netbeans treats C++ like Java's younger sibling, Eclipse treats it as the unloved stepchild. The C++ support was incredibly buggy, and didn't seem to be getting any better with successive releases. Also, I found the whole UI painfully convoluted and very hard to use. Moving to Netbeans was a big improvement in almost every way.
I also use Visual Studio (not Express, the full version) for one project that requires it, and I absolutely detest it. So many of the basic features just aren't there, or don't work at all. For example, "Find all references" on a method will indiscriminately find references to every method of any class that happens to have the same name, "Go to definition" often takes you to the wrong class, there are no refactoring tools at all, etc. I wouldn't recommend it to anyone under any circumstances.
It sounds like you've already answered the question yourself. Your analysis of the situation is exactly right. If you accept the deal, you will lose your independence. You will lose control of the technology. You may lose the technology altogether: once it belongs to the big corporation, they are free to fire you, or transfer you to a different project, or cancel the project and throw away all your work. If you don't think that's realistic, think again. Companies cancel projects all the time, often for terrible reasons, often after they've invested a lot of time and money into them.
What you gain is money. So that's the trade-off you're considering. But you've already told us you don't care much about money, but do care about your independence and having control of the technology. So why on earth would you give up things you care about to get something you don't care about?
And don't let anyone tell you it's silly or naive to value other things more than money. Throughout my career, I have never once chosen the best paying job or career path over the one I thought I would enjoy more. And I don't regret a single one of those choices.
Remember this: you can't buy happiness, but you can sell it. Don't sell yours. Throughout your career, people will again and again ask you to give up your happiness in exchange for money. It's almost always a bad idea.
The only way you get rid of the fixed costs (like insurance and registration) is to get rid of the car altogether
Insurance is a variable cost: your premiums generally depend on how much you drive. I own a car, but only drive it about 1000 miles per year, and my insurance premiums are very low. Back when I was driving 10,000 miles per year, they were a lot higher.
The earth's climate is incredibly, ridiculously complex. Looking at one data point is completely meaningless, and claiming that any single data point supports or refutes global warming is downright irresponsible. See, for example, some of the posts above explaining why global warming is actually expected to make Antarctic winters colder (but shorter). And see the replies to those posts, in which thoroughly ignorant people call this religion and mock them for trying to explain away evidence that "obviously" refutes global warming.
Don't fool yourself into thinking you know more about the earth's climate than the people who spend their whole lives studying it. Don't think they're unaware of this data. Don't think they haven't thought about it far more carefully than you have. And then listen to what they say.
Of course there are reputable scientists that oppose the idea. That's how science works. Scientists are permitted, even encouraged, to challenge widely held viewpoints. But science works by consensus, and the overwhelming consensus is that global warming is real.
What's up with Slashdot constantly posting these stories trying to deny global warming? It's silly, and really kind of pathetic.
Vast amounts of data related to climate change have been collected over a period of decades. Thousands of scientists have spent years analyzing that data. And those scientist have overwhelmingly concluded that global warming is real.
Then some journalist comes across one random data point - say, that the ice thickness at one particular station in Antarctica has increased - and they start jumping up and down and saying, "Global warming is a lie!" And you can be sure that Slashdot will publicize it.
Let me put it bluntly: the people who actually understand the earth's climate, who have looked at ALL the data and know how to interpret it, are almost unanimous is saying that global warming is real. Unless you're an atmospheric scientist yourself and know as much about it as they do, maybe you should listen to what they say instead of pretending to know things you don't.
No, no violation of Bell's inequality has ever been observed. What has been observed is violations of closely related inequalities obtained by making additional assumptions. (You can tell which side of the issue someone believes in by how they talk about this. People who believe in hidden variables theories talk about "supplementary assumptions", while those who don't believe in them talk about "loopholes" in the experimental tests. But both are really the same thing.)
The basic idea behind this theory (that it's physically impossible to perform any of the experiments which would supposedly demonstrate strange quantum behavior) is not a new one. I remember reading a paper on stochastic electrodynamics many years ago in which the authors pointed out that it's mathematically impossible to observe a violation of Bell's inequality unless the efficiency of your photodetector is above a certain level, much higher than any existing one. They suggested it might be physically impossible to create a photodetector with the required efficiency, and that there might be a deep reason it was impossible, related to the fact if you could create one, you could then observe a violation of Bell's inequality. This researcher is trying to formulate that idea in a more rigorous way.
His predictions about double precision appear to be based on a misunderstanding about how the 4800 series works. Here's what he says about it:
"That 680 GFLOPs would be assuming AMD converts 2/5 of the stream units to double precision. Now, if AMD were to convert 3/5 of those units to double precision, a single card could do slightly over 1 TFLOP."
He seems to believe that 1/5 of the stream units support double precision, and they could simply convert some additional ones to support it as well. But that isn't the case. In fact, it has no double precision units. Instead, it can have four single precision units work together to act as one double precision unit. That's how they were able to support double precision without using a lot of extra silicon. Actually having dedicated double precision units would require far more silicon, and would be a major change.
The challenge in making something like that work is specifying where accuracy is required and where it isn't. Consider a video decoder.
If there's a one bit error in the color of a pixel, no one will notice it.
If there's a one bit error in the compressed data stream, that could produce a large block of incorrect pixels.
If there's a one bit error in the address you load the data stream from, you'll get a screen full of garbage.
If there's a one bit error in the address of a subroutine you call, your program will crash.
Conventional computers begin by assuming everything needs to be accurate. You can then make a conscious choice to sacrifice accuracy in certain places (by your choice of algorithm) when you're sure it's OK. If this is another way of doing that, it could be useful. For example, you might decide that the content of the frame buffer isn't very important: errors there don't hurt much, and it all gets rewritten 30 times per second anyway. So you could reduce the power to that block of memory, knowing that it will increase the probability of random errors.
But if you reverse the fundamental assumption - everything is inaccurate except a small set of things that you specifically demand to be accurate - the entire way we write programs would become untenable. I just don't see how that could be made to work.
Here's the single biggest way you can help most open source projects, especially the relatively small ones: be active on the forums and help to answer questions from less experienced users. I run several open source projects, and user support can really cut into the time I have for developing them. Every time a user posts a helpful answer to another user's question, it means I don't have to do it myself, which means I can spend that time coding instead.
Bug reports and feature requests are also useful. Learn to write good bug reports: the more precise and detailed, the better. A report that says, "Feature X doesn't work," is much less useful than a report that says, "Load the attached data file, select the 'Vaporize' command, and note the lack of an earth-shattering kaboom when you click OK."
And of course, it's completely false to claim they don't get any money from second sale customers. Charging $70 for a game is ridiculous. But if you know you can resell it for $30 when you're done, that brings the price down to a much more reasonable $40. If the used game market didn't exist, I suspect there would be a lot fewer people willing to buy new games at their current prices.
That's very different from what's discussed in this article. It's just a truck pulling multiple trailers at once.
Why am I really scared by the idea that every car will be remotely controllable via a wireless connection? Of course there's no risk. It's completely inconceivable that someone will figure out how to hack into the control system, bypassing whatever authentication is required and taking control of random cars as they drive down the road. We all know things like that could never happen, since of course these cars will have unbreakable security.
I began converting to CFLs about eight years ago, and have been using them almost exclusively for several years. I have never had a single one burn out, not even the ones I've been using every day for eight years. Maybe I've just been lucky. More likely, though, it means my electricity isn't too noisy, that I've been getting good quality bulbs (though most of them are from Costco and Home Depot, which are some of the very cheapest places I've found to get them), or that I actually follow the instructions about not using "non-dimmable" ones on circuits with dimmers or timers. I've also been impressed by the improvement in quality over that time. Modern CFLs truly come on instantly with no flicker (though it does take about a minute for them to reach full brightness), and I can't tell the difference between the light they produce and that from incandescents.
I've used Pthreads successfully as a cross-platform threading library. http://sourceware.org/pthreads-win32 is a quite good implementation for Windows, and it's built into Linux (and all other POSIX compatible OS's, such as OS X, as well).
It's fine to eat prime rib and tira misu with some cheese-coated appetizer, but a coke, fries and grilled chicken sandwich from McDonalds is a sin?
Think of this as a direct solution to an engineering problem. You identify a serious problem (widespread obesity leading to increased heart disease, diabetes, etc.). You study the problem and identify the major factors contributing to it (junk food, sodas, food advertising to children, etc.). Then you find ways to directly address those contributing factors. No one is talking about a tiramisu tax because, frankly, tiramisu has a negligible impact on public health. Sodas have a huge impact on public health, and that's why it makes sense to target them.
Strong typing helps _only_ weak programmers, the rest of us either (a) remember the types of our variables or (b) expect "1" + "2" -> 3, not "12".
As a programmer with 25 years of experience, I could hardly disagree more. When developing any large project, static typing is hugely beneficial. It lets you catch far, far more errors at compile time. In a dynamic language, those would all be runtime errors that could easily slip through your testing and make it out to a customer. It makes automated refactoring possible. (Ever try doing a major restructuring of a 500k line code base written in a dynamic language? Good luck!) It enables all sorts of static analyses that let you be a more productive programmer. Try using a really good Java IDE like Intellij IDEA, then try the best Python or Ruby editor available, and you'll feel like you've gone back to the stone age. No "Find Usages"? No autocompletion? No "Go to Definition"? You simply can't do these things in a dynamic language, because the editor has no idea what the type of any variable is.
This isn't meant to criticize dynamic languages. They definitely have their place. But 90% of the symbols in most programs should be statically typed. I don't see why more languages don't simply offer both options. In those that do (e.g. Groovy), type declarations are simply optional. If you declare a type, it gets checked at compile time. If you don't, that symbol becomes dynamically typed. It works very well.
Seriously, every other form of communications already has taxes and surcharges on it. Take a look at your phone bill some time and see if you can figure out what all the different items on it really are.
If you object to paying an extra 15 cents per month, just say so. If you don't think this is the best way for the government to spend that money, say so. But don't call it a slippery slope when it's nothing of the sort. It's just putting internet access into the same category as cell phone, land line, cable, etc.
There's a long history of innovative, unconventional game controllers. Most of them are nothing more than interesting historical footnotes. Few people bought them and few games used them.
What makes the Wiimote different is that it's the standard controller for the console. It comes bundled with every single console sold. That's why game developers actually use it: they aren't restricting their market.
If Microsoft decides to bundle this thing with every Xbox sold, then it's a big deal. If it's an optional accessory that you have to buy separately, then it's another historical footnote.
I've been using Netbeans for C++ development for about a year, and I'm generally happy with it. It's true that C++ support is much less sophisticated than Java support (many fewer refactorings supported, etc.), but all the basics are there, and they work well enough.
Prior to that I used Eclipse, and wasn't at all happy with it. If Netbeans treats C++ like Java's younger sibling, Eclipse treats it as the unloved stepchild. The C++ support was incredibly buggy, and didn't seem to be getting any better with successive releases. Also, I found the whole UI painfully convoluted and very hard to use. Moving to Netbeans was a big improvement in almost every way.
I also use Visual Studio (not Express, the full version) for one project that requires it, and I absolutely detest it. So many of the basic features just aren't there, or don't work at all. For example, "Find all references" on a method will indiscriminately find references to every method of any class that happens to have the same name, "Go to definition" often takes you to the wrong class, there are no refactoring tools at all, etc. I wouldn't recommend it to anyone under any circumstances.
What you gain is money. So that's the trade-off you're considering. But you've already told us you don't care much about money, but do care about your independence and having control of the technology. So why on earth would you give up things you care about to get something you don't care about?
And don't let anyone tell you it's silly or naive to value other things more than money. Throughout my career, I have never once chosen the best paying job or career path over the one I thought I would enjoy more. And I don't regret a single one of those choices.
Remember this: you can't buy happiness, but you can sell it. Don't sell yours. Throughout your career, people will again and again ask you to give up your happiness in exchange for money. It's almost always a bad idea.
Insurance is a variable cost: your premiums generally depend on how much you drive. I own a car, but only drive it about 1000 miles per year, and my insurance premiums are very low. Back when I was driving 10,000 miles per year, they were a lot higher.
The earth's climate is incredibly, ridiculously complex. Looking at one data point is completely meaningless, and claiming that any single data point supports or refutes global warming is downright irresponsible. See, for example, some of the posts above explaining why global warming is actually expected to make Antarctic winters colder (but shorter). And see the replies to those posts, in which thoroughly ignorant people call this religion and mock them for trying to explain away evidence that "obviously" refutes global warming.
Don't fool yourself into thinking you know more about the earth's climate than the people who spend their whole lives studying it. Don't think they're unaware of this data. Don't think they haven't thought about it far more carefully than you have. And then listen to what they say.
Of course there are reputable scientists that oppose the idea. That's how science works. Scientists are permitted, even encouraged, to challenge widely held viewpoints. But science works by consensus, and the overwhelming consensus is that global warming is real.
Vast amounts of data related to climate change have been collected over a period of decades. Thousands of scientists have spent years analyzing that data. And those scientist have overwhelmingly concluded that global warming is real.
Then some journalist comes across one random data point - say, that the ice thickness at one particular station in Antarctica has increased - and they start jumping up and down and saying, "Global warming is a lie!" And you can be sure that Slashdot will publicize it.
Let me put it bluntly: the people who actually understand the earth's climate, who have looked at ALL the data and know how to interpret it, are almost unanimous is saying that global warming is real. Unless you're an atmospheric scientist yourself and know as much about it as they do, maybe you should listen to what they say instead of pretending to know things you don't.
The basic idea behind this theory (that it's physically impossible to perform any of the experiments which would supposedly demonstrate strange quantum behavior) is not a new one. I remember reading a paper on stochastic electrodynamics many years ago in which the authors pointed out that it's mathematically impossible to observe a violation of Bell's inequality unless the efficiency of your photodetector is above a certain level, much higher than any existing one. They suggested it might be physically impossible to create a photodetector with the required efficiency, and that there might be a deep reason it was impossible, related to the fact if you could create one, you could then observe a violation of Bell's inequality. This researcher is trying to formulate that idea in a more rigorous way.
His predictions about double precision appear to be based on a misunderstanding about how the 4800 series works. Here's what he says about it: "That 680 GFLOPs would be assuming AMD converts 2/5 of the stream units to double precision. Now, if AMD were to convert 3/5 of those units to double precision, a single card could do slightly over 1 TFLOP." He seems to believe that 1/5 of the stream units support double precision, and they could simply convert some additional ones to support it as well. But that isn't the case. In fact, it has no double precision units. Instead, it can have four single precision units work together to act as one double precision unit. That's how they were able to support double precision without using a lot of extra silicon. Actually having dedicated double precision units would require far more silicon, and would be a major change.
If there's a one bit error in the color of a pixel, no one will notice it.
If there's a one bit error in the compressed data stream, that could produce a large block of incorrect pixels.
If there's a one bit error in the address you load the data stream from, you'll get a screen full of garbage.
If there's a one bit error in the address of a subroutine you call, your program will crash.
Conventional computers begin by assuming everything needs to be accurate. You can then make a conscious choice to sacrifice accuracy in certain places (by your choice of algorithm) when you're sure it's OK. If this is another way of doing that, it could be useful. For example, you might decide that the content of the frame buffer isn't very important: errors there don't hurt much, and it all gets rewritten 30 times per second anyway. So you could reduce the power to that block of memory, knowing that it will increase the probability of random errors.
But if you reverse the fundamental assumption - everything is inaccurate except a small set of things that you specifically demand to be accurate - the entire way we write programs would become untenable. I just don't see how that could be made to work.