When your whole business model is based on government granted and government enforced monopolies, you have very little right to complain IMHO.
See also Russ Cox's "Zip Files All The Way Down" article:
Most medical research already happens in publicly-funded bodies, bit it is then spun-off and captured by big pharma.
Not to mention that as many have pointed out over and over again, the main expenses of drug companies are not research, but drug approval bureaucracy and marketing.
It is a textbook case of regulatory capture.
Still, abolishing patents would go a long way to allowing real competition and progress in healthcare.
Actually this a well known process known as regulatory capture.
Where the regulated industry ends up in some kind of symbiosis with its regulator, encouraging it to both grow and to keep competition at bay.
The conflict between the regulators and the regulated industry is largely a farce as they know they need each other.
In somewhat related news, here is Russ Cox's excellent blog post about cool hacks with the zip format:
This is a good move, any government using Oracle is wasting taxpayers money and being irresponsible and negligent with its citizen's data.
One could talk of NSA backdoors, but there is no need, the security of Oracle products is laughable at best, there is no need for backdoors.
If you hire a Go programmer, it probably will be somebody that deeply cares about their work, somebody who has a certain sense for aesthetic and technical simplicity, and other qualities that not common that among Java programmers.
I count this as a Go feature.
you can also add just after import "fmt" add: var _ = fmt.Println
That way it will never complain that fmt is imported but not used.
Still, I never had need for this. Once you have written a bit of code the import list remains relatively stable.
Go does incremental compilation just fine.
Nobody has bothered to add parallel compilation because building Go code is already so ridiculously fast.
Many people are not looking for a "better C++", in the land of C++ it seems "better" means "more features", and some of us are not interested in more features, but in a better selection of fewer useful features.
See Rob Pike's essay on this very topic and the design of Go:
http://commandcenter.blogspot.nl/2012/06/less-is-exponential...
Full case folding is already in tip and will almost certainly be part of Go 1.1.
> This seems like needless boilerplate: why not instead simply pass a closure over a channel that the goroutine will execute? I have never seen this technique used in Go, but it seems natural to me. (It's essentially how libdispatch works.)
Passing a closure on a channel is both idiomatic and relatively common in Go code.
This and other comments make me suspect the author could have benefited from spending more time looking at existing Go codebases (the source of the Go stdlib is excellent).
Edit: His (IMHO somewhat strange) complaint that "Channel reads violate the laws of time and space by changing their behavior based on how their return values get used." doesn't apply anymore, now to do async reads from a channel you use select with a default, not the comma-ok idiom.
Also a package including more 'clever' Unicode operations will also be part of Go 1.1, but I have personally never found the existing support lacking, and no, I don't live in an English speaking country.
> So what exactly do you propose?
Sane and simple standards that can be implemented in any platform without requiring hundreds of man years of effort.
Nothing done in the web today is particularly technically advanced, we are about the same UI level as standard apps were more than 10 years ago (hell, I doubt you can build a photo manipulation app today that can compete with where Photoshop was 10 years ago).
Most of the complexity burden the web has is purely gratuitous and product of how flawed the standards it is built on are.
How JSON replaced XML is a good illustration of what is the right direction to go. Now if for example JavaScript was replaced with something considerably simpler, like, say, Scheme, instead of trying to bolt even more OO-crud into it and turn it into another pseudo-Java, that would be another good step.
There is little doubt the DOM and CSS could be dramatically simplified without reducing functionality, same goes for HTTP (as a recent post to hacker news illustrated).
The Web 2.0 craze is leading us back to the "Best viewed with" insanity of the 90's.
And is only going to get worse, with WebGL is not just "Sorry your browser is not supported, please download a different one.", but "Your video card drivers are not supported, buy new hardware and/or install a different Operating System"
Here are the slides from Andrew's great "10 things you (probably) don't know about Go" talk:
Because one of the nice things about Go is that I don't have to worry about this.
Is not just unidiomatic code in itself, but it creates unidiomatic APIs that behave in ways Go programmers don't usually have to worry about.
Unlike Python programmers, who should always be worrying about what exceptions any function or method they call could throw, hell, even setting a property or adding an item to a map or list can throw all kinds of exceptions. And this is rarely documented, and when it is documented it is usually incomplete, because whoever wrote that code doesn't know what exceptions might be thrown by any other code he calls.
Panic() should only be used to signal either programmer error, or truly panic-worthy situations where state is so messed up that crashing is the only good option.
Put another way: when you call an API correctly, it should be safe to assume it will never panic().
Panic/recover can be used in rare occasions within libraries to do more exception-ish style error handling, but those panics should never be allowed to escape and cross API boundaries.
Anyone using panic/recover across API boundaries to emulate exceptions should have their brains gofmt-d.
But so far I have not noticed anyone doing this, perhaps because actually returning and handling errors properly is not as much of an issue as most people make it to be.
Well, given how hopeless it is to try to do threaded programming with Python, I guess that is not a consideration Python programmers usually worry about.
The only mainstream language that has checked exceptions is Java, and it is almost universally agreed, even within much of the Java programming community, that checked exceptions cause more problems than they solve.
Of course, unchecked exceptions have the problem that is basically impossible to keep track of what exceptions a function might throw (because it has to document all the exceptions that any functions it calls might throw too, and so on and on.)
In the end, of all error handling mechanisms around, Go is by far one of the best.
In Go unused variables are an error, so you are forced to either handle errors or explicitly ignore them (by assigning them to _).
Apple controls what I can install or not install on hardware that I already bought and which is mine, Apple does all it can (which is a lot) to make it close to impossible for me to run any software I have not got from them on hardware I own.
Even if I write the software myself I'm supposed to pay Apple for the privilege of running software I wrote on hardware I own!
If that is not insanely outrageous, I don't know what is.
You forgot one of the worst harms Apple has done to the tech industry:
Make it acceptable that users have no control over the operating system running on their hardware, and much more importantly: what applications they are allowed to run on that hardware.
Can anyone imagine Microsoft banning all non-MS-approved programs from running on Windows in the 90s? Or starting to sell computers that can only run Windows, and where you can only install MS-approved software (and software for which MS takes a 30% cut, if you are lucky to get approved).
And can anyone imagine Microsoft suing, say, Netscape or Sun for patent infringement?
Apple's behavior wold have been beyond outrageously unthinkable from the most vilified tech company of the last 20 years.
But because it is Apple, it gets a pass. Is the victory of form over substance, of marketing and hype over principles and values.
It will take decades to undo the damage Apple has done, if we ever recover.
In Thailand you could be imprisoned if anything you say can be misconstrued as a criticism of the King.
This kinds of laws that make all kinds of utterly harmless speech a very serious risk are very widespread.
See also what happened to some poor guy that made a joke in Twitter about his trip to the US.
People in favor of "Real Names" are the same kind of people who say "If you have nothing to hide, why do you care about privacy?"
> For heaven's sake, extension of copyright terms comes at the behest of the publishing industry.
This is known as regulatory capture, and is what is to be expected once the government starts to grant monopolies: instead of competing and innovating, corporations dedicate themselves to much more lucrative rent-seeking.
When the government is the one who decides who can do business and how, it becomes much more lucrative to put your energy in lobbying the government for rules favorable to you, than to put the energy in competing and pleasing consumers.
Without patents the only thing that matters is execution: pleasing consumers, with patents all that matters is how you can milk the system and use it to crush your competitors that might have more competitive products.
There has been plenty of evidence about how intellectual property is actually counter productive and hinders innovation for a long time:
http://levine.sscnet.ucla.edu/general/intellectual/against.h...
And is not surprising when you realize that it is basically the government going around granting monopolies to private entities, and what incentives that creates (the main incentive is to expand the monopoly power rather than to create and innovate, innovation is contrary to monopolies).
The simplest solution is to abolish patents, the government has no business going around handing out monopolies.
I think the main Go site could be improved, but i quite like the new version of the Go tour: