mgr's weblog

Archives for December 2005

Newton's Birthday Eve

December 26, 2005, Lisp
Last edited on March 16, 2007

Christmassy toughts in #lisp:

20:33 <mgr> gilberth: Merry Christmas! (A bit late, but not too late. :) 20:34 <gilberth> mgr: Well we celebrated Newton's birthday; but thanks anyway :) 20:36 <lichtblau> so what are going to tell your children (once you've got some) about who brings the presents? "oh just look under the newtontree what old newton brought this night?" ;-) 20:36 <hefner> gravity? 20:36 <gilberth> Well, I'll tell them Netwon found out about gravity, not because an apple fell from the tree, but a present. 20:37 <lichtblau> oh, of course! 20:37 <gilberth> And the present is from the spaghetti monster of course. 20:37 <lichtblau> gravity, the basic recipe for a romantic childhood story! 20:38 <mgr> gilberth: :) That seems to be a better occasion! Though you are probably a bit early for our Gregorian calendar. ;)

(Full text in the publicly archived logs of the freenode-channel #lisp.)

Eschbach, Carr, Hesse

December 26, 2005, Literature
Last edited on December 26, 2005

Eschbach

Andreas Eschbach, Der Letzte seiner Art (Bastei Lübbe, 2003)

Wohl das erste Mal, daß ich ein Buch fast ungelesen gekauft habe! Nachdem mir Eine Billion Dollar so unheimlich gut gefallen und beeindruckt hat — es ist auch jenes andere Buch, auf das ich auch schon in dem letzten Eintrag der Kategorie Literatur verwiesen habe —, habe ich nun bei der Weihnachtsgeschenkesuche von einem Geburtstagsgutschein den Thriller Der Letzte seiner Art von Andreas Eschbach gekauft. Normalerweise suche ich mir in einem Buchladen zunächst nach Titel und Klappentext einen ganzen Stapel Bücher zusammen und lese dann in jedem Buch erstmal ein paar Minuten oder sogar eine Viertel Stunde, bevor ich kaufe. Zu oft erscheint ein Werk zwar interessant, aber der Schreibstil oder einfach die Erzählart stellen sich schlicht als unerträglich heraus. Bei diesem Buch habe ich gerade mal den Klappentext und vielleicht noch den ersten Absatz gelesen — und das, obwohl ich beim Thema erstmal ein wenig skeptisch sein müßte; naja, andererseits mag ich auch die Kurzgeschichten in jeder Ausgabe der c't sehr (Sie dürften inzwischen der einzige Teil des Magazins sein, den ich jedes Mal lesen, und das so ziemlich zuerst.) —, so sehr hat mich der Autor im letzten Buch beeindruckt. (Einen eigenen Eintrag zu Eine Billion Dollar wird es natürlich noch geben. Ich habe auch schon am 11.11. im Zug nach Paris einen geschrieben, bisher hatte ich aber noch keine Lust, ihn für die Veröffentlichung zu überarbeiten.) Aber zunächst habe ich noch ein paar andere Bücher vor mir.


Carr

Rosamond Halsey Carr und Ann Howard Halsey, Land der Tausend Hügel — Mein Leben in  Afrika (Diana, 1999)

Ein anderes, das einfach unerträglich wurde, habe ich vor ein paar Tagen abgebrochen, weil die etwas betagtere Autorin doch leider auch schreibt, wie man es von einer Großmutter erwartet: Schauplätze werden gleich mehrmals vorgestellt, und jedes Mal natürlich in großer Ausführlichkeit. Insgesamt wundere ich mich, daß das Buch — bzw. das von mir gelesene Drittel — kapitelweise zusammengestückelt wirkt und insgesamt durcheinander erscheint; immerhin soll doch der Autorin Nichte als Co-Autorin mitgewirkt haben, der doch spätestens die argen Wiederholungen aufgefallen sein müßten. Oder wird hier auf eine vergeßliche Leserschaft spekuliert?

Ich kann natürlich nur den Teil kommentieren, den ich gelesen habe. Dieser hat mir neben dem Schreibstil aus noch anderen Gründen nicht gefallen. Zunächst aber möchte ich anfügen, daß ich die Autorin für ihr geführtes Leben nicht angreifen möchte. Sie hat wohl Bemerkenswertes geleistet, wie der Klappentext verrät. Beispielsweise habe sie nach dem großen Bürgerkrieg in Ruanda ein Waisenhaus gegründet. Allerdings kann ich sehr wohl kommentieren, wie ungeschickt und unbedacht sie erzählt.


In meinen Augen betrachtet sie ihr Leben arg selbstgerecht. Es geht um eine Frau, die, 1912 in Amerika geboren, 1949 mit ihrem Mann, einem weltweit bekannten Großwildjäger, nach Ruanda auswandert. Dort bewirtschaftet sie zunächst mit jenem Mann eine Plantage, schließlich verwaltet sie eine andere alleine und letztendlich beteiligt sie sich an einer eigenen, auf der sie auch ihr restliches Leben verbringt (bisher zumindest).

Zwar ist ihr zugute zu halten, daß sie auf ihrer Plantage eine Schule für den Großteil der Belegschaft errichtet hat, der aus Kindern besteht. Doch trotz Schule handelt es sich eben um Kinder. Gut, mögen es zu jener noch gar nicht allzu lang vergangenen Zeit zumindest auf jenem Kontinent noch selbstverständlicherweise Kinder gewesen sein, allerdings verstört mich doch, daß sie dies in ihrem Rückblick, den sie immerhin in heutigen Tagen verfaßt hat, völlig ohne kritische Worte oder Entschuldigungen beschreibt. Im Gegenteil!

Bei der Arbeit stimmten die Kinder oft schöne Weisen in Kinyaruanda an. Die älteren sangen jeweils eine Strophe, und beim Refrain fielen alle mit ein. Dabei wurde immer viel gelacht und improvisiert. [. . .] Auf Buniole lachten und sangen die Kinder und wurden gut versorgt. Mittags rösteten die Männer an den großen Feuern im Trockenhaus für sie Maiskolben, und die Arbeiter auf den Feldern gaben auf sie acht, während sie zufrieden die Blüten pflückten.

Hach, toll. Feldarbeit ist ja aber auch gar nicht allzu anstrengend. (Die Betonungen sind, eigentlich unnötig, von mir eingefügt. Das Zitat findet sich auf Seite 47.) Aber natürlich fallen diese Erzählungen beschönigend und ohne Entschuldigungen aus: Schließlich blickt hier eine Frau auf ihre Vergangenheit zurück, die zufrieden mit sich sein kann und in ihrem hohen Alter nur gerecht mit sich selbst umgeht. (Achja, Sarkasmus, Krankheit der Kritiker, macht nur allzu viel Spaß.)


Desweiteren stört mich, daß sie in all ihren niedlichen Anekdötchen über ihre Angestellten und umliegend Wohnende (auch Mitglieder ihrer Kreise) ständig die vollen Namen nennt, von denen ich vermuten kann, daß es sich um die wahren Namen handelt. Sicherlich hat sie nicht vor der Veröffentlichung ihre ehemaligen Wohnorte im Kongo und in Ruanda bereist, um all die Vorkommenden um Einwilligung zu bitten. Sei es, es handelt sich um die angestellten Männer, die ihren Frauen angeblich übel mitspielen, die Frauen, die zickig und dickköpfig ihren Männern gegenüber seien, oder den Mann, den nur ich hier nicht mit Namen nenne, der ebenfalls der "auserlesenen Gesellschaft von Abenteurern und Aristokraten, welche es nicht an schillernden Charakteren mangelte," angehört und der laut der Autorin "ein kräftiger Mann mit unglaublicher körperlicher wie auch sexueller Energie" ist; auch die zum Beweis angeführten Liebschaften werden natürlich, wenn es das Gedächtnis noch hergibt, mit Namen genannt (Seiten 83-53). Muß ja alles authentisch sein. Wer hat denn da ein Recht auf Privatsphäre. Ist doch schließlich ihre Geschichte und Vergangenheit, die sie da offenlegt.

Oh, und natürlich darf man auch gute und enge Freunde im nachhinein outen (Seite 152):

Zwar entwickelte sich mit der Zeit eine enge Freundschaft und innige Zuneigung zwischen uns, aber es zeigte sich bald, daß niemals mehr daraus werden konnte. Per hatte eine verborgene Seite, die ihn sehr quälte — so sehr, daß er immer wieder an Selbstmord dachte. Homosexualität fand in jenen Tagen wenig Verständnis und mußte nach Möglichkeit verheimlicht werden.

Bemerken beide Autoren nicht, wie bitter folgende Zeilen auf Seite 151 sind? Das sollte man nicht etwas anders ausdrücken?

Bei seiner Rückkehr nach Ruanda [während der Unruhen der Unabhängigkeitserklärung des Kongo 1960] war Per völlig mittellos. Er kam fast jeden Abend zum Essen zu mir, und tagsüber arbeiteten wir Seite an Seite auf der Plantage. Für mich war ein Traum wahr geworden[.]


Oh, Mann, ich merke gerade, daß ich 40 Prozent des Buches gelesen habe, eben bis jene Seite 152 (von 372 Seiten, wobei man acht Seiten am Anfang abziehen muß)! So lange durchgehalten habe ich auch nur, da eine gute Freundin mir das Buch ausgeliehen hat. Aber jetzt halte ich es doch nicht weiter aus, und ich habe hiermit dargelegt, warum, was ich mir hier als Pfand anrechnen möchte, eben nicht mehr weiterlesen zu müssen. Bin ich zu empfindlich oder anspruchsvoll? Andere mögen das Buch wunderbar finden, es als "warmherziges Buch" bezeichnen oder meinen, es sei "hervorragend zu Papier gebracht" (erste Rezension auf Amazon.de), für mich ist es nichts. (Vielen Dank natürlich trotzdem fürs Ausleihen! Nicht, daß mir jetzt keiner mehr etwas ausleiht. . . :-) )

Obwohl ich es eigentlich nicht wollte, erwähne ich zum Schluß doch den Titel, damit dieses Buch nicht doch aus Versehen erwischt und Lesezeit verschwendet wird: Rosamond Halsey Carr und Ann Howard Halsey, Land der Tausend Hügel — ein Leben in Afrika (Originaltitel: Land of a Thousand Hills).


Hesse

Hermann Hesse, Der Steppenwolf (Suhrkamp, 1927); Abbildung: August Macke, Spiegelbild im Schaufenster (Ausschnitt), 1913

Abgebrochen, jedenfalls, habe ich dieses Buch, um Paradise von A.L. Kennedy zu lesen, das ich dann aber nach zwei, drei Seiten auch unterbrochen habe; allerdings nur, weil ich jetzt erst den von drei Freunden (zusammen mit edlem Wein) geschenkten Steppenwolf von Hermann Hesse lesen muß. (Um jenes Buch sollte sich dieser Eintrag auch eigentlich drehen, nach zwei, drei einleitenden Sätzen zu den anderen Büchern. . . *hust*)

Was für ein Buch (bisher)! Ich habe selten, nein, nie!, soviel in einem Buch unter- und angestrichen! Da mag manch einer sagen: "Du sollst lesen nicht markieren", aber hier gibt es einfach so viele zitierenswerte Sätze und ganze Abschnitte. Da ist meine ansonsten eigentlich gut ausgebildete Fähigkeit, beliebige Stellen in einem gelesenen Buch wiederzufinden, einfach überfordert. Doch nicht mehr in diesem Artikel, da werden gesonderte folgen.

Nein, doch!, ein zu passendes Zitat angesichts des zuvor besprochenen Buches:

Wunderlich, was der Mensch alles schlucken kann! Wohl zehn Minuten las ich in einer Zeitung, ließ durch das Auge den Geist eines verantwortungslosen Menschen in mich hinein, der die Worte anderer im Munde breit kaut und sie eingespeichelt, aber unverdaut wieder von sich gibt. Das nahm ich zu mir, eine ganze Spalte lang. Und alsdann fraß ich ein gutes Stück von der Leber, die man aus dem Leib eines totgeschlagenen Kalbes geschnitten hatte. Wunderlich!


Vielen Dank, Ralf, Johann und Hannes! (Und natürlich auch an Moritz, Basti und Jenny für den Gutschein!)

Lauch-Käse-Hackfleischsuppe

December 19, 2005, Cooking & Baking
Last edited on October 23, 2006

An meiner Geburtstagsparty vor ein paar Tagen habe ich meine nicht unzahlreichen Gäste bekocht, und da gleich mehrere Freunde daraufhin das Rezept für die Suppe haben wollten, habe ich letzte Nacht das Rezept noch mal ordentlich aufgeschrieben. Jetzt packe ich es der Einfachheit halber direkt in mein Weblog, nachdem meine Mutter, der ich das Rezept verdanke, nichts dagegen einzuwenden hat.

Die Kurzfassung lautet:

Lauch-Käse-Hackfleischsuppe (für ca. 16 Personen) ---------------------------------- 2 kg Hackfleisch } nach und nach anbraten 2-3 dicke Zwiebeln } in etwas Fett glasig dünsten 4-5 St. Porree (gut 2kg) } kleinschneiden und mit Obigem in einen großen Topf geben "halbvoll mit Wasser" Salz, Pfeffer } würzen (nicht zuviel Salz) Gemüsebrühwürfel/-pulver } entsprechend der Wassermenge zugeben Zum Kochen bringen und solange Kochen, bis der Lauch weich ist. Anschließend Herdplatte herunterdrehen, so daß es nur noch warm bleibt. 2 Pkg. Champignoncreme- } unterrühren suppe von Knorr 2 Pkg. Sahne- und \ Flöckchenweise nach 2 Pkg. Kräuterschmelzkäse | und nach unter die ("Alpenmark" von Aldi, | Suppe geben. je 200gr) / Noch ein wenig Wasser dazugeben, "damit der Pott voll wird". Wichtig: Die Suppe frisch zubereiten, keinesfalls am vorherigen Tag.


Und die lange Version gibt es hier (anklicken, ist auch in 150dpi zum brauchbaren Ausdrucken):

Suppenrezept, Seite 1 von 2 (295 kB) Suppenrezept, Seite 2 von 2 (321 kB)


Ich hoffe, daß das jetzt nicht dazu führt, daß die dauernd von Freunden gekocht wird, so daß sie nichts besonders mehr sein wird. Andererseits glaube ich kaum, daß diese Gefahr besteht. Also: Guten Appetit!


PS: Kommentare sind wie immer natürlich sehr willkommen! Ich leite auch gerne eventuelles Lob an meine Mutter weiter. :-)

JACK-Input-Plugin für XMMS

December 18, 2005, Music
Last edited on December 18, 2005

Wiki-Seite zum LED-Cube

Anfang der Woche habe ich mir des nächtens endlich ein Input-Plugin für das JACK Audio Connection Kit und XMMS zusammengeschustert. Hauptbeweggrund ist gewesen, daß ich mein XMMS Visualization-Plugin für den LED-Cube für andere, externe Dinge benutzen wollte als nur für Audiodateien, die XMMS selber abspielen kann — besonders, um letztendlich zu Line-in den Kubus blinken lassen zu können, oder was mir gerade einfällt. Ist auch ganz niedlich, wenn er via Mikrophon zur eigenen Stimme oder Geklopfe blinkt.

Noch ein XMMS-Plugin in der abstrusen Programmiersprache C zu schreiben, hatte ich wenig Lust. Auch wollte ich mich weder mit der Plugin-Schnittstelle von XMMS weiter herumschlagen oder mir die Innereien von JACK antun. Ein Ausweg schien das Meta-Input-Plugin aufzuzeigen (die Homepage des Autors, die von der zuvor genannter xmms.org-Seite verlinkt ist, ist wohl seit geraumer Zeit tot, allderings findet man die Datei xmms-meta-input-0.4.tar.gz auch gut per Google). Oh, gerade sehe ich, daß Mikael Bouillot, besagter Autor, wohl umgezogen ist, und sich die Seite nun unter http://www.corbac.com/page3.html findet! Dort finden sich auch alle bisherigen Versionen, — und der Hinweis, man solle inzwischen lieber das BMP-Meta-Plugin von Michael Doering verwenden. Nun, mein Hack baut noch auf das "alte" Plugin auf.

Das nächste Problem war, ein Programm zu finden, das sich am JACK-Server anmeldet und den Sound möglichst als rohen WAV-Stream auf Standard Output herauswirft. jackrec schien zunächst ein geeigneter Kandidat, will allerdings zwingend in eine Datei schreiben. Ein schneller Test mit einer benannten Pfeife ("named pipe" via mkfifo) schlug leider fehl (wäre allerdings auch etwas unergonomsich); ich hatte schon angefangen, jackrec entsprechend umzuschreiben, allerdings habe ich dann gemerkt, daß es auch Blödsinn macht, wenn man es einfach so in eine Datei schreiben löst. Es macht nur eine klitzekleine Datei, die kaum mehr als ein PLIK enthält und bricht ab. Also war dies eine Sackgasse, den ich hatte keine Lust, den Bug in jackrec zu suchen.

Nächster Kandidat schien jack.udp zu sein, ein Client, der zwei jackd-Server per UDP über ein Netzwerk verbindet. Ich wollte auf der einen Seite jack.udp im send-Mode starten, mit Qjackctl verkabeln und den Stream mit dem Allzwecktaschenmesser netcat abfangen. Aber das war natürlich Blödsinn, da am Ende natürlich nicht ein WAV-Stream herauskommt, sondern irgendein JACK-Protokoll. (Nebenbei hat sich herausgestellt, daß jack.udp zwar ein nettes Tool wäre, es allerdings für den Einsatz in einem wirklichen Netzwerk ohne weiteres erst einmal ungeeignet ist. Am Ende kommt nur ein langgezogener, zerknitterter Ton mit vielen Unterbrechungen heraus.)

Als ich schon fast keine Lust mehr hatte (okay, "fast" ist ein Euphemismus), habe ich mir ein paar generelle, nicht JACK-spezifische Audioprogramme für die Kommandozeile genauer angesehen, SoX und co. SoX selbst war zwar nicht geeignet, aber mit Ecasound wurde ich endlich fündig! Ein schneller Test ohne irgendwelche Optimierungen war erfolgreich, anschließend habe ich das ganze noch etwas verschönt und mit allerlei Optionen garniert, damit Ecasound nicht dick puffert (im einzelnen: "-B:rt -b:0 -z:nodb -z:nointbuf").

Hier ist das Ergebnis:

#!/bin/sh # # If one tries to open any file with the extensions ".jack" # it tries to connect to a Jack source with the basename of the filename # (i.e. the filename without path and extension).

case $1 in play) source=$(basename "$(echo -n "$2" | head -c -5)") echo -e "\n======= Connectiong to Jack source: $source =======" 1>&2 # ecasound -q -i jack_auto,"$source" -o stdout ecasound -q -B:rt -b:0 -z:nodb -z:nointbuf -i jack_auto,"$source" -o stdout exit 0 ;; isOurFile) extensions=$(echo -n "$2" | tail -c 5) if [ "x$extensions" == "x.jack" ]; then exit 0 else exit 1 fi ;; esac
exit 1


Rezept

Man lade sich das Meta-Input-Plugin herunter, kompiliert es sich und installiere es (d.h. man packe bei einer Benutzerinstallation einfach die Datei libmetainput.so in sein ~/.xmms/Plugins und erstelle das Verzeichnis ~/.xmms/Plugins/Meta). (Für Eilige gibt es hier auch mein fertiges Binary für die x86er Plattform, natürlich ohne jegliche Garantien, allerdings bin ich ja ein lieber, netter Kerl.)

Die Datei jack-via-ecasound kommt anschließend in das eben erstellte Meta-Verzeichnis, und sollte mit executable flag versehen werden ("chmod +x jack-via-ecasound").


Benutzung

Plugins für XMMS funktionieren in einem Zwei-Schritt-Verfahren. Beim Öffnen einer Datei in XMMS (bzw. Hinzufügen in die Playlist) fragt XMMS die einzelnen Plugins, welches denn bitte für die Datei zuständig ist. Beim Meta-Input-Plugin werden die installierten Skripte dazu mit "isOurFile" als erstes Argument und dem Dateinamen (einschließlich Pfad) als zweites aufgerufen; beim Abspielen schließlich lautet das erste Argument "play", das zweite bleibt der vollständige Dateiname.

Für mein Skript gebe man bitte eine (nicht zwingend vorhandene) Datei mit der Erweiterung ".jack" an, wobei man vor dem Punkt direkt die JACK-Quelle angeben kann. Bei Ecasound kann man idealerweise "jack_auto" als Eingabequelle angeben, wobei der Name (beim Dateinnamen der Teil vor dem Punkt) mit etwas Voodoo auf den eigentlichen JACK-Output gematcht wird. Sehr praktisch!

Mit eingeschaltetem Plugin gebe man also einfach "alsa_pcm.jack" als Dateinamen an und, voila!, XMMS startet beim Abspielen Ecasound, das sich mit der JACK-Quelle "alsa_pcm" verbindet und die Visualization-Plugins blinken zum Ton, der an Line-In hereikommt (so der Mixer der Soundkarte richtig eingestellt ist). Und soll's zu Videos in (G)Mplayer blinken, gebe man einfach "MPlayer.jack" an.

Hach, ich bin glücklich.


Über die beiden JACK-Output-Plugins für XMMS

Es gibt mindestens zwei solcher Plugins: XMMS jack Driver und XMMS Jackasyn Driver. Beide machen so ziemlich das gleiche, das zweite, das die libjackasyn-Bibliothek verwendet, hört sich laut Beschreibung des Debian-Pakets aber besser an:

The advantage of using this plugin is that you do not have to change the output plugin if you want to work with or without jack. The plugin switches automatically between OSS and jack.

Es hat allerdings den gewaltigen Nachteil, daß es — wie auch das OSS-Output-Plugin, von dem wohl fleissig kopiert wurde — immer puffert. Der Standardwert ist dabei gigantische 3 Sekunden! Und der Mindestwert ist nicht etwa 0 Milisekunden, sondern immer noch ordentlich wahrnehmbare 200ms (obwohl es sich nicht wirklich nach 200ms angehört hat). Das ist natürlich reichlich dämlich, wenn man einen low-latency audio server wie eben JACK verwendet. . . Das "normale" JACK-Plugin ohne "asyn" hat dieses Problem nicht.

Select a Theme:

Basilique du Sacré-Cœur de Montmartre (Paris) Parc Floral de Paris Castillo de Santa Barbara (Alicante) About the photos

Entries: