emerge output ends up as attachment.bin when sent with nail / Heirloom mailx

I really like the command line mailer Heirloom mailx (formerly nail), and now there is even a current version in portage again (still under the name mail-client/nail, but that doesn’t matter), so that’s even better. I use it on all servers, since it’s just convenient – it can handle attached files, UTF-8 etc. without any problems.

But there was one problem that bothered me for months already: It involved my check_updates.sh script, which basically just calls /usr/bin/emerge -upvDN --nospinner world for the host and all virtual servers, and then sends the output to me.

The problem: emerge’s output always ended up as ‘attachment.bin’, attached to the (otherwise empty) mail, although I piped it into mail -s "Updates for $DATE" root where it should come out as the mail body. I knew that Heirloom mailx does that, as soon as it doesn’t “like” one of the characters in the input, but I couldn’t think of a reason why it would do that with emerge’s supposedly plain-ASCII output.

Today I had enough of it, and fired up hexdump to investigate said ‘attachment.bin’, using the following command:
hexdump -e '1/1 "%03d \n"' attachment.bin | sort -u
It outputs the unique decimal values of any byte occurring in ‘attachment.bin’ as a sorted list. I expected to find something above 127 – but the highest occurring value was 122 (“z”). I then checked the top part of the list, and to my surprise, found 008 (backspace) there. After removing those by piping the output through tr -d '\010' (8dec = 10oct, and tr needs octal values), Heirloom mailx no longer put the text into ‘attachment.bin’. It now appears in the mail’s body, where it belongs.

By the way, those backspaces (when interpreted) change
Calculating dependencies ... done!
to
Calculating dependencies... done!
… so removing them is not a big loss. I’d like to know though, why they are there in the first place, even though the output doesn’t go to a TTY.

Geek-Symbole und Umlaute für G2 mit QWERTY-Tastatur

Ich habe mir ein neues Telefon zugelegt – wieder ein Android, nachdem Nokia MeeGo nicht durchzieht, und sich stattdessen zum Microsoft-OEM-Hersteller degradieren lässt…
Da ich viel und häufig Kommandos via SSH tippe, kam wieder nur ein Telefon mit voller Tastatur in Frage, und somit ist meine Smartphone-Historie nun 9300i → G1 → G2.

Auf der Tastatur des G2 (auch HTC Desire Z oder HTC Vision genannt) lässt es sich sehr gut tippen, doch leider fehlen essentielle Symbole, die jeder der irgendwas in eine Shell eintippen will, oder irgend etwas programmieren will, unbedingt braucht – beispielsweise geschweifte Klammern ({}), eckige Klammern ([]) und spitze Klammern (<>). Sogar die Pipe (|) fehlt. Ich fasse diese Symbole im Folgenden unter dem Begriff “Geek-Symbole” zusammen. Das war auf dem G1 übrigens anders – es gab dort alle Geek-Symbole, aber da hatte die Tastatur auch eine zusätzliche Tastenreihe.

Weiterhin hat mein G2 eine QWERTY-Tastatur, QWERTZ war hier nicht verfügbar – damit kann ich zwar über Taste-lang-drücken Umlaute schreiben, jedoch geht das z.B. im Terminal (ConnectBot) nicht, davon abgesehen dass es umständlicher ist als eine direkte Tastenkombination.

Um Problem 1 (fehlende Geek-Symbole) zu beheben, hat teferi das QWERTY-Layout modifiziert (Thanks, teferi!), und dabei auch die Tools und den Prozess den er verwendet hat, zur Verfügung gestellt / beschrieben. Sehr schön, so sollte das immer sein 🙂
Damit habe ich nun ein Layout gebastelt, das auch Problem 2 (fehlende Möglichkeit Umlaute einzugeben) löst. Nach Installation der Keymap-Datei hat man zusätzlich folgende Symbol-Tastenkombinationen:

\ left-soft
| shift left-soft
` alt left-soft
[ middle-soft
{ shift middle-soft
< alt middle-soft
] right-soft
} shift right-soft
> alt right-soft
^ alt z
ä shift alt a
ö shift alt o
ü shift alt u
Ä shift alt q (*)
Ö shift alt w
Ü shift alt e
ß shift alt s

(Bekommt man Tabellen in WordPress irgendwie besser hin als mit good old HTML?)

(*) Hier ist mir nichts besseres eingefallen, als einfach bei den ersten Buchstaben der Tastatur (Q, W, E) anzufangen – falls jemandem etwas besseres einfällt – bin für Vorschläge offen 🙂

Kurze Anleitung, wie man das Layout auf’s Telefon bekommt:

  1. g2-keymap-0.3-ger.zip herunterladen
  2. g2-keymap-0.3.zip auf das Telefon unter /sdcard entpacken
  3. Über ‘adb shell’ oder direkt im Terminal auf dem Telefon folgende Kommandos eingeben:

    mount -o remount,rw /system
    cp /sdcard/vision-keypad-wwe.kl /system/usr/keylayout/
    cp /sdcard/vision-keypad-wwe.kcm.bin /system/usr/keychars/
    sync
    reboot

Update (2011-05-23): Seit ca. CyanogenMod Nightly Build 80 funktionierte mein Keymapping nicht mehr. Ich habe nun herausgefunden, dass Android seit neuestem ein ‘-wwe’ im Dateinamen erwartet, also nun vision-keypad-wwe.kl und vision-keypad-wwe.kcm.bin anstatt wie bisher vision-keypad.kl und vision-keypad.kcm.bin. Ich habe die Dateien im obigen ZIP-Archiv umbenannt, und nun selbst eine leicht modifizierte Anleitung in den Artikel übernommen, sodass sie für aktuelle Builds funktioniert. Ich habe nicht getestet, ob ältere Builds mit dem ‘-wwe’ klarkommen, oder ob man das aus den Dateinamen dann wieder entfernen muss.

Sinnfrage

(English readers: this blog post contains a German translation of an essay by Douglas Rushkoff – please read the English original.)

Über Twitter hat mich ein Link auf einen kurzen Aufsatz von Douglas Rushkoff erreicht, in dem er interessante Gedanken zum Sinn des Lebens in den Raum stellt. Mir hat der Aufsatz sehr gut gefallen, weshalb ich ihn nach bestem Wissen ins Deutsche übersetzt habe:

Ich kann es lediglich anekdotenhaft belegen, aber ich glaube, dass die Evolution ein Ziel und eine Richtung hat. Es erscheint offensichtlich, ist jedoch absolut nicht nachweisbar: Materie entwickelt sich in Richtung höherer Komplexität. Obwohl Naturgesetze – und Zeit an sich – erfordern, dass Objekte und Lebewesen Langlebigkeit und Nachhaltigkeit zum Überleben erlangen, kommt es mir so vor, als ob das eher ein Mittel zum Zweck, als ein Zweck an sich ist.

Die Theologie kommt recht weit damit, der Materie und Vorgängen eine Bedeutung zuzurechnen, indem sie Leben als “Materie die in Richtung Gottheit strebt” beschreibt – oder als Prozess durch den die Gottheit Materie zu sich zurückholt – aber Theologen machen immer den Fehler, diese Vorstellung vom Sinn des Lebens an der Vergangenheit festzumachen, anstatt an der Zukunft. Das ist ganz natürlich, da die gedanklichen Strukturen, die wir verwenden um die Welt zu verstehen, dazu neigen, Anfänge, Mittelteile und Enden zu haben. Um den Ausgang der Geschichte erleben zu können, müssen wir ihn eingebaut in den ursprünglichen Plan der Geschehnisse sehen.

Weiterhin ist es für Menschen schwierig damit fertigzuwerden, dass wir mit großer Wahrscheinlichkeit einfach nur überentwickelte Pilze und Bakterien sind, die sich durch eine Galaxie im kalten und bedeutungslosen Weltall bewegen; unsere Existenz könnte unabsichtlich, bedeutungslos und zwecklos sein. Das schließt aber Bedeutung oder Zweck nicht als Ergebnis unserer Interaktion und Zusammenarbeit aus. Bedeutung ist möglicherweise keine Voraussetzung für die Menscheit, sondern vielmehr ein Nebenprodukt dieser.

Deshalb ist es so wichtig, zu erkennen, dass die Evolution in ihrer höchsten Form ein Mannschaftsspiel ist. Darwin behauptet in seinen späteren, weniger bekannteren aber bedeutenderen Werken, dass das Gesetz des Überlebens der bestangepassten Individuen eigentlich nicht auf Individuen anzuwenden ist, sondern auf Gruppen. Genau wie heute postuliert wird, dass Mücken beim Stechen Juckreiz verursachen um bei ihren Opfern schweißtreibende Nervosität auszulösen und somit anderen Stechmücken die Ortung erleichtern, so sind größere Sprünge in der Entwicklung der Menschheit – von Clanbildung bis zum Städtebau – Erträge der Zusammenarbeit. Eine größere Überlebenschance ist genauso ein glücklicher Nebeneffekt guter Zusammenarbeit, wie sie ein Zweck ist.

Könnten wir aufhören, Sinn und Zweck als Schöpfungen irgendwelcher Gottheiten aufzufassen, und stattdessen als Ergebnis unserer eigenen kreativen Zukunft zu sehen, würden sie zu Zielen, Absichten und Vorgängen werden, die tatsächlich erreichbar sind – an Stelle von Schatten einer kindlichen, abergläubischen Mythologie.

Ein Beweis ist unmöglich, da er selbst zur Entwicklung beiträgt. So wie der Versuch den Horizont zu erreichen lediglich Weiterreisen erforderlich macht.

(falls jemand Verbesserungsvorschläge zur Übersetzung hat, nur her damit 🙂 )