Dass mutt-ng so ziemlich eingeschlafen ist, wird mittlerweile jeder bemerkt haben, der mutt-ng selber verwendet. Tja, der Grund dafür ist, dass ich in Retrospektive betrachtet einfach nicht wusste, wie man das anzugehen hatte, um das ganze manageable zu halten. Insbesondere um das Mergen von Änderungen in upstream hab ich mir keine Gedanken gemacht, aber auch sonst wusste ich noch nicht so recht was über professionelles Patch-Management.
Die Probleme, die daraus resultieren, sind natürlich mannigfaltig: neue Features in mutt waren schwierig zu mergen, und das Tracken von Security Fixes ebenso problematisch. Irgendwann war dann ein Punkt erreicht, wo ich nicht mehr so recht motiviert war, da noch wirklich weiter dran zu arbeiten. Der damalige Stress in der Arbeit und schließlich das Bundesheer trugen ihr übriges dazu bei. Und auch die anderen Entwickler sahen die Probleme, die es bei mutt-ng gab.
Da aber mutt-ng doch einige sehr praktische Patches und Fixes enthält, die ihren Weg bis jetzt nicht in mutt gefunden haben, hab ich mich jetzt aufgerafft, und mir ein paar Gedanken gemacht, wie man denn das ganze besser machen kann, nachvollziehbarer, und vor allem so, dass Patches auch unproblematisch ihren Einzug in das offizielle mutt halten könnten. An Tools, um das Patch-Management zu unterstützen, hatte ich dazu transvn (welches auf Subversion aufbaut) und stgit (welches auf git aufbaut, das bei der Kernel-Entwicklung eingesetzt wird) evaluiert, mit keinem der beiden Tools war ich jedoch so wirklich zufrieden. Während sich transvn regelmäßig sein Repository zerschoss, und damit praktisch unbrauchbar war, hat git mit stgit doch den Vorteil, den Export und vor allem inkrementelle Updates aus CVS- und Subversion-Repositories zu unterstützen. So richtig zufrieden war ich damit jedoch nicht, weil es ja eine Bindung an ein bestimmtes Versionsverwaltungstool bedeutete. Und meine Anforderungen lagen nicht primär in der Versionsverwaltung, sondern im Patchmangement.
Mika hat mich dann freundlicherweise auf quilt verwiesen, ein Tool, dessen einziger Zweck Patchmanagement darstellt, unabhängig von jeder Versionsverwaltung, jedoch damit kombinierbar. Quilt verfolgt das Konzept eines Stacks, also ein Stapel von Patches. Man nimmt einen ungepatchten Sourcetree, sowie diesen Patchstapel, und kann einen Patch nach dem anderen, oder auch alle auf einmal hintereinander, applien. Wenn es ein Problem mit einem Patch gibt, so schreit quilt, und man kann dann manuell intervenieren, indem man z.B. den Patch durch einen aktuelleren ersetzt, oder den Patch trotzdem anwendet, und die fehlgeschlagenen Teile manuell einfügt. Damit kann es zwar zu Abhängigkeiten von Patches untereinander kommen, wenn diese etwa die gleichen Stellen oder sehr nahe beieinanderliegende Stellen im Source patchen. Praktisch hat sich dieses System jedoch bewährt, so schreibt eine wirkliche gute Einführung in quilt, die man bei SuSE findet, vom Extremfall, dass es zu einem Sourcetree wie dem Linux-Kernel mehr als tausend Patches zu verwalten gäbe, und dass das Ziel der Entwicklung von quilt es war, die SuSE-Kernelsourcen besser verwaltbar zu machen.
Nachdem ich also endlich die passenden Werkzeuge zur Verfügung hatte, hab ich mich gestern und heute hingesetzt, die Patches, die in mutt-ng eingeflossen sind, in aktuellen Versionen zu sammeln, sowie meine eigenen Änderungen aus mutt-ng zu extrahieren (wobei ich größtenteils auf frühere Versuche mit stgit zurückgreifen konnte), und mutt-ng neu zu bauen. Die Patches verwalte ich mich mit quilt, und das patches-Verzeichnis speichere ich in meinem Subversion-Repository. Mittlerweile ist dieser neuerliche Versuch schon soweit, dass ich sagen kann, dass ich ganz zufrieden bin mit der Funktionalität. An ein paar Stellen hakt es zwar noch, aber die hoffe ich in den nächsten Tagen beheben zu können, und das noch dazu in einer Form, die an die ursprünglichen Autoren zurückfließen können. Die derzeitigen Patches sind gegen das Release 1.5.12, bald werde ich jedoch versuchen, die Patches auf den CVS-Tree von mutt anzupassen.
Und so holt man sich die Patches und applied sie: $ svn co http://bereshit.synflood.at/svn/mutt-patches/trunk/ mutt-patches
[...]
$ export PATCHES_DIR=`pwd`/mutt-patches/patches
$ cd $MUTTDIR
$ ln -s $PATCHES_DIR patches
$ quilt push -a
[...]
$ ./prepare
[...]
$ ./configure --your-favorite-options
[...]
$ make
Wie schon oben geschrieben, getestet ist das derzeit nur mit mutt 1.5.12.
So richtig öffentlich möchte ich das noch nicht stellen, da ich das ganze einerseits noch "runder" machen will und andererseits noch mehr Erfahrung im Patchmanagement sammeln will, insbesondere beim Einspielen von neuen Versionen der Patches.
Was mich im übrigens im Zuge der Arbeiten gestern und heute auch erstaunt hat, war, wieviel sich bei mutt mittlerweile getan hat. Header-Caching ist dazugekommen, und auch der GNUTLS-Patch wurde offenbar integriert. Immerhin diesen positiven Effekt hatte mutt-ng, nämlich die mutt-Entwicklergemeinde wachzurütteln, und klarzumachen, dass soviele praktische, jedoch nicht integrierte Features verfügbar sind. Einige weitere Patches, wie NNTP-Support oder die Sidebar, die wohl beliebtesten und am meisten verwendeten Features von mutt-ng, werden wohl nicht so schnell integriert werden. Insofern hat ein neuerlicher Anlauf in Sachen mutt-ng, diesmal mehr mit Fokus auf Patchsammlung und Integration ebendieser denn einem Fork, durchaus seine Berechtigung.
nion und ich haben heute in der Nacht w3bfukk0r 0.2 released. Als wichtigste Änderungen wären HTTP/HTTPS-Proxy-Support, jede Menge Bugfixes, die Möglichkeit, mehrere URLs zu scannen, eine neue Manpage und Sourcedokumentation (inkl. Doxyfile) zu nennen. Leider hat's beim freshmeat.net-Announcement einen Fuckup gegeben, statt "It's not possible to specify more than one URL to be scanned." sollte es "It's now possible to specify more than one URL to be scanned." heissen.
nion bloggt über Spermwale, und ich verweise auf einen eher skurrilen und gleichzeitig durchaus lesenswerten Wikipedia-Artikel: Walexplosion
Und zwar werden einerseits die angewandte Methode, Walkadaver mit Hilfe von Sprengstoff zu zerkleinern, andererseits auch ein Vorfall einer natürlichen Walexplosion durch sich durch Verwesung bildende Gase behandelt.
Wer wieder mal eine wirklich gute Satire zum Thema Informatik lesen will, dem kann ich nur The Critical Voice aus der aktuellsten Ausgabe von ACM Crossroads empfehlen. Zufälligerweise kenne ich den Autor persönlich (ja, das ist ein Pseudonym), und so hört man, dass das der Anfang einer ganzen Serie werden soll.
Mein Lieblingszitat ist ja
[...] we can also conclude that P = NP, although I never quite understood what was so difficult about that in the first place. How about N = 1, huh?
Heute hatte ich mal so richtig Lust, mal was völlig anderes als sonst zu kochen. Spontan ist mir da die thailändische Küche eingefallen. Also hab ich Google angeworfen, mir diverse thailändische Rezepte rausgesucht, und mir so angeschaut, was da typischerweise drinnen ist. Da hab ich dann eine Liste zusammengeschrieben, und alle Sachen weggestrichen, die ich ohne viel Aufwand (d.h. extra zu einem Asiashop latschen, von denen keiner bei mir in der Nähe ist) in meiner Nähe kriegen würde. Diese übrig gebliebene Liste hab ich dann genommen, und eingekauft, was ich davon kriegen konnte. Letztendlich verwendet hab ich dann Truthahnbrust, generisches Wokgemüse, Limetten, Fischsauce, Currypaste, Kokosmilch und Basmati-Reis.
Zuerst hab ich die Truthahnbrustfilets in kleine Streifen geschnitten, eine Pfanne mit Öl erhitzt, und einen Teil des Wokgemüses reingetan und angebraten. Dann noch mehr Öl, und die Truthahnbruststreifen scharf angebraten. Als nächsten Schritt hab ich dann etwa die Hälfte der Kokosmilch dazugegossen, das ganze schön verrührt und gleichzeitig die Hitze runtergestellt. Parallel dazu habe ich Wasser aufgesetzt, gesalzen und, als es gekocht hat, den Basmati-Reis reingetan. Der nächste Schritt war, von der Currypaste etwas in die Pfanne zu tun (knap ein Esslöffel, und wie sich später herausstellte, wohl etwas zuviel), und ebenfalls zu verrühren. Dann noch ca. ein Esslöffel Fischsauce dazu, sowie eine Limette reingepresst.
Schließlich hab ich das ganze noch weiterköcheln lassen, um das ganze zu reduzieren, die ganze Kokosmilch stellte doch eine beträchtliche Menge Flüssigkeit dar. Als der Reis dann fertig war, war die Sauce in der Pfanne schon dickflüssiger, und fertig, gegessen zu werden. Also, das ganze auf ein Teller, den Reis dazu (der mir auch nicht perfekt gelungen ist, zumindest will man "al dente" bei Reis nicht, aber halb so schlimm). Dazu getrunken hab ich ein typisch thailändisches Gösser-Bier.
Alles in allem muss ich sagen, dass ich Zubereitung relativ einfach und straight-forward war, und auch nicht allzuviel Zeit in Anspruch genommen hat. Nicht ganz so cool war das offenbar etwas zu starke Würzen mit der Currysauce, ein halber EL hätte es auch getan. Aber das ganze war trotzdem sehr gut, wenn auch geschmacklich äußerst intensiv. Alles in allem wirklich weiterzuempfehlen, gerade, wenn man z.B. Gäste mit etwas Exotischem bekochen will.
Wie hier schon erwähnt, bietet Pearl Jam Bootlegs von allen Konzerten der Europa-Tour an, zu moderaten US-$ 9,99 pro Konzert (immerhin mehr als 2 Stunden Musik). Mittlerweile ist auch der Mitschnitt von Wien erhältlich, welchen ich mir heute gekauft habe. Tja, und ich muss sagen, diese Liveaufnahmen sind wirklich genial. Vor allem, wenn man selbst auf dem Konzert war, und sich genau erinnern kann, wie dieser und jener Song war, und man das dann auch in den Aufnahmen wiedererkennt. Ausserdem hört man klanglich wesentlich feinere Aspekte heraus, als das bei einem Livekonzert möglich ist. Alles in allem ein besonderes Stück Livemusik.
Tja, schon wieder vorüber ist sie, die erste Arbeitswoche bei meinem neuen Arbeitgeber. Anfangs war es etwas stressig, weil ich mich natürlich in das Produkt, an dem ich mitarbeiten werde, einarbeiten musste. Mittlerweile funktioniert das aber schon halbwegs gut (für die kurze Zeit), und ich hab schon so Sachen gemacht wie mit der hauseigenen Library, die primär verwendet wird, experimentiert, Erweiterungen für die eingebaute Skriptsprache entwickelt, und arbeite derzeit an einem kleinen Tool, das künftighin das eine oder andere mal gebraucht werden wird. Alles in allem wirklich interessant, und ich bin so motiviert bei der Arbeit wie schon lange nicht mehr. Ich merke, die Veränderung hat mir wirklich gut getan.
Martin weist mich auf einen Artikel auf orf.at hin, und zwar schafft der Papst die Vorhölle ab. Tja, toll. Eigentlich zeigt das doch die absolute Lächerlichkeit des gesamten Systems. Wenn der Papst so direkten Einfluss auf doch nicht unwesentliche Glaubensinhalte hat, so muss man sich die Frage stellen: glaubt der Papst denn daran? Nun, gehen wir mal beide Antwortmöglichkeiten durch.
Ja, wenn der Papst daran glaubt, was heißt das? Wenn wir annehmen, dass alle Päpste daran geglaubt haben, dann bedeutet das, dass der Glaube die Summe der Glaubensvorstellungen der Mächtigen (es hat ja nicht immer allein der Papst bestimmt, siehe diverse Konzile) ist. Der Katholizismus erhält damit eine gewisse Beliebigkeit, und bedingt durch die innere Struktur wird der Glauben von wenigen einer Menge von vielen faktisch aufgezwungen (auch wenn es manche Bewegungen gibt, die weniger dogmatisch denken und handeln).
Aber was ist, wenn der Papst nicht daran glaubt? Dann ist es umso schlimmer, als dass die Beliebigkeit noch eine Stufe weiter getrieben wird. Aus vollkommener Willkür heraus werden Glaubensinhalte "einfach so" verändert, einen Zusammenhang mit irgendeiner Art von Glauben besteht da nicht mehr.
Aber egal, was die wirkliche Antwort ist, so ist das ganze sowieso symptomatisch für die absolute Beliebigkeit des katholischen Glaubens. Und der absolute Brüller ist sowieso der Grund, warum der Papst das abgeschafft hat:
Laut der britischen Tageszeitung "Times" soll Papst Benedikt noch vor seiner Wahl zum Kirchenoberhaupt gesagt haben: "Ich persönlich würde es aufgeben, da es immer nur eine Hypothese war."
Heute hatte ich meinen ersten Arbeitstag bei Borland, und ich muss sagen, es ist äußerst erfrischend, nach längerer Zeit wieder an etwas völlig anderem als bisher in einer komplett anderen Umgebung als bisher zu arbeiten. Heute stand nur administrativer Kleinkram und eine Einführung in das Produkt, an dessen Entwicklung ich mitarbeiten werde, sowie erste Programmierexperimente mit den Libraries am Programm. Alles in allem aber bin ich höchst motiviert, und freue mich schon auf die nächsten paar Tage.