The current post, our first of 2012, is different from others we have published on this blog, and we have created a new category for it: Opinion. In brief, the author, Guillaume Aupy, opposes the controversial US bill SOPA, and encourages readers to boycott Elsevier for its support of the passage of SOPA.
Rather than state an additional opinion about this topic — which would be out of place in an editor’s foreword anyway — we would like to note that, for better or for worse, internet censorship in an attempt to control copyright infringement is gaining traction in many countries, not just the USA. Most dramatically, just a few days ago, a court in Finland ordered a major internet service provider there to block access to The Pirate Bay — and the web page of the organization that brought the lawsuit fell under a Distributed Denial of Service attack from Anonymous Finland, which has threatened long term action if the Supreme Court doesn’t reverse the IP block. Even more recently, a Dutch court ordered a block on The Pirate Bay on 11 Jan 2012. Spain is scheduled to enact a “SOPA-like” law before March 2012. However, there are already at least three new mirror sites for The Pirate Bay that are (currently) unaffected by any court order, and, of course, it is possible for Finns to visit the blocked sites using an anonymous browsing tool such as The TOR Network.
Given the international context, the US opposition to SOPA is relatively strong. The popular web site Reddit plans a twelve-hour blackout to protest SOPA on January 18th, GoDaddy withdrew its support of SOPA after losing tens of thousands of customers from a boycott, and there is even a Boycott SOPA smartphone app that scans an item’s barcode and tells the user whether the company that made the item is on the list of supporters for SOPA. Aupy’s request in the post below is that theoretical computer scientists engage in a similar action.
Main post: Boycott Elsevier for supporting SOPA
The Stop Online Piracy Act (SOPA) is a bill that would allow the U.S. Department of Justice, as well as copyright holders, to seek court orders against websites accused of enabling or facilitating copyright infringement (Wikipedia). My intention here is not to rewrite in a worst fashion what other people already wrote about SOPA, but if you have never heard of this bill before, I really urge you to go read the Wikipedia article, so you can see by yourself in how many ways this bill is wrong. If it can convince you to read about SOPA (and make up your mind), know that opponents of the bill include Google, Facebook, Twitter, the Wikimedia Foundation (these organizations even “talked” about a blackout as SOPA protest (see here and here)), but also eBay, Mozilla Corporation, and human rights organizations such as Reporters Without Borders, the Electronic Frontier Foundation, the ACLU, and Human Rights Watch.
There are however supporters of the SOPA bill. Amongst the many supporter is Elsevier, which I imagine many of you know as a publisher of a lot of TCS journals. It is time for us, the scientific community to raise our voice. A good way may be to
- Refusing to serve as peer reviewers to Elsevier journals.
- Not submitting papers to Elsevier journals.
- If you are an Editor-in-Chief or in the editorial board, let the right people hear about your opinion.
And if this is not enough an argument to boycott Elsevier, you may also want to remember the 2009 scandal where Elsevier published fake journals as covert advertisements for pharmaceutical companies.
On 7/11/2011, I asked the question with the same name on the parent site. More precisely:
How important is knowing how to code in TCS (in fields where programming is not directly involved) : is there reasons which could bring a Computational Complexity theorist (for example) to know how to code? Is it worth spending a lot of time learning how to code? And if there are, is there a category (functional, imperative, object-oriented..) of programming language that would be more suited? I can imagine that someday I may have to implement some algorithms for my work, but then can I wait for this moment? Or is there something more?
I got so many good answers that I was advised to blog about it. This is my ‘grand debut’ so forgive me for my prose. I will not give every answers, only the part which I though were the most helpful to me. The rest of the answers can be found on the original question.
1. Testing a Conjecture by Tsuyoshi Ito
Testing a conjecture with numerical calculation can save the time which would have been spent in vain trying to prove a false statement.
1.5 Visualization by John Moeller
A computer is a great tool, it allows you for instance to see in different dimensions that are hard to imagine. Being able to see stuff helps for new ideas.
2. Theoretical results are not always real results by Suresh Venkat
Some optimal algorithms could be really hard to implement, and then not usable in practice, maybe an algorithm not as efficient but that can be implemented would be a better result. It opens up new theoretical research direction.
3. Type-Checking your proofs by Alessandro Cosentino
Learning a functional language forces you to type-check your programs, which can be a big asset for later when you start to type-check your proofs. This statement was however shaded by Sasho Nikolov who stated that even though this was true, maybe it was not worth the time if this was the only reason to learn a functional language.
4. Teaching by Martin Berger
There is a chance that someday a researcher in a university will be given courses with a substantial programming component. Being already comfortable can help being a better teacher.
5. If you know you will need to learn someday, the sooner the better by Peter Shor
Otherwise when you will really need it you will not have time for it.
6. Programming can be fun by Tsuyoshi Ito
Comment +1’d by 11 people! That says it all I guess.
1. (Strongly-Typed) Functional
(+) Teach to type-check, useful for proofs.
(+) A must for the logic/PL semantics field.
(-) Time consuming
(-) Hard to “see” things (see argument for imperative language).
(+) easy to learn and implement simple algorithms
(+) A must for software engineers (modular re-usable code)
(-) If you do not want to re-use it, not necessary to go that far (see Imperative)
(+) Get a feel of what’s fast and what’s slow
(+) A must for people interested in efficient algorithms and data structures
(+) Widely used, almost “everyone” has a C compiler (if you want people to use your implementation).
To conclude, I got a lot of interesting answers, answers I did not think of before, so i am really grateful. If you have more arguments pros or cons (there was not that many argument against learning to program when you do not directly need it), feel free to add them. I will probably learn to program in C thanks to this useful discussion (in case some wondered what my final decision was :)). I think it took over my phlegm.
Oh, and also, I learned that “Euclid was a very crappy programmer”.