Extending notmuch tags from messages to the whole thread

I am using notmuch and alot to read email at home.

As a fallback mechanism, I have written a small script that moves emails with certain tags into specific folders, such that parts of the tags can be seen from any email client accessing the mail folder.

Unfortunately, alot seems to tag individual messages instead of complete threads. This means that all the mails that I receive are correctly sorted, but the mails I sent are kept in the sent folder forever.

Luckily, it is easy to propagate tags from individual messages to the complete thread using:

for i in $(notmuch search --output=threads tag:<some_tag>); do; notmuch tag +<some_tag> -- $i; done

This is using zsh, but bash should work the same. I am sharing this here in case somebody might find this useful.

Android-Apps

Ich werde demnächst auch ein Android-Handy besitzen. Daher jetzt (als Erinnerung an mich selbst) eine Liste von Android-Apps, die ich spannend finde, und dann unbedingt installieren muss.

Firefox Plugins

Um das WWW ein bisschen weniger nervig, sicherer und schneller zu machen, kann ich folgende Firefox-Plugins nur wärmstens empfehlen:

  • Adblock Plus — entfernt jede Menge Werbung.
  • Ghostery — entfernt viele Statistik-Zähl-Pixel und Dinge wie den Facebook Like-Button und den Google „+1“-Knopf.
  • HTTPS Everywhere — konvertiert automatisch viele Webseiten-Zugriffe zu verschlüsselten Verbindungen und macht das Surfen damit sicherer.
  • NoScript — verhindert per Default JavaScript (und anderes) auf vielen Seiten. Das Plugin ist am Anfang etwas störend, weil man zuerst viele legitime Anwendungen von JavaScript freischalten muss, es lohnt sich aber längerfristig, weil das Web viel weniger nervig wird :)

Ich kann jedem nur empfehlen, zumindest die ersten drei zu installieren, es macht den Alltag so viel stressfreier…

Heimserver

Seit einiger Zeit spiele ich mit dem Gedanken, zu Hause einen kleinen, stromsparenden Server aufzustellen, der dann einen ganzen Stapel an Aufgaben übernehmen könnte.

Zur Zeit fände ich hardwareseitig ein AMD Fusion-System ganz spannend, entweder ein stromsparendes Bobcat-System oder ein tolleres Llano-System. Cool wär ein Asrock E350M1, weil coreboot wohl darauf läuft :). Allerdings ist die Frage, ob das bei einem “immer-an”-Server einen großen Unterschied macht. Ein Problem wäre auf jeden Fall, dass die eingebaute Video-Dekodier-Engine (AMDs UVD) wohl nur von AMDs proprietären Treibern unterstützt wird, und ich gerne irgendwann damit mal HD Videos anzeigen wollen würde (passenden Fernseher vorausgesetzt!).

Softwareseitig ist die Sache schon klarer. Folgende Dinge würde ich gerne aufsetzen:

Tja, das würde mir schon Spaß machen..jetzt muss ich mich nur noch für Hardware entscheiden und ein Wochenende Zeit finden. Also dann nächstes Jahr oder so…

Vorläufige Hardwareliste:

  • Cooler Master GX 450 (noch effizienter unter wenig Last wär schöner)
  • Asrock E350M1
  • 4 GB RAM (weil der grad so unglaublich billig ist)
  • 2 TB Samsung Spinpoint F

Spiele-Schnäppchen mit eingebauter Spende

Das ist doch mal spanned: Mit

The Humble Indie Bundle

kann man fünf Independent Spiele (World of Goo, Aquaria, Gish, LugaruHD und Penumbra) für einen frei wählbaren Preis kaufen. Außerdem kann man einen Teil des Preises dann sogar noch an die Child’s Play Charity oder an die Electronic Frontier Foundation spenden. Tolle Sache!

Zugegebenermaßen, LugaruHD sieht komisch aus, und World of Goo besitze ich bereits, aber für den Rest würde es sicher auch lohnen. Vor allem, da man von Aquaria anscheinend sonst keine Linux-Version bekommen kann.

edit: Habs jetzt gekauft. Man bekommt sogar noch ein sechstes Spiel dazu! Ihr müßt euch allerdings beeilen, das Angebot gilt nur noch ein paar Stunden.

Email-Software

Demnächst muß ich wohl meine Emails anders verwalten, zustellen, aufheben und sortieren als das bis jetzt über meinen Uni-Account möglich war. Spannende Programme in diesem Zusammenhang scheinen zu sein:

Nur wie ich das jetzt alles machen soll, das habe ich noch nicht entschieden :-)

Permute notation in latex documents

This week, I was having a coffee with Petra and Immanuel and we were discussing the importance of good notation.

Somehow, the idea of writing a script that permutes the notation in a given document came up, perhaps to illustrate this viewpoint.

It sounded like a fun project, and so I wrote permute_notation.py, a short Python script that takes a latex file and produces a copy of the file with completely permuted notation. The effects are not really surprising: usually, you do not understand your own work anymore :)

You can download it and try for yourself. It is quite simple to use: permute_notation.py input.tex output.tex

Attention: The script unconditionally overwrites output.tex, so be careful!

By default, the script permutes lower and upper case Latin and Greek letters. You can specify the switch -s to permute alphabets only among themselves, such that the text might remain at least barely legible.

As usual, the script is provided under the GPL.

Note: This script has been tested to work with my diploma thesis(result (PDF)). I hope that it will also work with your document. If not, just copy a latex snippet which is permuted incorrectly into the comments and I will take care of it.

Running mp3gain recursively in album mode

If you are running linux and want to assign replay gain values to your mp3s recursively, you are currently out of luck since mp3gain does not yet have a recursive mode. The simple solution

find /path/to/mp3s -iname "*.mp3" -exec mp3gain -r -k -p {} \;

only works if you want to have radio gain mode, i.e. all mp3s are brought to uniform common volume.

But if you are like me and you would like to listen to whole albums at a time, the -a switch is your friend and the above solution does no longer work. I have written two small python scripts which do this, assuming your mp3s are sorted either like this:

artist/single_song.mp3
artist/album/song.mp3

Then you can use calculate_gain_all_in_one_folder.py. If instead your artists are grouped by initials like so:

initial/artist/single_song.mp3
initial/artist/album/song.mp3

then use calculate_gain_for_initial_folders.py. Both scripts do the right thing, i.e. apply album gain to albums and radio gain to single songs. They are not exactly userfriendly, but you should manage. Both scripts are released under the GPL.

By the way, vorbisgain has a recursive mode which works (almost) perfectly (only almost, since it of course does not known when to apply album and when to apply radio gain).

LaTeX-Symboltabellen-Ersatz

Lars hat heute etwas echt praktisches verschickt: den LaTex-Symbol-Erkenner! Kein mühsames Suchen in Symboltabellen oder per Google mehr, einfach schnell das Symbol malen, und man kriegt den richtigen TeX-Code :) Super!

Schriftarten

Neulich beim Lesen des englischen XeTeX-Wikipedia-Eintrags habe ich einen spanennde Blogeintrag gefunden,  der ein Loblied auf LaTeX und den tollen Schriftsatz singt und dabei ein paar schöne Schriften vorführt, bzw darauf verlinkt. Unter anderem auf diesen tolle Zusammenstellung professioneller und freier Schriftarten.

Das hat mich dazu motiviert, selbst ein paar tolle (hauptsächlich OpenType-)Schriftarten zu suchen, und eine kleine Zusammenstellung zu schreiben. Benutzen kann man so etwas natürlich sehr gut z.B. mit scribus, einem sehr guten Open-Source-Desktop-Publishing-Programm. Hier also eine kleine Auswahl:

In den Essays von praegnanz.de gibt es außerdem sehr schöne Artikel über freie Schriften und ihre Anwendung und daher noch viele Anregungen.

Monkey Island

Mannomann, so viele gute Nachrichten an einem Tag!

Gerade gefunden: Anscheinend kommt morgen der erste Teil von Tales of Monkey Island, einer Episoden-Fortsetzung der legendären Monkey Island-Spiele heraus!! Das gab es ja schon für Sam & Max und war auch sehr lustig! Total cool!

Gleichzeitig habe ich gesehen, dass außerdem LucasArts eine neue, aufgemotzte Version von The Secret of Monkey Island rausbringt. Keine Ahnung, ob das gut ist, aber das wäre ja vielleicht ein Anlaß, das mal wieder zu spielen :)

Und weil wir gerade am Surfen sind, dieses neue Projekt von Ron Gilbert sieht auch lustig aus.

KDE4.1 in Gentoo mit Nvidia-Karte

Kurze Notiz, falls es jemandem hilft:

Falls euer KDE4.1 sofort nach dem Einloggen den gesamten X-Server zum Abstürzen bringt, hilft vielleicht, wie bei mir, die Option backingstore in der xorg.conf auf false zu setzen. Funktioniert bei mir super, ich weiß nur nicht, ob ich jetzt auf KDE4 umsteigen soll.

Amarok 2.0 RC1

Der erste Release Candidate von Amarok 2.0 ist draußen. Warum ist immer noch Beta 1 die aktuellste Version in portage? Mein KDE 4.1 geht aber irgendwie eh nicht, und ich hab weder Zeit noch Lust, es zu reparieren. KDE 3.5.10 läuft super, schnell und stabil…aber auf Amarok 2.0 bin ich trotzdem gespannt!

On using unison to synchronise files efficiently between Windows and Linux machines

Suppose you have two computers, one running Linux, the other one Windows. Suppose further there is a directory on each computer which has to be kept synchronised between those computers. Worst of all, changes might be made to each directory at the same time, so synchronising is not a simple matter of copying files.

Ich benutze Linux, weil…

Ich dachte, ich beantworte mal diese Frage. Obwohl sie mir keiner gestellt hat. Das ist schließlich gute Recht eines jeden Blog-Schreibers :) Mir ist selber nicht so ganz klar, warum ich Linux benutze, und vielleicht erfahre ich es so. Noch als Vorbemerkung: mit Linux meine ich hier nicht nur den Kernel, sondern GNU/Linux, also das gesamte Betriebssystem insgesamt – potentiell inklusive der Oberfläche und der Anwendungen. Allein diese Sichtweise beeinflußt natürlich schon einige der folgenden Argumente.

Freie Software
Ich glaube, die Tatsache, dass Linux prinzipiell freie Software ist, dass also jeder den Quellcode einsehen und modifizieren kann, beeinflusst mich zwar theoretisch, aber praktisch nicht wirklich. Auch wenn ich tatsächlich vorhabe, demnächst mal an einem Open-Source-Projekt mitzumachen, habe ich bis jetzt noch keine direkten Vorteile davon gehabt. Indirekte allerdings sehr wohl — dadurch, dass Projekte weiterverfolgt werden konnten, deren ursprüngliche Autoren keine Zeit oder nicht den Willen hatten weiterzumachen, oder einfach die Software einfach in eine andere Richtung entwickeln wollten, als andere.
Kostenlose Software
Dass Linux (der Kernel) kostenlos ist, ist eigentlich auch kein Argument. Man bekommt immer irgendwie ein Windows zu einem Computer dazu, das zwar nicht wirklich kostenlos ist, für alle praktischen Zwecke aber irgendwie schon. Außerdem würde ich auch als Student über die Uni Windows kostenlos bekommen. Trotzdem ist „kostenlose Software“ einer der Gründe, aber anders: Es gibt für Linux einfach sehr viel, sehr gute und kostenlose (sogar Open-Source-) Software, deren Äquivalent unter Windows nicht existiert oder nicht kostenlos wäre. Zugegebenermaßen wird das immer mehr entkräftet, da immer mehr Linux-Software nach Windows portiert wird — wie gerade zum Beispiel KDE. Ich werde demnächst mal einen Artikel über Software schreiben, die ich benutze, und bei der Gelegenheit mal schauen, was es davon inzwischen für Windows gibt.
Gute Software
Um es nochmal zu sagen, einer der Hauptgründe, oder vielleicht der Hauptgrund, Linux zu benutzen, ist für mich: gute Software. Ich schreibe demnächst darüber einen eigenen Artikel, aber dazu gehört zum Beispiel die prinzipielle Annahme, das alles über das Netzwerk möglich sein sollte, z.B. also die Existenz von SSH, NX und unison. Dazu gehört eine vernünftige Kommandozeile. Schließlich gehört dazu auch die Existenz von Dingen wie grep und diff auf der einen, und amarok und digikam auf der anderen Seite.
Dokumentation
Ja, Dokumentation. Nicht nur, dass die meisten Tools eine umfangreiche Kommandozeilen-Hilfe und eine ordentliche manpage haben: Auf den meisten Webseiten gibt es eine umfangreiche Dokumentation, am besten sogar noch als Wiki. Ansonsten helfen das Gentoo Wiki oder einfach Google immer weiter, sehr selten hat noch nie jemand dasselbe Problem gehabt. Und im Gegensatz zu Windows-Problemen landet man sehr selten auf Werbe- und Flash-überfrachteten Webseiten mit wenig und unklarer Information, oder mit Verweisen auf dubiose Shareware-Tools.
Reaktionsverhalten
Ich denke nicht, dass Stabilität heutzutage noch ein großes Problem ist. Früher waren alle von Linux so begeistert, weil es im Gegensatz zu Windows nicht ständig abgestürzt ist, wenn ein einzelnes Programm abgestürzt war (oder auch so!). Dafür hatte Linux früher seine eigenen Tücken, wo der X-Server eingefroren war, das System zwar weiterhin tadellos lief, aber man nur über eine SSH-Konsole irgendwas tun konnte, weil die Tastatur auch nicht mehr angesprochen hat. Ich denke, dass Stabilität heutzutage bei beiden Betriebssystemen eigentlich kein Problem mehr ist. Was ich bei Linux als extremen Vorteil sehe, ist, dass es selbst unter hoher Belastung weiter reagiert. Und zwar unter wirklich hoher Belastung, abgesehen von knappem Speicher. Damit hat selbst Linux heute noch Probleme. Windows reagiert dahingegen meist eher schleppend, sobald mehrere Programme laufen und arbeiten. Mir ist klar, dass das eine Prioriäten-Frage ist, aber ich mag es, wenn ich immer eingreifen kann, und während des Wartens etwas anderes tun kann.
Transparenz
Transparenz ist für mich zweischichtig. Erstens habe ich den Eindruck, dass zumindest bei den Systemkomponenten die Konfiguration wesentlich transparenter verläuft als unter Windows. Das mag aber auch mit Gentoo zusammenhängen. Für jede Systemkomponente gibt es üblicherweise genau eine, ordentlich kommentierte Textdatei, in der man alle Einstellungen vornehmen kann. Zugegebenermaßen ist das für GUI-Programme nicht immer so transparent, aber üblicherweise doch ausführlich erklärt. Die andere Seite der Transparenz ist die Fehlermeldungs-Transparenz. Ich habe eigentlich noch nie einen Fehler mit nur einer kryptischen Hex-Nummer und keinen weiteren Informationen bekommen, sondern meistens eine ziemlich deutliche Erklärung, was passiert ist. Wenn die Erklärung nicht deutlich genug war, kann man normalerweise danach googeln, oder vorher besser noch zusätzlichen Debug-Output anfordern. Meist hat dann jemand dasselbe Problem schon gelöst, und 5 min später funktioniert alles.
Softwareinstallation
Jetzt werden einige sagen: Was, aber unter Windows kann ich doch einfach alles herunterladen? Ja, schon, aber in einer Konsole emerge paketname eingeben funktioniert auch, lädt automatisch alles herunter und konfiguriert sogar normalerweise schon das allermeiste. Zusätzlich kann man dann sicher sein, dass das Paket richtig in den Rest des Systems integriert wird, und normalerweise einfach funktioniert. Außerdem werden die Pakete (zumindest fast) rückstandsfrei entfernt, was man unter Windows üblicherweise nicht behaupten kann.

Zusammenfassend ist das jetzt doch mehr ein Plädoyer für Linux geworden — aber schließlich benutze ich es ja auch, und ziehe es Windows vor, also sollte ich ja auch dafür sein. Was ihr jetzt damit macht, ist eure Sache.

KDE 4.1.1 in Portage?