Virtualenv, a python tool

From the docs:

virtualenv is a tool to create isolated Python environments.

The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.

Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.

Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.

In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments (and optionally doesn’t access the globally installed libraries either).

Full disk encryption performance reduction on Ubuntu 16.04 LTS and an older Intel Core i5

I have an older laptop (more of a laptank) that I bought in the summer of 2009 or 2010. About five or six months after upgrading to Windows 10 in Winter 2015/Spring 2016, I started having some serious bugs and decided to just nuke the hard drive and go Ubuntu. I have written about this before.

I was very disappointed with the performance of the machine after switching to Ubuntu, and I finally realized that it was likely due to the full disk encryption (FDE) which I enabled at time of install. After wiping the drive again and reinstalling Ubuntu, this time with only home folder encryption enabled, I have found the performance to be vastly improved. The memory footprint is reduced, program load/launch times are reduced, everything is faster and I am very, very happy to have fixed this problem. Right now I have open about 13 Firefox tabs, IntelliJ IDEA, system monitor, file browser, and terminal, and I am at 2.6/3.8GiB RAM (68%) and 0.464/3.9GiB (11.5%) swap. In my previous setup with FDE enabled the memory would have been maxed out many tabs ago…

My processor is a Core i5-540M @ 2.53GHz (Passmark 2448, see also Notebookcheck.net) and I only have 4GB RAM. I’m also rocking the original 500GB 5400rpm HDD which I actually can’t believe is still spinning. I probably will pop in a SSD and another 4GB RAM at some point to keep this little guy alive for another 5-10 years 😉

SCIgen – An Automatic CS Paper Generator

I love these things.

SCIgen is a program that generates random Computer Science research papers, including graphs, figures, and citations. It uses a hand-written context-free grammar to form all elements of the papers. Our aim here is to maximize amusement, rather than coherence.

One useful purpose for such a program is to auto-generate submissions to conferences that you suspect might have very low submission standards. A prime example, which you may recognize from spam in your inbox, is SCI/IIIS and its dozens of co-located conferences (check out the very broad conference description on the WMSCI 2005 website). There’s also a list of known bogus conferences. Using SCIgen to generate submissions for conferences like this gives us pleasure to no end. In fact, one of our papers was accepted to SCI 2005! See Examples for more details.

The source code for SCIgen is on Github and is released under the GPL v2.

They also have a steganography tool they call SCIpher:

SCIpher is a program that can hide text messages within seemingly innocuous scientific conference advertisements. It is based on the context-free grammar used in SCIgen, but instead of randomly piecing together sentences, it uses your input message to control the text it generates. Then, given SCIpher output, it can recover the original message by reverse-engineering the choices made at encoding-time.

One useful purpose for such a program is to communicate secret messages that don’t look like secret messages. Encrypted emails, for example, might signal to snoopers that you are an interesting person who bears investigation. However, in our experience when you send out a Call for Papers (CFP) announcement, it’s very unlikely that anyone will read it.

The source code for SCIpher is available on Github and is released under the MIT license.

Linus Torvalds doesn’t like how the FSF changed the GPL

Linus Torvalds explains that the FSF snuck some stipulations into the GPL v3 which breaks the spirit of the GPL v2:

There is a Wikipedia has an article on tivoization, and here is a tutorial guide on copyleft and the GPL v2 and v3. There’s also a question on Stackoverflow that has some useful info, although it was closed as off-topic. From answerer Will M:

The page linked to in another answer is a good source, but a lot to read. Here is a short list of some the major differences:

  • internationalization: they used new terminology, rather than using language tied to US legal concepts
  • patents: they specifically address patents (including the Microsoft/Novell issue noted in another answer)
  • “Tivo-ization”: they address the restrictions (like Tivo’s) in consumer products that take away, though hardware, the ability to modify the software
  • DRM: they address digital rights management (which they call digital restrictions management)
  • compatibility: they addressed compatibility with some other open source licenses
  • termination: they addressed specifically what happens if the license is violated and the cure of violations

I agree with the comment about consulting a lawyer (one who knows about software license issues, though). In doing these things (and more), they more than doubled the length of the GPL. Although GPLv3 is a complex legal document, it was designed to be read and reasonable understood by software developers. There is also a guide to understanding it and in depth discussion of the changes from v2 to v3 at http://copyleft.org/guide/.

From answerer TT23:

GPLv3 of June 29, 2007 contains the basic intent of GPLv2 and is an Open Source license with a strict copyleft (→ What types of licenses are there for Open Source software, and how do they differ?) However, the language of the license text was strongly amended and is much more comprehensive in response to technical and legal changes and international license exchange.

The new license version contains a series of clauses that address questions that were not or were only insufficiently covered in version 2 of the GPL. The most important new regulations are as follows:

a) GPLv3 contains compatibility regulations that make it easier than before to combine GPL code with code that was published under different licenses (→ What is license compatibility?). This concerns in particular code under Apache license v. 2.0.

b) Regulations concerning digital rights management were inserted to keep GPL software from being changed at will because users appealed to the legal regulations to be protected by technical protective measures (such as the DMCA or copyright directive). The effectiveness in practice of the contractual regulations in the GPL has yet to be seen.

c) The GPLv3 contains an explicit patent license, according to which people who license a program under the GPL license both copyrights as well as patents to the extent that this is necessary to use the code licensed by them. A comprehensive patent license is not thereby granted. Furthermore, the new patent clause attempts to protect the user from the consequences of agreements between patent owners and licensees of the GPL that only benefit some of the licensees (corresponding to the Microsoft/Novell deal). The licensees are required to ensure that every user enjoys such advantages (patent license or release from claims), or that no one can profit from them.

d) In contrast to the GPLv2, the GPLv3 clearly states that there is no requirement to disclose the source code in an ASP use of GPL programs as long as a copy of the software is not sent to the client. If the copyleft effect is to be extended to ASP use (→ When does independently developed software have to be licensed under the GPL?), the Affero General Public License, Version 3 (AGPL) must be applied that only differs from the GPLv3 in this regard.

There’s a website which helps as a guide to choosing a license.

Torvalds also offers some thoughts on earning respect:

An interesting point of view, indeed.