Configure Thunderbird 3’s indexing behaviour

December 24, 2009 – 00:01

The current version of Thunderbird comes with a terrific global search functionality, but sometimes its cumbersome to watch it reindex the email history if something corrupted the database or to get emails in the search results which you’re absolutely not interested in (commit messages, f.e.).

Unfortunately Thunderbird 3 has only a global option to enable / disable the search database and the indexer, but a smart guy has filled this gap with his extension GlodaQuilla. After you’ve installed it you can configure so-called “inherited properties” for every account

… and every folder, easily overridable simply by toggling the “inherit” option:

I’d prefer that the Thunderbird guys would build this right into the product itself, but until that has been done this add-on is a life saver!

They’re not enough yet (Update)

December 18, 2009 – 17:51

I’m watching the climate conference in Copenhagen with great anger, mostly because I’m just feeling confirmed that the manhood is simply stupid. Not individuals on their own, but if they’re organized and have to go into the one, the only right direction, they’re completly dumb. I mean, how many homeless, how many dead people do we have to count before everyone, and I really mean everyone, acts in concert?

Sadly, this won’t happen in one, five or even ten years. Maybe within the mid of this century, when there have been enough Tsunamis, Hurricanes and Typhoons killing people, and enough floods, ground erosion and slash-and-burn have taken place and have wiped out enough farmland to let the remaining poor people die on hunger, then maybe some leaders will open their eyes and come to the conclusion “We’ve fucked up in Copenhagen ‘09″.

Update: I’ve stumbled across a noteworthy article of The Guardian from Mark Lynas about the conference and the blocking position of China:

[...] China’s growth, and growing global political and economic dominance, is based largely on cheap coal. China knows it is becoming an uncontested superpower [...] Its coal-based economy doubles every decade, and its power increases commensurately. Its leadership will not alter this magic formula unless they absolutely have to. [...]

History tells us that a single human life – or even hundreds or thousands of them – doesn’t count much in China. I expect this won’t change in the future.

Tip: Ctrl-R with zsh in GNU screen

December 18, 2009 – 13:34

If you can’t search the history with zsh in GNU screen, check if Ctrl-R is issued at all through your terminal, ie. by

$ cat
^R

If this works, append the following keybinding to your ~/.zshrc:

bindkey '^R' history-incremental-search-backward

(Source)

openSUSE build service client ported

December 12, 2009 – 02:15

I used to create packages for a couple of open source projects for the openSUSE Linux distribution. They have this really nice build service running on build.opensuse.org, on which you can – despite of its name – also build packages for other Linux distributions like Fedora, Gentoo or Debian.

While the web-based interface of the service is nice, some configurations and local builds require their command line client osc though, which is python-based and works similar to subversion. This client however was only packaged for the main distros the build service itself supports, but was unavailable for others like f.e. Mac OS X, so I created a MacPort for it today (installable via sudo port install osc).

Of course local Linux builds are not possible with it, as we’re missing the complete environment, but I think its still useful for maintaining and managing remote builds on the service itself. Have fun with it!

monotone-viz

December 10, 2009 – 09:20

I’ve recently packaged monotone-viz 1.0.2 for MacPorts (and soon also for openSUSE), a program to display monotone’s DAG of revisions and their properties. This becomes very handy if you need to do a complex (asynchronous) merge or you want to know what exactly monotone has merged together for you. One example is the graph of the “merge fest” we’ve had in spring 2008 for the last summit you see on the right.

complex merge in monotone
(Source: monotone website)

Merging in monotone is actually quite robust; while I’ve had a lot of “fuzzy” feelings in the past when doing complex merges with subversion or even CVS, merging in monotone is a no-brainer. It most of the time does exactly what you want it to do. One exception here is the handling of deleted files however, also known as “die-die-die” merge fallout: If you merge together two distinct development lines where one file has been edited on the left side and deleted on the right side, the deletion always wins over the edit, and there is absolutely nothing you can do against it (well, despite re-adding the file after merge and loosing the file’s previous history). Thankfully this is not such a common use case and keeping an “Attic” directory where deleted, but possibly revivable files reside is the medium-term solution, until someone picks up the topic again.

But back to monotone-viz, I couldn’t fix one problem with monotone-viz on MacPorts: It doesn’t properly draw the arrows on the graph, but rather puts them above the revisions, like this:

monotone-viz-drawing-bug

I’ve already asked the author about it, but he couldn’t find out whats wrong, so I suspect something is wrong with my gtk+ setup. If you have a hint for me where to look at, give me a pointer, I’d be very thankful. And if you tell me that it works correctly for you, then even better, drop me a note as well. I’ve uploaded a test monotone database with a simple merge to test the behaviour. Thanks!

DHL outsmarts all

November 17, 2009 – 01:30

I sold a couple of things on eBay recently and went ahead to print labels for the packages on DHL.de. The user interface is clean and understandable until there, though they validate (or rather invalidate) my bank code for a GiroPay payment a bit late and even with a misguiding error message (no, I have not entered a wrong bank code, its just that my bank isn’t set up for GiroPay). But this alone is not the reason for this post, the reason is what awaited me after I was billed…

My expectations were simple: I thought I would be redirected to some page which would generate my parcel label on the fly, provide it as easy PDF download and thats it. It was that easy actually with DHL’s German competitor Hermes, but no, DHL had to outsmart the whole process.

On the final page in DHL’s booking process you have three options:

1) Open the label in a Java applet for viewing and printing 2) Saving the label via the Java applet 3) Saving the label as PDF

The “default” way – using the Java applet – did not work out at all for me on the Mac, neither in Safari nor Firefox. The applet simply did not load at all and “saving” the applet apparently meant for the DHL guys to save the HTML in which the applet code is embedded… cool. It doesn’t make a difference if the applet is embedded in an offline or online webpage, if the applet itself does not work!

Anyways, the PDF link seemed to be more familiar anyways, so I headed there and opened the downloaded file in OSX’ Preview.app. This was the result:

DHL pdf gone wild

The text in the red box on the left says that Javascript is disabled in Adobe Reader. Are you serious guys? Do I really have to install this bloatware Adobe Reader just to print out a simple label?

I had no other choice apparently. If the money was not already theirs, I’d have stopped by now, but I was part of their process.  Adobe Reader 9.20 was only a 32 MB download away (thanks god we all have broadband connections here – or do you think DHL would have paid for the roughly 90 minutes on a 56k dial-up connection?) and only 230 MB after installation, so I went ahead to the big moment – would I finally be able to view and print my beloved label?!

dhl2

Almost – now I reconized why Javascript was needed here after all: The document was “dynamic” in the way that it seemed to fetch the actual label data from a webservice located at https://www.dhl.de/popweb/services/LabelService?wsdl. (You really thought you could hang up your dialup connection after the Adobe Reader download?) All the label’s contents are overprinted with “MUSTER” (German for “SAMPLE”), even after the data were fetched. Printing only seemed to be possible once via a special yellow “Postage print now” button which appeared right in the document once the data had been loaded. The print now button seemed to remove the “MUSTER” overprints from the final print, but I actually cannot tell you that for sure, because I made the mistake to print to a PDF printer in the printer dialog – and Adobe’s distiller told me then:

This PostScript file was created from an encrypted PDF file. Redistilling encrypted PDF is not permitted.

Opening my original PDF for the second time left me with my loss of roughly 6 Euro alone:

There went my money

“This parcel label has already been printed”. Yeah, they got me. I’ve played around and I lost. I’ve tried to outsmart the process, but they outsmarted me. My last chance to see at least some of my money is to contact their service support – which I did by now – but whatever comes out of that, they also lost me as customer for sure.

I mean, seriously, this vendor lock-in is hilarious. Its quite simple to create a unique pattern or scanner code for a single package which cannot be re-used and tampered – what came over them to invent something that brain-dead instead? Either they’re over paranoid or their IT guys never have dealt with crypto or they have some other huge pain in the ass which forces them and their customers to this process.

Deutschland braucht mehr Altenheime!

November 10, 2009 – 20:38

An der Ecke Täubchenweg / Breite Straße stand seit Jahren ein baufälliges altes Gründerzeithaus. Es wurde bezeiten mit grünen Spannfliess abgesichert und großflächig mit einem neuen Medizinzentrum (“Medineum”) beworben. Nachdem es dort aber nie wirklich voranging und zwischenzeitlich das Plakat selbst schon abgenommen wurde (die Bauherren glaubten wohl selbst nicht mehr daran), war ich dennoch erfreut zu sehen, als sich im letzten Sommer endlich etwas regte und das Haus abgerissen wurde. Soweit so gut, “eine Brachfläche mehr” dachte ich, aber weit gefehlt. Vor einigen Tagen war dann Grundsteinlegung für ein neues Bauprojekt. In diesen Zeiten werden nun jedoch nicht mehr an jeder Ecke neue Supermärkte hochgezogen, wie es noch Mitte / Ende der Neunziger Jahre der Fall war, nein, es gibt in einer immer älter werdenden Bevölkerung einen viel einträglicheren Milliardenmarkt, das Älterwerden und die damit verbundenen Dienstleistungen!

Ich würde wohl über den Bau eines neuen “Seniorenzentrum” nicht schreiben, wenn nicht schon direkt gegenüber 2008 ein “Seniorenstift” entstanden wäre. Zwei Altenheime direkt gegenüber? Direkt mit Tram-Anbindung? Ja, fantastisch! Nun fehlt eigentlich nur noch der ein oder andere Bestatter in direkter Nähe. Es gibt zwar schon einen 200m weiter in der Breiten Straße, aber hey, einer mehr kann da gar nicht zuviel sein, oder? Schließlich werden gerade die Kapazitäten ausgebaut und außerdem koexistieren gefühlte 20 Nagelstudios und zehn Friseurgeschäfte hier in der Umgebung auch nahezu Laden an Laden.

Nicht, das man das jetzt falsch versteht, ich habe nichts gegen alte Leute. Das wäre ungefähr genauso dumm wie etwas gegen Kinder zu haben. Wir waren alle mal Kinder und wir werden alle mal alt. Was mich aber einfach erschreckt ist die volle Breitseite der Kommerzialisierung und wie sie auf so ein Stadtviertel wie das meinige trifft. Sicher schaffen diese “Zentren” Jobs in der Pflege alter Menschen, doch wer kann sich so etwas überhaupt noch leisten? Und wollen die Menschen wirklich abgeschottet von der Außenwelt in diesen Bettenburgen “verwaltet” werden? Warum entsteht nicht ein Wohnpark, wo junge und alte Menschen gemeinsam leben und sich gegenseitig helfen, wo sich auch alte Menschen mit ihrem reichen Erfahrungsschatz und ihren Ideen aktiv in den Kiez einbringen können?

Und dann ärgert mich auch das einseitige Denken der Stadtplaner in Leipzig. Soll jetzt einfach jedes baufällige Gebäude in der Umgebung in einen neuen “Seniorenstift” umgewandelt werden? Gibt es keine anderen Ideen mehr, was man sonst mit brachliegenden Flächen anstellen könnte? Ist das wirklich das Signal, was man einem Wohngebiet geben möchte, “hier werden die Alten verwaltet”…?

Quick Tip: NetworkManager and /etc/resolv.conf

November 6, 2009 – 10:31

If you have trouble with NetworkManager overwriting your search and domain configuration after every startup and you’re using DHCP, add the following line to your /etc/dhclient.conf:

append domain-name " company.local other.company.local";

So whenever your DHCP server doesn’t provide these information (the one in my company does not), it’ll add this

domain company.local
search company.local other.company.local

to your /etc/resolv.conf.

Geht auf die Straße!

October 20, 2009 – 14:00

Das folgende Video stammt aus der WDR-Sendung “Mitternachtsspitzen” und ist schon einige Tage alt. Wilfried Schmickler, der hier zur absoluten Höchstform aufläuft, poltert gegen weltfremde Politiker in unseren tollen neuen neoliberalen “Kuschelkoalition”:

Solange allerdings die volle-Tasche-leere-Tasche-Politik so wie bisher weitergeführt wird (ein Euro mehr in der linken, dafür einsfuffzich weniger in der rechten), glaube ich nicht, dass der fromme Wunsch der Kabarettisten auf mehr Bürgerbeteiligung aufgeht.

monotone / guitone update

October 19, 2009 – 14:26

Thanks to Timothy (and probably also thanks to the bad weather) we’ve seen some development activity for monotone recently. It started out with the “key-by-hash” changes: keys are no longer identified by its name, but their unique ID which finally solves the “I have lost my monotone private key – help!” issues from the past. This already went into monotone 0.45 which was released about a month ago.

Now the upcoming monotone release includes another long-awaited feature which is in the trunk as of yesterday: being able to query database contents from remote monotone servers. This is particularily useful if you want to check what branches are available server-side before you fetch them all. I’ve teamed up with Timothy and made a “single-shot” version of his new automate remote_stdio command which can be used as follows:

 # this picks your default netsync server stored in the database
 $ mtn au remote branches
 # ... alternatively, give it an optional hostname
 $ mtn au remote --remote-stdio-host myserver.org branches
Since both automate remote_stdio and automate remote can execute any available remote automate command through this, a little lua guard was implemented which allows the server administrator to pick certain commands which he wants to make available. By default, no command can be executed:
function get_remote_automate_permitted(key_identity, command, options)
where key_identity identifies the calling user, command points to a table which contains the command’s name and arguments, and options points to another table which contains the options for the given command.

Now what has all this to do with guitone?

Especially the changes in 0.45 forced me already to pick my old pet project up again, because key-related commands changed their output in an incompatible manner and therefor my code needed to adapt to that as well. I’m also planning to finalize other features in the upcoming weeks, amongst that netsync support (whose automate versions incidentally have to be implemented in monotone at first as well), an improved changeset browser and probably other minor things and bugs which have been on hold since February.

Netsync dialog

The next guitone version won’t be out before monotone 0.46 hits the streets though, simply because I have to wait (and implement) a couple of things in monotone first and because I want to publish a release which does not explode the first time you’ll look at it. But hey, since I’m the release manager for monotone as well, its in my hands when it will be out :) Its also likely that I’ll introduce a beta release cycle for the next guitone release and make a couple of binaries so people get their hands on it easier and earlier.

So, stay tuned for more updates on both projects!