Skip to main content

On Aaron Swartz

Through both LWN and netzpolitik.org I just heard that Aaron Swartz has committed suicide. While watching his speech "How we stopped SOPA" his name ring a bell with me, I looked into my inbox and found that he and I once had a brief chat on html2text, I piece of free software of his that I was in touch with in the context of Gentoo Linux. So there is this software, his website, these past mails, this amazing talk, his political work that I didn't know about... and he's dead. It only takes a few minutes of watching the talk to get the feeling that this is a great loss to society.

Fwd: Why privacy matters

I am sharing this video because it has a few interesting points on the value of privacy, especially some that are helpful explaining privacy to others. Two examples: Cory Doctorow (at 00:13):

"Privacy is the right to make a mistake."

Christopher Soghoian (at 03:07):

"Everyone has something to hide. We have curtains on our windows, we wear cloths, we don't broadcast our salaries or our medications [..]."

PS: This video was brought to my attention by a post at Netzpolitik.org.

Detecting when your blog posts get censored by Google (or any search engine)

Goverments and companies keep approaching Google to "forget" certain URLs with the result of millions of URLs being removed from the search index per month, according to Google itself (see links earlier). Now if you happen to blog about a risky topic, your blog posts (or any other kind of web page) may be removed from the Google search index without early notice. So you may want to know if (some of) your content still can be found easily. My approach would be to

  1. Generate some random checksum (e.g. a SHA1, see below)
  2. Make sure that this checksum does not get any hits on Google, yet
  3. Embed the checksum in the post somewhere, maybe at the front or the very end
  4. Search for that checksum every few days
  5. If the result shows the post of yours it must be contained in the search index, i.e. it has not been censored
  6. (Automate the previous step)

On Linux I run

# cat /proc/sys/kernel/random/uuid | sha1sum
8f6a8cfc66bc3523eac19b1402568bc2ae7950ae -

to make a checksum for this very blog post. As it's part of the post already, I can omit adding it to the end once more, neat :-) I hope this technique works for someone. Good luck.

(German) Rundfunkgebühr steigt auf 312% ab 01.01.2013

Ich besitze seit über zehn Jahren weder Radio noch Fernseher und bin sehr zufrieden damit. Mir ist gleich, was Stefan Raab und Heid Klum treiben oder lassen. Ich höre Musik von gerippten CDs, sehe Filme auf DVD oder im Kino. Menschen die offiziell weder Radio noch Fernseher haben, lässt die GEZ nicht in Ruhe: da muss ja was faul sein! Dann kam jemand auf die Idee, auch für Computer unter dem modernen Begriff "neuartiges Rundfunkempfangsgerät" Geld zu kassieren, weil mit solchen Apparaten mitunter aus dem Internet Radio und Fernsehen bezogen werden kann. Für diese Möglichkeit allein muss jemand, der offiziell einen Computer besitzt, unabhängig von Nutzung oder Nicht- Nutzung zahlen. In den letzten zehn Jahren habe ich davon gute drei Male Gebrauch gemacht. Da ich keinen Stresss mit der GEZ haben wollte und prinzipiell auch vernünftig finde, das soetwas wie die Tagesschau existiert, habe ich also ein neuartiges Rundfunkempfangsgerät angemeldet und seitdem monatlich 5,76 Euro (genauer 17,28 Euro alle drei Monate) effektiv als Spende an eine Entität namens "Rundfunkgebühren ARD/ZDF" überwiesen. So weit, so gut. Nun erreicht mich ein Schreiben von ARD, ZDF und Deutschlandradio mit dem zynischen Titel "Einfach. Für alle. Der neue Rundfunkbeitrag". Schon da hätte ich wissen müssen, dass wie bei der Einführung der A-B-C-Zonen bei der BVG/S-Bahn, auch hier wieder unter einem riesigen Stapel Fairness eine ganz, ganz kleine Tariferhöhung versteckt wird. Vielleicht gibt es ja Haushalte in Deutschland, für die wirklich vier Radios und zwei Fernseher angemeldet und bezahlt werden. Möglich wärs ja. Die würden vielleicht wirklich was sparen. Aber was ist mit den anderen? Für mich, der nach wie vor weder off- noch online deutsche Fernsehen- oder Radio-Dienste nutzt, bedeutet das neue Modell eine Erhöhung der bisherigen 5,76 Euro auf 17,98 Euro pro Monat : das sind 312% des aktuellen Betrags. Geht's noch? Ich soll also 17,98 Euro jeden Monat zahlen für etwas, dass ich vollständig nicht nutze. Das ist mir auch für die unterstützung der Tagesschau zu viel, deutlich zu viel. Meinen Computer wieder abmelden, kann ich ja schlecht. Da die neue Gebühr pro Wohnung gilt, bin ich auch nicht sicher, ob Menschen ohne Radio, Fernseher und Computer überhaupt von der Gebühr verschont bleiben. Kennt jemand einen vertretbaren Weg, sich gegen diesen Wahnsinn zu wehren?

Making Audex use MusicBrainz (rather than FreeDB)

From my experience, MusicBrainz's data is more complete and of higher quality than that from FreeDB. Sadly, the official list of MusicBrainz enabled CD rippers lists a single CD ripper for Linux, only: Sound Juicer. In the "spirit of GNOME" Sound Juicer aims to stay as minimal as possible, which exclude features like custom folder naming schemes (the one of my choice is not included). So I moved to using Audex with FreeDB a long time ago. Sadly, some of the CDs I bought lately could not be resolved using FreeDB. Happily I just found the MusicBrainz FreeDB gateway. With that, Audex just keeps talking the FreeDB protocol but provides the quality and completeness of using MusicBrainz. All I had to do is enter freedb.musicbrainz.org at MENU > Settings > Configure Audex... > CDDB Settings > Lookup > Freedb Server > Freedb Server .

How to set up a GRUB 2 theming playground (on Gentoo)

In this post I am going to present a quick guide to set up a basic environment to test and develop GRUB 2 themes on Gentoo Linux. Its core feature is the use of virtualization so you restart virtual hardware rather than physical one. Ingredients:

  • KVM (or QEMU) — i.e. package app-emulation/qemu-kvm or app-emulation/qemu
  • GNU parted — package sys-block/parted
  • kpartx — from sys-fs/multipath-tools
  • GNU GRUB 2 — sys-boot/grub:2

Despite care and best intents: For what comes next, NO WARRENTY of any kind! sudo and root permission stuff is involved. First, let's install the required software:

$ sudo GRUB_PLATFORMS='pc' emerge --update sys-boot/grub:2 \
    sys-fs/multipath-tools sys-block/parted app-emulation/qemu-kvm
[..]

Now, let's create a sparse, virtual hard disk of 500MB in size and create a partition table with a single partition covering all available space. We use bash syntax to do the math.

$ touch grub-theme-disk

$ truncate --size=$((500*1024**2)) grub-theme-disk

$ /usr/sbin/parted grub-theme-disk mklabel msdos
WARNING: You are not superuser.  Watch out for permissions.

$ /usr/sbin/parted grub-theme-disk mkpart primary ext2 0% 100%
WARNING: You are not superuser.  Watch out for permissions.

Next, we make a block device for that partition and format it as ext2. We also store the location of the whole disk and the partition in dedicated variables for re-use.

$ sudo kpartx -p p -a -v grub-theme-disk
add map loop0p1 (254:9): 0 1021952 linear /dev/loop0 2048

$ GRUB_PART=/dev/mapper/$(sudo kpartx -p p -l grub-theme-disk \
    | grep -oE 'loop[0-9]p1')

$ GRUB_DEV=$(sudo kpartx -p p -l grub-theme-disk | grep -oE '/dev/loop[0-9]')

$ echo "${GRUB_DEV}, ${GRUB_PART}"
/dev/loop0, /dev/mapper/loop0p1

$ sudo mkfs.ext2 "${GRUB_PART}"
mke2fs 1.42.4 (12-June-2012)
[..]
Writing superblocks and filesystem accounting information: done

Now we mount the file system and create a minimal GFX GRUB 2 config in it using theme "starfield" that comes shipped with GRUB 2. For the menu, two dummy entries to restart and shutdown the machine are used.

$ mkdir grub-theme-disk-root

$ sudo mount "${GRUB_PART}" grub-theme-disk-root

$ sudo mkdir -p grub-theme-disk-root/boot/grub2/

$ cat <<"GRUB_CFG" | sudo sh -c 'cat > grub-theme-disk-root/boot/grub2/grub.cfg'
set theme=$prefix/themes/starfield/theme.txt
insmod all_video
insmod gfxterm
insmod png
terminal_output gfxterm
menuentry Reboot { reboot }
menuentry Shutdown { halt }
GRUB_CFG

We are ready to install GRUB 2. That includes copying files to /boot/grub2 (e.g. the starfield theme) as well as writing the bootloader to the master boot record of the virtual disk file (or more precisely the related loop device). We need to flush the write cache using the "sync" command so we do not boot from half-flushed data in the next step.

$ sudo grub2-install --boot-directory=grub-theme-disk-root/boot "${GRUB_DEV}"
Installation finished. No error reported.

$ sync

At that point, our disk image is ready to be booted as hard drive by KVM (or QEMU):

$ sudo qemu-kvm -hdd "${GRUB_DEV}"

You should see something like this (click to enlarge):

Now for the most important part: If you do make a theme please make sure the overall theme is legally sound! For instance that means:

  1. If you use the original, rendered "g" Gentoo logo, the related files have to comply with the CCPL-Sampling-Plus-1.0 license.
  2. If you use Larry the cow graphics, the theme has to comply with the CC-BY-SA/2.5 license.

This can hardly be over-emphasized. If you fail to respect licenses properly Gentoo will not be able to include your theme anywhere, really. Other than that, happy theming! Feel free to post links to your Gentoo GRUB 2 themes in the comments below. For more graphical building blocks and logos that you might want to use, please check out the Gentoo Artwork page and the vector remake of GDM 2.x background "gentoo-cow". The theming file format of GRUB 2 is described in detail in the official GRUB manual.