Diary of a year of not buying video games or books: January 2016

So I’ve challenged myself to a year of not buying any video games, because I have the same problem as every gamer: a massive collection of games bought in sales and bundles, but never played. I weeded out the games that really don’t interest me and am now down to 30 titles that I want to at least try to play, or that genuinely seem fascinating to me. But 30 titles, that’s still at least a year of gameplay! So what to do? Not buy any more games for a year, of course. I noticed my reading list is super-bloated as well, so no books either.

January 2016

I just noticed something horrible: I have store credit at GOG from games I’ve returned. And the store credit will become invalid in 182 days (for my credit in USD) and 316 days (for my credit in €). That means that I will be practically forced to buy games worth around 30€ from GOG this year, before I can start my challenge. How convenient!

f688515b6400cbe4e2b98ccecc9b788b322bb2dc82e4d94113e31a6e68d247a0_product_card_screenshot_600
The Aquatic Adventure of the Last Human

The first thing I bought was the very interesting-looking The Aquatic Adventure of the Last Human at the reduced price it had just after launch, and to use up my USD store credit. Since I also had EUR store credit that needed burning, I decided to buy Dropsy, which received excellent reviews, not least by The Linux Gamer. I also got Nuclear Throne, a risky choice because GOG don’t have the Linux version yet, and in the past they have sometimes not released Linux versions of games that have had them e.g. on Steam. And then the final purchase that cleared my GOG store credit, The Curious Expedition.

2c9535ca9f291487c635514d79479dcce24323f0b7ea6d7cec7ee722bb0e5ddf_product_card_screenshot_600
The Curious Expedition

So I bought four games for store credit that came from refunding one: The Witcher 3. It looks unlikely it’ll get a Linux version at the moment. Four more games, that plus what I already have should easily last over a year. And what if they do? Perhaps I’ll discover that the average gamer doesn’t need to buy more than one, two games a year. What if that topples the entire gaming industry? Scary and exciting!

Struggles

I really wanted to buy The Bug Butcher because I loved Pang back in the day, and the company making it is from Austria. Always support our Austrian neighbors! In the book realm, Rudy Rucker did me a disservice by recommending several extremely interesting-sounding books. On the list they go.

Seeing that I already had to break my promise due to the forgotten store credit, I’m prolonging the challenge to 1 year after my last game purchase. That would be January 28, 2017 now.

Now playing and reading

Pillars of Eternity. 10 hours in. The Collected Teachings of Ajahn Chah. Black Man by Richard Morgan.

To defend the free web, you must save Mozilla

TL;DR: Mozilla is largely dependent on Yahoo! We must make sure it is funded by individuals’ donations and a diverse roster of companies to keep it independent, to fight Google’s increasing browser dominance and to ensure our privacy. We must also let Mozilla know what we expect from them.

Read on to hear my reasoning.

Continue reading “To defend the free web, you must save Mozilla”

Decentraleyes: An additional defense against large companies analyzing you

I recently found out about the Decentraleyes add-on for Firefox. To understand why Decentraleyes is a good idea and why it can help you protect your privacy, here’s what’s been happening so far:

  1. Web developers all over the world have started using the same libraries of Free Software code to solve the same common problems. This is good.
  2. Web developers thought it would be a good idea to host this code on CDNs (distributed content delivery networks). This makes pages load faster and takes the (financial) burden of hosting them off the web developers. This is also good.
  3. Large companies like Google, Microsoft and Facebook – who make money by analyzing and recording your behavior in order to sell private details about you to other companies – have started offering such library hosting for free. This is bad.

Because every time you visit a website that refers to such a hosted library, and that’s hundreds of thousands or millions of websites, you give away your intentions to the company hosting the library. You tell Google where you’ve been on the Internet, and by pinging them every time you open any number of websites, they can track where you’re going, whether you’re using your phone, your tablet or your computer, when your preferred time for web surfing is, etc.

There is a reason these companies offer this hosting for “free”. It’s because you are the product, this data about you is aggregated and resold to advertisers. What’s worse, those companies can at any time introduce malicious code into your browser by changing the libraries they offer. Your browser will not be able to tell whether it is running a manipulated version of the code, and antivirus products are unable to defend against such an attack.

Because we won’t be able to convince web developers to do the right thing and either create a non-profit organization to securely host all these libraries or host the libraries themselves, you can only take matters into your own hands. Decentraleyes does this for you, by downloading all those libraries to your own computer and rerouting any request that would ordinarily go to a shared library server to your computer instead. It takes no configuration, you just need to install the Firefox add-on and that’s it.

This alone won’t be enough to win back your privacy, but it’s one building block. A free bonus is that pages that would normally use a CDN now load faster if you have this extension.

 

Handling logspam like “action ‘action 20’ resumed (module ‘builtin:ompipe’)” on Debian Jessie

If you’ve upgraded to Jessie on a server (or any other machine without X), you might have started noticing strange new messages in your logs that look like this:

Nov 4 06:33:21 mail rsyslogd0: action 'action 20' resumed (module 'builtin:ompipe') [try http://www.rsyslog.com/e/0 ]
Nov 4 06:33:21 mail rsyslogd-2359: action 'action 20' resumed (module 'builtin:ompipe') [try http://www.rsyslog.com/e/2359 ]

As discussed in this bug report, that shouldn’t really happen and you can get rid of it by disabling logging to xconsole in rsyslog. Find this section of /etc/syslog/rsyslog.conf and comment it:

#daemon.*;mail.*;\
# news.err;\
# *.=debug;*.=info;\
# *.=notice;*.=warn |/dev/xconsole

That should take care of it until this is fixed upstream.

Backing up email from any IMAP server (plus: syncing and migrating)

I recently migrated email providers (several times, actually) and came across the fantastic tool mbsync. It’s included in most GNU/Linux distributions, though sometimes called by its old name, “isync”.

mbsync is very powerful, it can not only sync between a remote IMAP server and e.g. a local on-disk mirror that you want to keep so you can back it up, it can also sync between two remote IMAP servers directly.

Many very advanced configurations are possible from your own personal .mbsyncrc file. But since it took some time to puzzle together a good config from the semi-cryptic manpage, here are two configs I used for two typical situations.

Migrating from one IMAP server to another

IMAPStore   oldserver 
Host        mail.myoldserver.com
User        myusername 
Pass        mypassword
 
IMAPStore   newserver 
Host        mail.newserver.org  
User        myusername 
Pass        mypassword
 
Channel   migrate 
Master    :oldserver: 
Slave     :newserver: 
Patterns  * !Trash 
Create    Slave 
Expunge   Slave 
Sync      Pull

Calling mbsync migrate will migrate your email from your old server to the new one, creating any new directories and messages on the new server and not deleting anything on the old server. You can run this multiple times in case new messages are still arriving on your old server.

Mirroring your IMAP mail to a local directory

This is useful for backing up your email. Particularly nice if you’re on a free or cheap email provider that does not offer backups.

 
IMAPStore yourserver
Host      mail.yourserver.io
User      yourusername
Pass      yourpassword
 
MaildirStore mirror 
AltMap       yes 
Path         ~/mailmirror/ 
 
Channel   mirror 
Master    :yourserver: 
Slave     :mirror: 
Patterns  * !Trash 
Create    Slave 
Expunge   None 
Sync      Pull

Then run mbsync mirror to pull your email. You can run this multiple times, it will not delete messages in the mirror directory. If you want messages to be deleted there, set Expunge to slave. Make sure to back up both the mailmirror directory and the Maildir directory, which holds your INBOX.

A note about AltMap: This particular option was required so that I could mirror to remotely mounted NFS shares. It will make mbsync create its UID validity data in a database instead of in a .uidvalidity file. For whatever reason, it seems that writing the .uidvalidity file stalls forever on NFS shares. If you’re not using an NFS share, you can try without that option.

In both examples, the Trash directory is ignored.

Another way to fix tearing and vsync issues using the Nvidia driver

Nvidia’s proprietary driver is notorious for having a lot of tearing and vsync issues. Even if you use their control panel to enable vsync, more often than not it will have no effect. I’ve seen this on a GTX 560, on a 650 Ti, 660 Ti, 860M. Previously I tried using compton to fix this issue, but compton sometimes makes e.g. video display sluggish or seems to add some delay and irregular framerate to games. This won’t work, since for games I want a constant framerate, and drops below 25 or so are unacceptable.

That’s when I found out about about the ForceCompositionPipeline option for the proprietary Nvidia driver. It can be used like this to enable it temporarily from the command line:

nvidia-settings --assign CurrentMetaMode="DVI-I-1: nvidia-auto-select { ForceCompositionPipeline = On }"

Or made permanent in xorg.conf:

Section "Screen"
    …
    Option         "metamodes" "DVI-I-1: nvidia-auto-select { ForceCompositionPipeline = On }"
EndSection

You’ll have to use something like xrandr to figure out the name of the output (in this example, DVI-I-1). Thank you, Mark Volker Dickmann, for this hint.