I'm not sure what you're trying to say, but I think you ought to acquaint yourself with the inverse square law as it applies to light, and consider perhaps that mars is in a rather different situation as the Earth, when it comes to climate.
Absolutely. This isn't a matter of publishing a scientific paper, it's a matter of public policy. We consider this normal when it comes to other matters -- for instance, suppose a pharmaceutical company wants to market a new drug. The burden of proof is on them to demonstrate to the FDA that the drug is safe. The burden of proof is not on the FDA to prove that the drug is dangerous or harmful.
Furthermore, consider what we know about carbon dioxide in the atmosphere:
there's a lot more of it than there was before the industrial revolution
the increase roughly corresponds to the amount of increase we would expect from the burning of fossil fuels as a result of human activity
carbon dioxide is known to be a greenhouse gas, which prevents heat from escaping back out into space
None of the above statements should be controversial. What is controversial, is how the increased carbon dioxide is going to interact with the rest of the environment, and for that we use computer models. These models may be flawed, but the worst models will always be better than sticking your head in the sand and hoping for the best. The best computer models are saying that we can expect temperatures to rise.
Unlike the pharmaceutical example above, we already know from the non-controversial facts of the matter that any result other than an increase of temperatures would be surprising. If, say, a pharmaceutical company wished to market a drug containing cyanide, the FDA would and should certainly be interested whether there were some mechanism in place that is expected to render the cyanide harmless.
If you need an additional reason why we should not demand positive proof, consider the form which positive proof would take: simply, to let things be as they are, and to wait and see if an environmental catastrophe ensues. If we were to take that course of action, and a catastrophe did ensure (as we have every reason to believe it would), we would have lost much time in implementing a solution, and the harm would be far greater.
"Noticeable impact" is not the bar that was raised. "Cause significant and irreparable harm to life on earth" is the bar.
What constitutes "significant harm"? The IPCC is predicting average surface temperatures to go up by between 2.0 to 11.5 degrees F in the 21st century (according to wikipedia). If we're to assume the impact is on the low end, would 2 degrees be significant? If you live in a northern climate, probably not. The weather might actually be nicer. If you live in Africa or India, it may be very significant, as in widespread famines and droughts. Even if things get bad, we the rich will still be able to buy ourselves food, but it isn't our place to think about ourselves only, but also the poor who won't be able to buy food when their crops fail, and can't afford to move to a nicer climate. Just because America isn't going to become one big Death Valley, doesn't mean we shouldn't be concerned.
Also, quite aside from global warming, there is also the ocean acidification that goes along with increased carbon dioxide.
It's (mostly) the politicians (both sides!) I blame. They decided to fool the people to agree with their respective intractable positions, instead of engage them and bring consensus about an issue that may or may not be politically treatable. We still don't have good public information, that can be digested by laypeople
You will never get consensus from people who are religiously opposed to the idea that human activity might cause environmental harm, and who believe that global warming is just a socialist plot to institute a world government. (Not that all global warming sceptics are like that, but many are.) There may be many who just need convincing, but for them the information is out there.
Be that as it may, the level of carbon dioxide in the Earth's atmosphere has risen from about about 280 parts per million before the industrial revolution, to about 380 ppm at present. The burden of proof is on those who believe that that's not going to have a noticeable impact to make their case, and if their conclusions are at all in doubt, the path of prudence is to not rock the boat, and do what we can to cut back on CO2 emissions.
If we did that, it wouldn't be Haskell anymore. If you prefer Ocaml, by all means keep using it. It's a very good language. Those of us who prefer Haskell have our reasons for wanting its unique features.
You might use it in a job, Scala seems to popular amongst businesses that are tied to a large codebase of pre-existing java code, but want to use a more modern language.
I almost mentioned Clojure, but I wanted to keep my post short. I haven't used it, but it does look interesting. Like Erlang, I think the lack of strong static typing is a significant shortcoming (though my view seem to be in the minority, given the popularity of python, ruby, php, etc...). However, I am pleased that Clojure implements software transactional memory (STM).
The first three examples given are, to me, fairly straightforward errors. Perhaps you'd rather that ghc said, "Hey dummy, Char doesn't belong to the typeclass Num, so don't try to use it as if it was."
The last one is questionable. Fortunately, ghc 6.12.1 (which I just tried it on) no longer refers to the monomorphism restriction in its error message. The inferred typeclass is still confusing, but the message tells you that you're using the wrong type for that context, from which it should be straightforward to diagnose the problem, or at least add some type annotations to give the compiler a better shot at providing a better error message.
I will concede that some ghc errors can be confusing, and the example given is certainly not the worst, but overall I'm pretty happy with the errors I get. If you consider Haskell errors to be particularly bad, perhaps you could provide us with an example of a language with clear, concise errors, such that all languages should aspire to?
If you want to learn something new without throwing away all your java experience, you might try Scala. I've heard good things about it (though I have no personal experience with it myself). As functional languages go, I prefer Haskell [1] as my default problem-solving language. You might have trouble finding a Haskell job, but it will teach you things that will be relevant in other languages.
Erlang is an interesting language. I view it as kind of a one-trick pony, but for distributed systems I've not seen anything better.
Define wealthy for me. Then prevent that definition from getting broader and broader as cash-strapped governments seek to acquire more money.
The definition of "wealthy" that I think is the most useful at present, is: any person who makes sufficient income from capital gains to be relatively unaffected by variations in the income tax. (People specifically excluded from this those who are unaffected by changes in income tax on account of having no job, or such a low income that their tax rate is close to zero.)
If the capital gains tax were made to be comparable to income tax, then we'll perhaps need a more specific definition with a dollar amount attached.
Why can't it just shut down one of the two normal cores, and run the other core at a highly reduced rate to get the same power savings?
I'm not really the expert at hardware design, but I'd guess that the energy savings from reducing the clock on a high-speed chip aren't all that dramatic. If you have a 1.5 ghz chip, it has to be designed around circuits that can reach a stable state in less than a nanosecond. A chip clocked at a third the speed can use longer wires and more complex circuits, and probably use lower voltages because it has a lot more time between clock cycles. The optimal design for the slower chip may differ considerably from the optimal design of the fast chip. Similarly, the fast cores might possibly be simpler if they don't have to be capable of running at a slower clock.
Additionally, I've seen plenty of benchmarks where a higher-power draw chip that can get done with a task quickly and drop back to low-power idle mode is actually more energy efficient than a lower-power chip that takes longer to get the task done.
I'd guess that the slow core is designed for tasks that really aren't cpu constrained at all, but which might have real-time requirements, such as logging gps coordinates or accelerometer readings.
Reflections and shadows are easy from an implementation point of view, but they aren't "free" from a performance point of view, and as MidoriKid noted, rays don't all cost the same - you usually do approximately log(N) ray intersection tests for each ray, with a good acceleration structure, where N is the number of polygons. There are also problems with very large numbers of independently moving geometry - rebuilding the acceleration structure is generally N*(log(N).
In practice, ray tracers slow down as you increase the amount of screen space taken up by complex objects, but they tend to be fairly insensitive to the total amount of geometry in the scene, whereas graphics cards tend to be limited by the total number of polygons in the scene.
I concur, that is a very good book that covers city planning, layout of individual buildings, and construction techniques. The book is structured as several hundred rules-of-thumb, along with a page or two of justification for each one.
I had wondered if I was just ignorant, since the Petrov story sounded like something I should have heard about somewhere. I suppose that's the risk of making a show with a target audience that includes a lot of trivia nerds - it's hard to come up with surprising true stories that they haven't already heard.
(I am familiar with a very similar story about a Soviet submarine with nuclear torpedoes that decided not to fire at an American destroyer that was dropping depth charges on them during the Cuban missile crisis because they needed the unanimous consent of a certain three officers, and only two agreed.)
I watched the whole thing and thought they did a pretty decent job. Some of the camera work could have been better, but I'm willing to overlook that given their constraints. I like the characters. None of the roles seem like they've been forced in order to advance the plot (though the interactions between the DHS guy and his assistant seemed rather cliche). The "nuclear battery" thing is real technology (called a radioisotope thermal generator), and Stanislav Petrov appears to have been a real person (the Wikipedia article is probably too old to have been made up by the creators of the show). For me, it's too early to tell if the show is likely to be a good one, but the first episode is promising.
One viewer that really loves Firefly and will buy the DVDs is worth more revenue than a viewer who kills an evening watching Dancing with the Stars because they're bored and then forgets about it forever.
I don't know that that's really true. The point of network TV isn't to sell DVDs, it's to sell commercials. If Ford runs a commercial, and viewers go out and buy Fords, the show is a success, regardless of whether the viewers were really enjoying the show.
It may be possible that if a person really likes a show, they're more likely to think highly of its advertisers, but I think the networks are really more interested in attracting the maximum number of eyballs, and the more gullible they are, the better.
I gave up in disgust after looking at the first question. "Legitimate" psychological tests don't ask you to self diagnose; they ask a large number of concrete questions that can be used to infer psychology.
I had a similar reaction to the test. (I didn't bother to read the article.. it sounds like that was a good plan on my part.) The test didn't seem like it measured empathy so much as whether I self-identify as an empathetic person.
I don't think my own system of empathy works at the same level as what the test was trying to measure. I really don't think very much about what circumstances are like for other people. Rather, I've adopted a set of rules for what constitutes fair and decent behavior between human beings, and it bothers me when those rules are violated. Similarly, it bothers me when it becomes popular to think of some group of people as sub-human in some way (whether they are Mexicans, Palestinians, Republicans, whatever...). Maybe I've lost some of my empathy by reducing it to a set of axioms, or maybe my empathy is still there in full force, it just does its work subconsciously. It might even be possible to test this in some way, but I'm pretty sure the test linked from the article doesn't measure anything meaningful whatsoever.
Thanks for your insight, I too thought the article was a bit over-the-top. Even supposing that the USPTO does raise fees, the article took at as a foregone conclusion that they would raise them across the board. The patent process already has cheaper fees for individuals and small businesses, and there's no reason to assume they wouldn't continue and/or expand that. I'm in favor of higher fees, if it means we get higher quality patents and prices don't go up for small organizations.
A potential $100,000 fine just for filing a bad patent would stop most small businesses or independent inventors from filing at all, even if the patent was valid -- it's way too much risk. I certainly don't have $100,000 lying around.
Ultimately, it's the patent offices' job to determine if patents are valid or not. The applicant ought to do due diligence to check if their idea is original, but realistically it's not possible to know every invention that has ever been thought of in the whole history of the human race. Also, infringement is fairly subjective -- it isn't always possible to predict which way the courts are going to rule.
If you want there to be fewer bad patents, there is an easier solution: simply make it cheaper and easier to challenge an existing patent. When you file a patent, the patent office is effectively saying "this patent represents a unique idea significantly different from anything that has been invented before". This is the claim they make after you pay them a couple hundred dollars. It should be even simpler to ask them, "does such-and-such invention infringe on such-and-such patent?", and they should be able to come up with an answer for a cost that is similar to filing a patent. As far as I understand it, such a simple determination currently requires a very expensive lawsuit.
I don't know if I agree; haskell programmers tend to be demographically more experienced (it's the only language I know of where it seems that the median programmer has or is working on a PhD), but I would also trust a relatively inexperienced programmer to write fairly good code in Haskell, especially if they used an existing web framework like HappStack. Static typing and well-defined libraries go a long way towards making it hard to do the wrong thing. This is one of the things I find compelling about Haskell - you don't have to be some kind of awesome programmer to be able to write solid applications.
I feel like web security is like a bunch of switches that you have to know to turn off - training can help, but it's better if those switches are not just off by default, but hard to turn on. For instance, I used HappStack to write a simple web app, and never worried about escaping strings. Once things were working properly, I thought, "ok, now let's fix all the security holes I've left lying around and do some proper string escaping". I discovered, when I tried to enter html tags in one of the input forms, that the html library was escaping the strings for me, and I didn't even know it.
There is, of course, a steeper learning curve, and you won't find a pile of books to tell you how to use HappStack, like you would if you were using a more mainstream framework. This contributes to sampling bias; the mediocre or poorly motivated programmers are likely to give up, so it would be difficult to test my hypothesis.
I noticed you can get a 2Ghz 8-core Opteron 6128 for $300 from newegg, which might not be a bad deal for a desktop, assuming you have an application that can use that many cores.
Secondly - unless you are... calculating eigen values of huge matrices...
Actually, that is what I've been using my home computer for recently. I think you're right though about few "normal" applications being able to use many cores effectively. However, I think you should keep in mind that much of the software that will be run on current hardware hasn't been written yet. Of the computers that are being bought new now that will still be used regularly three or four or eight years from now (why buy a new computer if the one we have is fast enough), they will probably be running much more heavily threaded applications.
Even if the vast majority of applications in the not-too-distant future remain single-threaded, it is likely that the few that are CPU-bound will be optimized and properly threaded. You only have to fix the 1% of the code that takes 99% of the time - the rest doesn't matter.
Here are some options that Virgin Mobile isn't doing:
Network capacity is a finite resource. It looks like Virgin Mobile is dealing with that in the most reasonable way. Good for them.
I'm not sure what you're trying to say, but I think you ought to acquaint yourself with the inverse square law as it applies to light, and consider perhaps that mars is in a rather different situation as the Earth, when it comes to climate.
Absolutely. This isn't a matter of publishing a scientific paper, it's a matter of public policy. We consider this normal when it comes to other matters -- for instance, suppose a pharmaceutical company wants to market a new drug. The burden of proof is on them to demonstrate to the FDA that the drug is safe. The burden of proof is not on the FDA to prove that the drug is dangerous or harmful.
Furthermore, consider what we know about carbon dioxide in the atmosphere:
None of the above statements should be controversial. What is controversial, is how the increased carbon dioxide is going to interact with the rest of the environment, and for that we use computer models. These models may be flawed, but the worst models will always be better than sticking your head in the sand and hoping for the best. The best computer models are saying that we can expect temperatures to rise.
Unlike the pharmaceutical example above, we already know from the non-controversial facts of the matter that any result other than an increase of temperatures would be surprising. If, say, a pharmaceutical company wished to market a drug containing cyanide, the FDA would and should certainly be interested whether there were some mechanism in place that is expected to render the cyanide harmless.
If you need an additional reason why we should not demand positive proof, consider the form which positive proof would take: simply, to let things be as they are, and to wait and see if an environmental catastrophe ensues. If we were to take that course of action, and a catastrophe did ensure (as we have every reason to believe it would), we would have lost much time in implementing a solution, and the harm would be far greater.
What constitutes "significant harm"? The IPCC is predicting average surface temperatures to go up by between 2.0 to 11.5 degrees F in the 21st century (according to wikipedia). If we're to assume the impact is on the low end, would 2 degrees be significant? If you live in a northern climate, probably not. The weather might actually be nicer. If you live in Africa or India, it may be very significant, as in widespread famines and droughts. Even if things get bad, we the rich will still be able to buy ourselves food, but it isn't our place to think about ourselves only, but also the poor who won't be able to buy food when their crops fail, and can't afford to move to a nicer climate. Just because America isn't going to become one big Death Valley, doesn't mean we shouldn't be concerned.
Also, quite aside from global warming, there is also the ocean acidification that goes along with increased carbon dioxide.
You will never get consensus from people who are religiously opposed to the idea that human activity might cause environmental harm, and who believe that global warming is just a socialist plot to institute a world government. (Not that all global warming sceptics are like that, but many are.) There may be many who just need convincing, but for them the information is out there.
Be that as it may, the level of carbon dioxide in the Earth's atmosphere has risen from about about 280 parts per million before the industrial revolution, to about 380 ppm at present. The burden of proof is on those who believe that that's not going to have a noticeable impact to make their case, and if their conclusions are at all in doubt, the path of prudence is to not rock the boat, and do what we can to cut back on CO2 emissions.
I also find that one very sad.
wwwxkcd.com/585
If we did that, it wouldn't be Haskell anymore. If you prefer Ocaml, by all means keep using it. It's a very good language. Those of us who prefer Haskell have our reasons for wanting its unique features.
You might use it in a job, Scala seems to popular amongst businesses that are tied to a large codebase of pre-existing java code, but want to use a more modern language.
I almost mentioned Clojure, but I wanted to keep my post short. I haven't used it, but it does look interesting. Like Erlang, I think the lack of strong static typing is a significant shortcoming (though my view seem to be in the minority, given the popularity of python, ruby, php, etc...). However, I am pleased that Clojure implements software transactional memory (STM).
The first three examples given are, to me, fairly straightforward errors. Perhaps you'd rather that ghc said, "Hey dummy, Char doesn't belong to the typeclass Num, so don't try to use it as if it was."
The last one is questionable. Fortunately, ghc 6.12.1 (which I just tried it on) no longer refers to the monomorphism restriction in its error message. The inferred typeclass is still confusing, but the message tells you that you're using the wrong type for that context, from which it should be straightforward to diagnose the problem, or at least add some type annotations to give the compiler a better shot at providing a better error message.
I will concede that some ghc errors can be confusing, and the example given is certainly not the worst, but overall I'm pretty happy with the errors I get. If you consider Haskell errors to be particularly bad, perhaps you could provide us with an example of a language with clear, concise errors, such that all languages should aspire to?
If you want to learn something new without throwing away all your java experience, you might try Scala. I've heard good things about it (though I have no personal experience with it myself). As functional languages go, I prefer Haskell [1] as my default problem-solving language. You might have trouble finding a Haskell job, but it will teach you things that will be relevant in other languages.
Erlang is an interesting language. I view it as kind of a one-trick pony, but for distributed systems I've not seen anything better.
[1] Learn you a Haskell for great good
The definition of "wealthy" that I think is the most useful at present, is: any person who makes sufficient income from capital gains to be relatively unaffected by variations in the income tax. (People specifically excluded from this those who are unaffected by changes in income tax on account of having no job, or such a low income that their tax rate is close to zero.)
If the capital gains tax were made to be comparable to income tax, then we'll perhaps need a more specific definition with a dollar amount attached.
I'm not really the expert at hardware design, but I'd guess that the energy savings from reducing the clock on a high-speed chip aren't all that dramatic. If you have a 1.5 ghz chip, it has to be designed around circuits that can reach a stable state in less than a nanosecond. A chip clocked at a third the speed can use longer wires and more complex circuits, and probably use lower voltages because it has a lot more time between clock cycles. The optimal design for the slower chip may differ considerably from the optimal design of the fast chip. Similarly, the fast cores might possibly be simpler if they don't have to be capable of running at a slower clock.
I'd guess that the slow core is designed for tasks that really aren't cpu constrained at all, but which might have real-time requirements, such as logging gps coordinates or accelerometer readings.
Reflections and shadows are easy from an implementation point of view, but they aren't "free" from a performance point of view, and as MidoriKid noted, rays don't all cost the same - you usually do approximately log(N) ray intersection tests for each ray, with a good acceleration structure, where N is the number of polygons. There are also problems with very large numbers of independently moving geometry - rebuilding the acceleration structure is generally N*(log(N).
In practice, ray tracers slow down as you increase the amount of screen space taken up by complex objects, but they tend to be fairly insensitive to the total amount of geometry in the scene, whereas graphics cards tend to be limited by the total number of polygons in the scene.
I concur, that is a very good book that covers city planning, layout of individual buildings, and construction techniques. The book is structured as several hundred rules-of-thumb, along with a page or two of justification for each one.
I had wondered if I was just ignorant, since the Petrov story sounded like something I should have heard about somewhere. I suppose that's the risk of making a show with a target audience that includes a lot of trivia nerds - it's hard to come up with surprising true stories that they haven't already heard.
(I am familiar with a very similar story about a Soviet submarine with nuclear torpedoes that decided not to fire at an American destroyer that was dropping depth charges on them during the Cuban missile crisis because they needed the unanimous consent of a certain three officers, and only two agreed.)
I watched the whole thing and thought they did a pretty decent job. Some of the camera work could have been better, but I'm willing to overlook that given their constraints. I like the characters. None of the roles seem like they've been forced in order to advance the plot (though the interactions between the DHS guy and his assistant seemed rather cliche). The "nuclear battery" thing is real technology (called a radioisotope thermal generator), and Stanislav Petrov appears to have been a real person (the Wikipedia article is probably too old to have been made up by the creators of the show). For me, it's too early to tell if the show is likely to be a good one, but the first episode is promising.
Stanislav Petrov
RTG
I don't know that that's really true. The point of network TV isn't to sell DVDs, it's to sell commercials. If Ford runs a commercial, and viewers go out and buy Fords, the show is a success, regardless of whether the viewers were really enjoying the show.
It may be possible that if a person really likes a show, they're more likely to think highly of its advertisers, but I think the networks are really more interested in attracting the maximum number of eyballs, and the more gullible they are, the better.
-jim
I had a similar reaction to the test. (I didn't bother to read the article.. it sounds like that was a good plan on my part.) The test didn't seem like it measured empathy so much as whether I self-identify as an empathetic person. I don't think my own system of empathy works at the same level as what the test was trying to measure. I really don't think very much about what circumstances are like for other people. Rather, I've adopted a set of rules for what constitutes fair and decent behavior between human beings, and it bothers me when those rules are violated. Similarly, it bothers me when it becomes popular to think of some group of people as sub-human in some way (whether they are Mexicans, Palestinians, Republicans, whatever...). Maybe I've lost some of my empathy by reducing it to a set of axioms, or maybe my empathy is still there in full force, it just does its work subconsciously. It might even be possible to test this in some way, but I'm pretty sure the test linked from the article doesn't measure anything meaningful whatsoever.
Thanks for your insight, I too thought the article was a bit over-the-top. Even supposing that the USPTO does raise fees, the article took at as a foregone conclusion that they would raise them across the board. The patent process already has cheaper fees for individuals and small businesses, and there's no reason to assume they wouldn't continue and/or expand that. I'm in favor of higher fees, if it means we get higher quality patents and prices don't go up for small organizations.
A potential $100,000 fine just for filing a bad patent would stop most small businesses or independent inventors from filing at all, even if the patent was valid -- it's way too much risk. I certainly don't have $100,000 lying around.
Ultimately, it's the patent offices' job to determine if patents are valid or not. The applicant ought to do due diligence to check if their idea is original, but realistically it's not possible to know every invention that has ever been thought of in the whole history of the human race. Also, infringement is fairly subjective -- it isn't always possible to predict which way the courts are going to rule.
If you want there to be fewer bad patents, there is an easier solution: simply make it cheaper and easier to challenge an existing patent. When you file a patent, the patent office is effectively saying "this patent represents a unique idea significantly different from anything that has been invented before". This is the claim they make after you pay them a couple hundred dollars. It should be even simpler to ask them, "does such-and-such invention infringe on such-and-such patent?", and they should be able to come up with an answer for a cost that is similar to filing a patent. As far as I understand it, such a simple determination currently requires a very expensive lawsuit.
I don't know if I agree; haskell programmers tend to be demographically more experienced (it's the only language I know of where it seems that the median programmer has or is working on a PhD), but I would also trust a relatively inexperienced programmer to write fairly good code in Haskell, especially if they used an existing web framework like HappStack. Static typing and well-defined libraries go a long way towards making it hard to do the wrong thing. This is one of the things I find compelling about Haskell - you don't have to be some kind of awesome programmer to be able to write solid applications.
I feel like web security is like a bunch of switches that you have to know to turn off - training can help, but it's better if those switches are not just off by default, but hard to turn on. For instance, I used HappStack to write a simple web app, and never worried about escaping strings. Once things were working properly, I thought, "ok, now let's fix all the security holes I've left lying around and do some proper string escaping". I discovered, when I tried to enter html tags in one of the input forms, that the html library was escaping the strings for me, and I didn't even know it.
There is, of course, a steeper learning curve, and you won't find a pile of books to tell you how to use HappStack, like you would if you were using a more mainstream framework. This contributes to sampling bias; the mediocre or poorly motivated programmers are likely to give up, so it would be difficult to test my hypothesis.
I noticed you can get a 2Ghz 8-core Opteron 6128 for $300 from newegg, which might not be a bad deal for a desktop, assuming you have an application that can use that many cores.
Actually, that is what I've been using my home computer for recently. I think you're right though about few "normal" applications being able to use many cores effectively. However, I think you should keep in mind that much of the software that will be run on current hardware hasn't been written yet. Of the computers that are being bought new now that will still be used regularly three or four or eight years from now (why buy a new computer if the one we have is fast enough), they will probably be running much more heavily threaded applications.
Even if the vast majority of applications in the not-too-distant future remain single-threaded, it is likely that the few that are CPU-bound will be optimized and properly threaded. You only have to fix the 1% of the code that takes 99% of the time - the rest doesn't matter.